From 96f628a46403b8e45319b43f42d25e1b9f6125c3 Mon Sep 17 00:00:00 2001 From: Xavier Deneux Date: Wed, 21 Oct 2015 16:59:00 +0200 Subject: [PATCH] feat(chore) install fosrestbundle part1 --- .gitignore | 1 + app/AppKernel.php | 2 +- app/bootstrap.php.cache | 0 ...3bf44d0b840c15f6243d#indexAction.cache.php | 1 - ...b5cbb9e76ce83bf44d0b840c15f6243d.cache.php | 1 - ...c8465d89d25a6dd1509b#indexAction.cache.php | 1 - ...5023e2f38910c8465d89d25a6dd1509b.cache.php | 1 - ...86ead82dcc8f6f491d628#showAction.cache.php | 1 - ...1359850fa8786ead82dcc8f6f491d628.cache.php | 1 - ...50e6e809be52d5c2c0d77f6#addFlash.cache.php | 1 - ...77f6#createAccessDeniedException.cache.php | 1 - ...e6e809be52d5c2c0d77f6#createForm.cache.php | 1 - ...e52d5c2c0d77f6#createFormBuilder.cache.php | 1 - ...2c0d77f6#createNotFoundException.cache.php | 1 - ...2c0d77f6#denyAccessUnlessGranted.cache.php | 1 - ...850e6e809be52d5c2c0d77f6#forward.cache.php | 1 - ...6e809be52d5c2c0d77f6#generateUrl.cache.php | 1 - ...f350850e6e809be52d5c2c0d77f6#get.cache.php | 1 - ...6e809be52d5c2c0d77f6#getDoctrine.cache.php | 1 - ...e809be52d5c2c0d77f6#getParameter.cache.php | 1 - ...e6e809be52d5c2c0d77f6#getRequest.cache.php | 1 - ...850e6e809be52d5c2c0d77f6#getUser.cache.php | 1 - ...f350850e6e809be52d5c2c0d77f6#has.cache.php | 1 - ...be52d5c2c0d77f6#isCsrfTokenValid.cache.php | 1 - ...0e6e809be52d5c2c0d77f6#isGranted.cache.php | 1 - ...50e6e809be52d5c2c0d77f6#redirect.cache.php | 1 - ...9be52d5c2c0d77f6#redirectToRoute.cache.php | 1 - ...0850e6e809be52d5c2c0d77f6#render.cache.php | 1 - ...e6e809be52d5c2c0d77f6#renderView.cache.php | 1 - ...0850e6e809be52d5c2c0d77f6#stream.cache.php | 1 - ...9b52d28fc1d6404463b#setContainer.cache.php | 1 - ...dd177f4b93a6b0ac40#toolbarAction.cache.php | 1 - ...6c54069051111edd177f4b93a6b0ac40.cache.php | 1 - app/cache/dev/appDevDebugProjectContainer.php | 9 +- .../dev/appDevDebugProjectContainer.php.meta | 2 +- app/cache/dev/appDevDebugProjectContainer.xml | 9 +- app/cache/dev/appDevUrlGenerator.php | 55 - app/cache/dev/appDevUrlGenerator.php.meta | Bin 4036 -> 0 bytes app/cache/dev/appDevUrlMatcher.php | 146 - app/cache/dev/appDevUrlMatcher.php.meta | Bin 3895 -> 0 bytes .../4/43a80f0e087752a2d4724591f85aa0e1.php | 5 - .../a/ae1b290dcfca1cdecd87a85bbe4b1164.php | 5 - app/cache/dev/classes.php | 7751 ----------------- app/cache/dev/classes.php.meta | 1 - app/cache/dev/profiler/10/6a/7f6a10 | 1 - app/cache/dev/profiler/34/1b/8c1b34 | 1 - app/cache/dev/profiler/65/2a/002a65 | Bin 121363 -> 0 bytes app/cache/dev/profiler/81/5a/8f5a81 | 1 - app/cache/dev/profiler/83/1c/101c83 | 1 - app/cache/dev/profiler/98/fe/0ffe98 | Bin 96201 -> 0 bytes app/cache/dev/profiler/index.csv | 6 - ...4e46266342ea36dfb8c2fd0a36bf7cee1afa6b.php | 78 - ...72353c6e6f9ff6ae7f0998b1d1105ec361b998.php | 185 - ...76770ff3336b8b0e47c7d17cfbf1ae7e35ec73.php | 102 - ...ddf5b35d42eb9dd5b64cc6e8d5faac81bf4393.php | 107 - ...4f9011c771747635b8cb6ad665e32a8edaa0aa.php | 229 - ...18fc3089a7f32e9bc4d742faf61a5cac651887.php | 380 - ...ad68216ce6d7a4a594b059d13cbae083971b13.php | 119 - ...77ae4d4f20a237bbc550e28adb66a77713b5ac.php | 47 - ...08d7c56f9f3442b5824def87b082472c60edd7.php | 152 - ...b31bb10abb4f16b7f26a49dfed975007649711.php | 616 -- ...271adc5d0c95a950ac49e1e33c0f0eee020180.php | 361 - ...e983f3e08b4191872fce5f2d0f6ec66f88e9ec.php | 1288 --- ...aa796c2b04c1326641bcfc82417a5741bbcdb2.php | 408 - ...2183749a162047ab3a0d56697fb222ea83870f.php | 315 - ...bfc30fb4c22110ec7d77f25a5682a36add9591.php | 131 - ...55bfa11e5ec83cf641077c9ed5fe0797344ac8.php | 149 - ...aff513479cd31683db3fc6e233f772ab32cdd7.php | 1376 --- ...bc5dd53ce58f4f6a8430598881f01bda3a486a.php | 416 - ...f3fca86a9535eed5d9051cc44f8be5e54b4e35.php | 342 - ...61f2b03fa5a741a390349ef3397d5bed8e9b4e.php | 683 -- ...5f7d092627b49f4505a682c0fec9981bfc6852.php | 1911 ---- ...4888bec4fff8975b86063bf157d942c7b85d2f.php | 742 -- ...4e3951988c97a326fd67ea5936dafea7da9be3.php | 406 - ...35a5761c5cd321d770aa614f3026b3c2781258.php | 109 - ...2d6b723c6afae6ebf21c1ede9fe3b7e67ad65e.php | 113 - ...698483455e153fbcb48200a5389ea9c7f74d6d.php | 941 -- ...05b5233a4e219e8c39d5950f3ac24c8dc5f05f.php | 76 - ...16bb4e7ec2cc19a7f6938427b31339efc622f9.php | 216 - ...cb25a808be849dc4b6a559cd549f9db7234422.php | 186 - ...f24abd3836e388535cb9a730a8155ed8a11f02.php | 173 - ...0cc6dbc17b66c009f495272011b36cff3ef39b.php | 73 - ...e969d1b13308b83275fe832850688262b9495b.php | 63 - ...6b3ffc665625bcc10f984ba6cf69f719b83bfa.php | 137 - ...ed4d13dd3945a6b300a1c709bcff0743a9d260.php | 678 -- app/config/routing.yml | 6 +- app/logs/dev.log | 226 + composer.json | 3 +- composer.lock | 178 +- src/AppBundle/AppBundle.php | 9 - .../Controller/DefaultController.php | 21 - .../Controller/DefaultControllerTest.php | 18 - vendor/composer/autoload_namespaces.php | 2 + vendor/composer/autoload_psr4.php | 1 + vendor/composer/installed.json | 180 + .../rest-bundle/FOS/RestBundle/.gitignore | 5 + .../rest-bundle/FOS/RestBundle/.php_cs | 21 + .../rest-bundle/FOS/RestBundle/.styleci.yml | 1 + .../rest-bundle/FOS/RestBundle/.travis.yml | 51 + .../Controller/Annotations/Delete.php | 26 + .../RestBundle/Controller/Annotations/Get.php | 26 + .../Controller/Annotations/Head.php | 26 + .../Controller/Annotations/Link.php | 26 + .../Controller/Annotations/NamePrefix.php | 24 + .../Controller/Annotations/NoRoute.php | 22 + .../Controller/Annotations/Options.php | 26 + .../Controller/Annotations/Param.php | 50 + .../Controller/Annotations/Patch.php | 26 + .../Controller/Annotations/Post.php | 26 + .../Controller/Annotations/Prefix.php | 24 + .../RestBundle/Controller/Annotations/Put.php | 26 + .../Controller/Annotations/QueryParam.php | 24 + .../Controller/Annotations/RequestParam.php | 27 + .../Controller/Annotations/Route.php | 39 + .../Controller/Annotations/RouteResource.php | 24 + .../Controller/Annotations/Unlink.php | 26 + .../Controller/Annotations/View.php | 144 + .../Controller/ExceptionController.php | 299 + .../Controller/FOSRestController.php | 89 + .../Decoder/ContainerDecoderProvider.php | 56 + .../RestBundle/Decoder/DecoderInterface.php | 29 + .../Decoder/DecoderProviderInterface.php | 38 + .../FOS/RestBundle/Decoder/JsonDecoder.php | 28 + .../RestBundle/Decoder/JsonToFormDecoder.php | 57 + .../FOS/RestBundle/Decoder/XmlDecoder.php | 44 + .../Compiler/ConfigurationCheckPass.php | 34 + .../Compiler/CsrfExtensionPass.php | 34 + .../Compiler/ExceptionWrapperHandlerPass.php | 36 + .../Compiler/FormatListenerRulesPass.php | 95 + .../Compiler/SerializerConfigurationPass.php | 47 + .../Compiler/TwigExceptionPass.php | 28 + .../DependencyInjection/Configuration.php | 333 + .../DependencyInjection/FOSRestExtension.php | 383 + .../EventListener/AccessDeniedListener.php | 92 + .../EventListener/AllowedMethodsListener.php | 49 + .../RestBundle/EventListener/BodyListener.php | 184 + .../EventListener/FormatListener.php | 78 + .../EventListener/MimeTypeListener.php | 57 + .../EventListener/ParamFetcherListener.php | 116 + .../EventListener/VersionListener.php | 64 + .../EventListener/ViewResponseListener.php | 140 + .../FOS/RestBundle/FOSRestBundle.php | 41 + .../Form/Extension/DisableCSRFExtension.php | 85 + .../EntityToIdObjectTransformer.php | 93 + .../Normalizer/ArrayNormalizerInterface.php | 31 + .../Normalizer/CamelKeysNormalizer.php | 82 + .../Exception/NormalizationException.php | 21 + .../rest-bundle/FOS/RestBundle/README.md | 38 + .../AbstractRequestBodyParamConverter.php | 195 + .../FOS/RestBundle/Request/ParamFetcher.php | 326 + .../Request/ParamFetcherInterface.php | 47 + .../FOS/RestBundle/Request/ParamReader.php | 91 + .../Request/ParamReaderInterface.php | 49 + .../Request/RequestBodyParamConverter.php | 37 + .../Request/RequestBodyParamConverter20.php | 40 + .../config/access_denied_listener.xml | 27 + .../config/allowed_methods_listener.xml | 29 + .../Resources/config/body_listener.xml | 45 + .../Resources/config/exception_listener.xml | 28 + .../Resources/config/format_listener.xml | 28 + .../FOS/RestBundle/Resources/config/forms.xml | 21 + .../Resources/config/mime_type_listener.xml | 22 + .../config/param_fetcher_listener.xml | 23 + .../RestBundle/Resources/config/request.xml | 29 + .../config/request_body_param_converter.xml | 19 + .../RestBundle/Resources/config/routing.xml | 64 + .../Resources/config/schema/routing-1.0.xsd | 65 + .../schema/routing/rest_routing-1.0.xsd | 50 + .../FOS/RestBundle/Resources/config/util.xml | 21 + .../FOS/RestBundle/Resources/config/view.xml | 56 + .../config/view_response_listener.xml | 21 + .../Resources/doc/1-setting_up_the_bundle.rst | 55 + .../Resources/doc/2-the-view-layer.rst | 484 + .../Resources/doc/3-listener-support.rst | 201 + .../doc/4-exception-controller-support.rst | 88 + ...e-generation_single-restful-controller.rst | 370 + ...eneration_multiple-restful-controllers.rst | 167 + .../doc/7-manual-route-definition.rst | 111 + .../Resources/doc/annotations-reference.rst | 111 + .../Resources/doc/body_listener.rst | 90 + .../Resources/doc/configuration-reference.rst | 122 + .../Resources/doc/examples/RssHandler.php | 121 + .../doc/examples/chaplin_backbone.md | 9 + .../Resources/doc/format_listener.rst | 212 + .../FOS/RestBundle/Resources/doc/index.rst | 73 + .../Resources/doc/param_fetcher_listener.rst | 142 + .../doc/request_body_converter_listener.rst | 95 + .../Resources/doc/view_response_listener.rst | 179 + .../FOS/RestBundle/Resources/meta/LICENSE | 19 + .../AllowedMethodsLoaderInterface.php | 32 + .../AllowedMethodsRouterLoader.php | 108 + .../Routing/ClassResourceInterface.php | 22 + .../Loader/Reader/RestActionReader.php | 564 ++ .../Loader/Reader/RestControllerReader.php | 120 + .../Routing/Loader/RestRouteLoader.php | 192 + .../Routing/Loader/RestRouteProcessor.php | 60 + .../Loader/RestXmlCollectionLoader.php | 281 + .../Loader/RestYamlCollectionLoader.php | 176 + .../Routing/RestRouteCollection.php | 90 + .../Serializer/ExceptionWrapperNormalizer.php | 93 + .../ExceptionWrapperSerializeHandler.php | 108 + .../Controller/Annotations/QueryParamTest.php | 48 + .../Annotations/RequestParamTest.php | 34 + .../Tests/Decoder/JsonToFormDecoderTest.php | 49 + .../Compiler/ConfigurationCheckPassTest.php | 67 + .../Compiler/FormatListenerRulesPassTest.php | 112 + .../SerializerConfigurationPassTest.php | 105 + .../FOSRestExtensionTest.php | 687 ++ .../AccessDeniedListenerTest.php | 192 + .../Tests/EventListener/BodyListenerTest.php | 263 + .../EventListener/FormatListenerTest.php | 183 + .../EventListener/MimeTypeListenerTest.php | 57 + .../ParamFetcherListenerTest.php | 185 + .../ViewResponseListenerTest.php | 373 + .../RestBundle/Tests/FOSRestBundleTest.php | 35 + .../AnnotatedConditionalUsersController.php | 195 + .../AnnotatedPrefixedController.php | 28 + .../Controller/AnnotatedUsersController.php | 205 + .../Fixtures/Controller/ArticleController.php | 173 + .../Controller/InformationController.php | 24 + .../Fixtures/Controller/MediaController.php | 30 + .../Fixtures/Controller/OrdersController.php | 51 + .../Controller/ParamFetcherController.php | 59 + .../Fixtures/Controller/ReportController.php | 51 + .../UserTopicCommentsController.php | 55 + .../Controller/UserTopicsController.php | 61 + .../Fixtures/Controller/UsersController.php | 184 + .../annotated_conditional_controller.yml | 91 + .../Etalon/annotated_users_controller.yml | 99 + ...base_named_prefixed_reports_collection.yml | 29 + .../named_prefixed_reports_collection.yml | 29 + .../Etalon/prefixed_users_collection.yml | 114 + .../Fixtures/Etalon/resource_controller.yml | 99 + .../Fixtures/Etalon/users_collection.yml | 114 + .../Fixtures/Etalon/users_controller.yml | 104 + ...base_named_prefixed_reports_collection.yml | 5 + .../named_prefixed_reports_collection.yml | 4 + .../Routes/prefixed_users_collection.xml | 27 + .../Routes/prefixed_users_collection.yml | 16 + .../Tests/Fixtures/Routes/routes.xml | 10 + .../Tests/Fixtures/Routes/routes.yml | 4 + ...with_options_requirements_and_defaults.xml | 13 + ...with_options_requirements_and_defaults.yml | 9 + .../Fixtures/Routes/users_collection.xml | 24 + .../Fixtures/Routes/users_collection.yml | 13 + .../RequestBodyParamConverterController.php | 49 + .../Controller/SerializerErrorController.php | 48 + .../TestBundle/Resources/config/routing.yml | 11 + .../Bundle/TestBundle/TestBundle.php | 18 + .../RequestBodyParamConverterTest.php | 31 + .../Tests/Functional/SerializerErrorTest.php | 141 + .../Tests/Functional/WebTestCase.php | 52 + .../Tests/Functional/app/AppKernel.php | 115 + .../Functional/app/JMSSerializer/bundles.php | 17 + .../Functional/app/JMSSerializer/config.yml | 8 + .../app/RequestBodyParamConverter/bundles.php | 17 + .../app/RequestBodyParamConverter/config.yml | 20 + .../Functional/app/Serializer/bundles.php | 16 + .../Functional/app/Serializer/config.yml | 12 + .../Tests/Functional/app/config/default.yml | 2 + .../Tests/Functional/app/config/framework.yml | 11 + .../Tests/Functional/app/config/routing.yml | 2 + .../Normalizer/CamelKeysNormalizerTest.php | 55 + .../AbstractRequestBodyParamConverterTest.php | 93 + .../Tests/Request/ParamFetcherTest.php | 757 ++ .../Tests/Request/ParamReaderTest.php | 102 + .../RequestBodyParamConverter20Test.php | 312 + .../Request/RequestBodyParamConverterTest.php | 328 + .../Tests/Routing/Loader/LoaderTest.php | 83 + .../Routing/Loader/RestRouteLoaderTest.php | 321 + .../Loader/RestXmlCollectionLoaderTest.php | 158 + .../Loader/RestYamlCollectionLoaderTest.php | 250 + .../Tests/Util/ViolationFormatterTest.php | 68 + .../Tests/View/JsonpHandlerTest.php | 123 + .../RestBundle/Tests/View/ViewHandlerTest.php | 669 ++ .../FOS/RestBundle/Tests/View/ViewTest.php | 153 + .../FOS/RestBundle/Tests/bootstrap.php | 28 + .../rest-bundle/FOS/RestBundle/UPGRADING.md | 147 + .../rest-bundle/FOS/RestBundle/Util/Codes.php | 88 + .../FOS/RestBundle/Util/ExceptionWrapper.php | 61 + .../FOS/RestBundle/Util/FormatNegotiator.php | 144 + .../Util/FormatNegotiatorInterface.php | 26 + .../Util/Inflector/DoctrineInflector.php | 30 + .../Util/Inflector/InflectorInterface.php | 29 + .../Util/MediaTypeNegotiatorInterface.php | 26 + .../Util/StopFormatListenerException.php | 19 + .../RestBundle/Util/ViolationFormatter.php | 50 + .../Util/ViolationFormatterInterface.php | 39 + .../View/ConfigurableViewHandlerInterface.php | 41 + .../View/ExceptionWrapperHandler.php | 28 + .../View/ExceptionWrapperHandlerInterface.php | 27 + .../FOS/RestBundle/View/JsonpHandler.php | 66 + .../FOS/RestBundle/View/RedirectView.php | 39 + .../FOS/RestBundle/View/RouteRedirectView.php | 40 + .../rest-bundle/FOS/RestBundle/View/View.php | 462 + .../FOS/RestBundle/View/ViewHandler.php | 517 ++ .../RestBundle/View/ViewHandlerInterface.php | 107 + .../rest-bundle/FOS/RestBundle/composer.json | 72 + .../FOS/RestBundle/phpunit.xml.dist | 21 + .../jsonp-callback-validator/.gitignore | 3 + .../jsonp-callback-validator/.travis.yml | 17 + .../jsonp-callback-validator/CONTRIBUTING.md | 30 + .../jsonp-callback-validator/LICENSE | 20 + .../jsonp-callback-validator/README.md | 87 + .../jsonp-callback-validator/composer.json | 21 + .../jsonp-callback-validator/phpunit.xml.dist | 23 + .../src/JsonpCallbackValidator.php | 79 + .../tests/JsonpCallbackValidatorTest.php | 77 + .../tests/bootstrap.php | 13 + vendor/willdurand/negotiation/.gitignore | 1 + vendor/willdurand/negotiation/.travis.yml | 19 + vendor/willdurand/negotiation/CONTRIBUTING.md | 33 + vendor/willdurand/negotiation/LICENSE | 19 + vendor/willdurand/negotiation/README.md | 157 + vendor/willdurand/negotiation/composer.json | 24 + .../willdurand/negotiation/phpunit.xml.dist | 23 + .../src/Negotiation/AcceptHeader.php | 100 + .../src/Negotiation/FormatNegotiator.php | 192 + .../Negotiation/FormatNegotiatorInterface.php | 51 + .../src/Negotiation/LanguageNegotiator.php | 91 + .../src/Negotiation/Negotiator.php | 180 + .../src/Negotiation/NegotiatorInterface.php | 17 + .../Negotiation/Tests/AcceptHeaderTest.php | 102 + .../Tests/FormatNegotiatorTest.php | 431 + .../Tests/LanguageNegotiatorTest.php | 127 + .../Negotiation/Tests/NegotiatorTest.php | 334 + .../tests/Negotiation/Tests/TestCase.php | 10 + .../negotiation/tests/bootstrap.php | 15 + 328 files changed, 22673 insertions(+), 21379 deletions(-) create mode 100644 .gitignore mode change 100755 => 100644 app/bootstrap.php.cache delete mode 100644 app/cache/dev/annotations/0b868705b5cbb9e76ce83bf44d0b840c15f6243d#indexAction.cache.php delete mode 100644 app/cache/dev/annotations/0b868705b5cbb9e76ce83bf44d0b840c15f6243d.cache.php delete mode 100644 app/cache/dev/annotations/591accb85023e2f38910c8465d89d25a6dd1509b#indexAction.cache.php delete mode 100644 app/cache/dev/annotations/591accb85023e2f38910c8465d89d25a6dd1509b.cache.php delete mode 100644 app/cache/dev/annotations/597877fc1359850fa8786ead82dcc8f6f491d628#showAction.cache.php delete mode 100644 app/cache/dev/annotations/597877fc1359850fa8786ead82dcc8f6f491d628.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#addFlash.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#createAccessDeniedException.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#createForm.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#createFormBuilder.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#createNotFoundException.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#denyAccessUnlessGranted.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#forward.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#generateUrl.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#get.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#getDoctrine.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#getParameter.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#getRequest.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#getUser.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#has.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#isCsrfTokenValid.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#isGranted.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#redirect.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#redirectToRoute.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#render.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#renderView.cache.php delete mode 100644 app/cache/dev/annotations/657d22547c85f350850e6e809be52d5c2c0d77f6#stream.cache.php delete mode 100644 app/cache/dev/annotations/69b748bbdb21c9dbce0109b52d28fc1d6404463b#setContainer.cache.php delete mode 100644 app/cache/dev/annotations/aa3b17a06c54069051111edd177f4b93a6b0ac40#toolbarAction.cache.php delete mode 100644 app/cache/dev/annotations/aa3b17a06c54069051111edd177f4b93a6b0ac40.cache.php delete mode 100644 app/cache/dev/appDevUrlGenerator.php delete mode 100644 app/cache/dev/appDevUrlGenerator.php.meta delete mode 100644 app/cache/dev/appDevUrlMatcher.php delete mode 100644 app/cache/dev/appDevUrlMatcher.php.meta delete mode 100644 app/cache/dev/assetic/config/4/43a80f0e087752a2d4724591f85aa0e1.php delete mode 100644 app/cache/dev/assetic/config/a/ae1b290dcfca1cdecd87a85bbe4b1164.php delete mode 100644 app/cache/dev/classes.php delete mode 100644 app/cache/dev/classes.php.meta delete mode 100644 app/cache/dev/profiler/10/6a/7f6a10 delete mode 100644 app/cache/dev/profiler/34/1b/8c1b34 delete mode 100644 app/cache/dev/profiler/65/2a/002a65 delete mode 100644 app/cache/dev/profiler/81/5a/8f5a81 delete mode 100644 app/cache/dev/profiler/83/1c/101c83 delete mode 100644 app/cache/dev/profiler/98/fe/0ffe98 delete mode 100644 app/cache/dev/profiler/index.csv delete mode 100644 app/cache/dev/twig/0/1/010e37370258230cbc960471274e46266342ea36dfb8c2fd0a36bf7cee1afa6b.php delete mode 100644 app/cache/dev/twig/1/d/1d011420c63e456d27986c282e72353c6e6f9ff6ae7f0998b1d1105ec361b998.php delete mode 100644 app/cache/dev/twig/1/f/1fa930c0ae1612362c3770f41a76770ff3336b8b0e47c7d17cfbf1ae7e35ec73.php delete mode 100644 app/cache/dev/twig/2/7/272604e37581aa8ba43ea89bedddf5b35d42eb9dd5b64cc6e8d5faac81bf4393.php delete mode 100644 app/cache/dev/twig/2/8/28200a2d4b76278f8a74a5c9bc4f9011c771747635b8cb6ad665e32a8edaa0aa.php delete mode 100644 app/cache/dev/twig/3/d/3db5220259563554851051274618fc3089a7f32e9bc4d742faf61a5cac651887.php delete mode 100644 app/cache/dev/twig/4/2/426ebc6f62834cc3ea5131df04ad68216ce6d7a4a594b059d13cbae083971b13.php delete mode 100644 app/cache/dev/twig/5/0/50767134623071033c70967e6377ae4d4f20a237bbc550e28adb66a77713b5ac.php delete mode 100644 app/cache/dev/twig/5/8/58a872f7445014a49e25e9ba1b08d7c56f9f3442b5824def87b082472c60edd7.php delete mode 100644 app/cache/dev/twig/5/e/5e6b4280a70b84ab1ab6437169b31bb10abb4f16b7f26a49dfed975007649711.php delete mode 100644 app/cache/dev/twig/5/f/5f95e8fae1f2a25cabf3511f7e271adc5d0c95a950ac49e1e33c0f0eee020180.php delete mode 100644 app/cache/dev/twig/7/1/7128143a6fe3e4b8ade4bbf453e983f3e08b4191872fce5f2d0f6ec66f88e9ec.php delete mode 100644 app/cache/dev/twig/7/3/73d81808491b0b097d4033ed80aa796c2b04c1326641bcfc82417a5741bbcdb2.php delete mode 100644 app/cache/dev/twig/9/5/95b13fa511522fa4207320f85b2183749a162047ab3a0d56697fb222ea83870f.php delete mode 100644 app/cache/dev/twig/9/f/9fc56123c8775ccf30f41f988abfc30fb4c22110ec7d77f25a5682a36add9591.php delete mode 100644 app/cache/dev/twig/a/6/a601be6883968cd258cb720d2755bfa11e5ec83cf641077c9ed5fe0797344ac8.php delete mode 100644 app/cache/dev/twig/a/7/a77706592abf6d2d52a346b8a4aff513479cd31683db3fc6e233f772ab32cdd7.php delete mode 100644 app/cache/dev/twig/a/9/a93618f07c804e9ea3c5972fc3bc5dd53ce58f4f6a8430598881f01bda3a486a.php delete mode 100644 app/cache/dev/twig/a/b/abc972a17bfe1ce6756abfe0c0f3fca86a9535eed5d9051cc44f8be5e54b4e35.php delete mode 100644 app/cache/dev/twig/b/6/b62421e45ef303451c3b24dff861f2b03fa5a741a390349ef3397d5bed8e9b4e.php delete mode 100644 app/cache/dev/twig/b/b/bbc32f31c8b644e975875aeeaa5f7d092627b49f4505a682c0fec9981bfc6852.php delete mode 100644 app/cache/dev/twig/b/c/bc7ce39786045154e92c168e9d4888bec4fff8975b86063bf157d942c7b85d2f.php delete mode 100644 app/cache/dev/twig/c/6/c67bff0c9f5ee9f2fbf92f6a5a4e3951988c97a326fd67ea5936dafea7da9be3.php delete mode 100644 app/cache/dev/twig/c/6/c6f924049581cadfacef3d92ec35a5761c5cd321d770aa614f3026b3c2781258.php delete mode 100644 app/cache/dev/twig/c/c/ccc7f58c591958c3160ada5dee2d6b723c6afae6ebf21c1ede9fe3b7e67ad65e.php delete mode 100644 app/cache/dev/twig/c/f/cf80fef7336df8b1b2d3b72b26698483455e153fbcb48200a5389ea9c7f74d6d.php delete mode 100644 app/cache/dev/twig/d/3/d325df3dc47e8c48fc4862671205b5233a4e219e8c39d5950f3ac24c8dc5f05f.php delete mode 100644 app/cache/dev/twig/d/8/d8a5f99e38b836e16f4fcdf74e16bb4e7ec2cc19a7f6938427b31339efc622f9.php delete mode 100644 app/cache/dev/twig/d/a/da415a7180eedfe0c423445195cb25a808be849dc4b6a559cd549f9db7234422.php delete mode 100644 app/cache/dev/twig/e/0/e00523c6cdf305642d3d7c00a0f24abd3836e388535cb9a730a8155ed8a11f02.php delete mode 100644 app/cache/dev/twig/e/3/e3d45b5641d2b07a724f2fc7350cc6dbc17b66c009f495272011b36cff3ef39b.php delete mode 100644 app/cache/dev/twig/e/8/e8ea7a31e18813de5cc418f14fe969d1b13308b83275fe832850688262b9495b.php delete mode 100644 app/cache/dev/twig/f/6/f63b156946f217e4c22fe8bd466b3ffc665625bcc10f984ba6cf69f719b83bfa.php delete mode 100644 app/cache/dev/twig/f/8/f837674a51851669eee3935507ed4d13dd3945a6b300a1c709bcff0743a9d260.php delete mode 100755 src/AppBundle/AppBundle.php delete mode 100755 src/AppBundle/Controller/DefaultController.php delete mode 100755 src/AppBundle/Tests/Controller/DefaultControllerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.gitignore create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.php_cs create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.styleci.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.travis.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Delete.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Get.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Head.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Link.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NamePrefix.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NoRoute.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Options.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Param.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Patch.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Post.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Prefix.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Put.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/QueryParam.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RequestParam.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Route.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RouteResource.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Unlink.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/View.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/ExceptionController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/FOSRestController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/ContainerDecoderProvider.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderProviderInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonDecoder.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonToFormDecoder.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/XmlDecoder.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ConfigurationCheckPass.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/CsrfExtensionPass.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ExceptionWrapperHandlerPass.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/FormatListenerRulesPass.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/SerializerConfigurationPass.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/TwigExceptionPass.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Configuration.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/FOSRestExtension.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AccessDeniedListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AllowedMethodsListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/BodyListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/FormatListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/MimeTypeListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ParamFetcherListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/VersionListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ViewResponseListener.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/FOSRestBundle.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Extension/DisableCSRFExtension.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Transformer/EntityToIdObjectTransformer.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/ArrayNormalizerInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/CamelKeysNormalizer.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/Exception/NormalizationException.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/README.md create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/AbstractRequestBodyParamConverter.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcher.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcherInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReader.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReaderInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter20.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/access_denied_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/allowed_methods_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/body_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/exception_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/format_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/forms.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/mime_type_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/param_fetcher_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request_body_param_converter.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/routing.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing-1.0.xsd create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing/rest_routing-1.0.xsd create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/util.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view_response_listener.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/1-setting_up_the_bundle.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/2-the-view-layer.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/3-listener-support.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/4-exception-controller-support.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/5-automatic-route-generation_single-restful-controller.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/6-automatic-route-generation_multiple-restful-controllers.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/7-manual-route-definition.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/annotations-reference.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/body_listener.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/configuration-reference.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/RssHandler.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/chaplin_backbone.md create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/format_listener.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/index.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/param_fetcher_listener.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/request_body_converter_listener.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/view_response_listener.rst create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/meta/LICENSE create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsLoaderInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsRouterLoader.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/ClassResourceInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestActionReader.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestControllerReader.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteLoader.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteProcessor.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestXmlCollectionLoader.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestYamlCollectionLoader.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/RestRouteCollection.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperNormalizer.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperSerializeHandler.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/QueryParamTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/RequestParamTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Decoder/JsonToFormDecoderTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/ConfigurationCheckPassTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/FormatListenerRulesPassTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/SerializerConfigurationPassTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/FOSRestExtensionTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/AccessDeniedListenerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/BodyListenerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/FormatListenerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/MimeTypeListenerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ParamFetcherListenerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ViewResponseListenerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/FOSRestBundleTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedConditionalUsersController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedPrefixedController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedUsersController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ArticleController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/InformationController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/MediaController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/OrdersController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ParamFetcherController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ReportController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicCommentsController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicsController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UsersController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_conditional_controller.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_users_controller.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/base_named_prefixed_reports_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/named_prefixed_reports_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/prefixed_users_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/resource_controller.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_controller.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/base_named_prefixed_reports_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/named_prefixed_reports_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.xml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/RequestBodyParamConverterController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/SerializerErrorController.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/TestBundle.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/RequestBodyParamConverterTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/SerializerErrorTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/WebTestCase.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/AppKernel.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/bundles.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/config.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/bundles.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/config.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/bundles.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/config.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/default.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/framework.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/routing.yml create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Normalizer/CamelKeysNormalizerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/AbstractRequestBodyParamConverterTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamFetcherTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamReaderTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverter20Test.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverterTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/LoaderTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestRouteLoaderTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestXmlCollectionLoaderTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestYamlCollectionLoaderTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Util/ViolationFormatterTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/JsonpHandlerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewHandlerTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewTest.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/bootstrap.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/UPGRADING.md create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Codes.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ExceptionWrapper.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiator.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiatorInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/DoctrineInflector.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/InflectorInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/MediaTypeNegotiatorInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/StopFormatListenerException.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatter.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatterInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ConfigurableViewHandlerInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandler.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandlerInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/JsonpHandler.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RedirectView.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RouteRedirectView.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/View.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandler.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandlerInterface.php create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/composer.json create mode 100644 vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/phpunit.xml.dist create mode 100644 vendor/willdurand/jsonp-callback-validator/.gitignore create mode 100644 vendor/willdurand/jsonp-callback-validator/.travis.yml create mode 100644 vendor/willdurand/jsonp-callback-validator/CONTRIBUTING.md create mode 100644 vendor/willdurand/jsonp-callback-validator/LICENSE create mode 100644 vendor/willdurand/jsonp-callback-validator/README.md create mode 100644 vendor/willdurand/jsonp-callback-validator/composer.json create mode 100644 vendor/willdurand/jsonp-callback-validator/phpunit.xml.dist create mode 100644 vendor/willdurand/jsonp-callback-validator/src/JsonpCallbackValidator.php create mode 100644 vendor/willdurand/jsonp-callback-validator/tests/JsonpCallbackValidatorTest.php create mode 100644 vendor/willdurand/jsonp-callback-validator/tests/bootstrap.php create mode 100644 vendor/willdurand/negotiation/.gitignore create mode 100644 vendor/willdurand/negotiation/.travis.yml create mode 100644 vendor/willdurand/negotiation/CONTRIBUTING.md create mode 100644 vendor/willdurand/negotiation/LICENSE create mode 100644 vendor/willdurand/negotiation/README.md create mode 100644 vendor/willdurand/negotiation/composer.json create mode 100644 vendor/willdurand/negotiation/phpunit.xml.dist create mode 100644 vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php create mode 100644 vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php create mode 100644 vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php create mode 100644 vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php create mode 100644 vendor/willdurand/negotiation/src/Negotiation/Negotiator.php create mode 100644 vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php create mode 100644 vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php create mode 100644 vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php create mode 100644 vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php create mode 100644 vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php create mode 100644 vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php create mode 100644 vendor/willdurand/negotiation/tests/bootstrap.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c8d91ee --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +app/cache/* \ No newline at end of file diff --git a/app/AppKernel.php b/app/AppKernel.php index 0100d4a..fb93e65 100755 --- a/app/AppKernel.php +++ b/app/AppKernel.php @@ -16,8 +16,8 @@ public function registerBundles() new Symfony\Bundle\AsseticBundle\AsseticBundle(), new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), - new AppBundle\AppBundle(), new Xav\SiteBundle\XavSiteBundle(), + new FOS\RestBundle\FOSRestBundle(), ); if (in_array($this->getEnvironment(), array('dev', 'test'))) { diff --git a/app/bootstrap.php.cache b/app/bootstrap.php.cache old mode 100755 new mode 100644 diff --git a/app/cache/dev/annotations/0b868705b5cbb9e76ce83bf44d0b840c15f6243d#indexAction.cache.php b/app/cache/dev/annotations/0b868705b5cbb9e76ce83bf44d0b840c15f6243d#indexAction.cache.php deleted file mode 100644 index 21e84e5..0000000 --- a/app/cache/dev/annotations/0b868705b5cbb9e76ce83bf44d0b840c15f6243d#indexAction.cache.php +++ /dev/null @@ -1 +0,0 @@ -services['security.firewall.map.context.main'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(0 => new \Symfony\Component\Security\Http\Firewall\ChannelListener($e, new \Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint(80, 443), $a), 1 => new \Symfony\Component\Security\Http\Firewall\ContextListener($b, array(0 => new \Symfony\Component\Security\Core\User\InMemoryUserProvider()), 'main', $a, $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)), 2 => new \Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener($b, '56151688b734a0.80610511', $a, $c), 3 => new \Symfony\Component\Security\Http\Firewall\AccessListener($b, $this->get('security.access.decision_manager'), $e, $c)), new \Symfony\Component\Security\Http\Firewall\ExceptionListener($b, $this->get('security.authentication.trust_resolver'), new \Symfony\Component\Security\Http\HttpUtils($d, $d), 'main', NULL, NULL, NULL, $a, false)); + return $this->services['security.firewall.map.context.main'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(0 => new \Symfony\Component\Security\Http\Firewall\ChannelListener($e, new \Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint(80, 443), $a), 1 => new \Symfony\Component\Security\Http\Firewall\ContextListener($b, array(0 => new \Symfony\Component\Security\Core\User\InMemoryUserProvider()), 'main', $a, $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)), 2 => new \Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener($b, '5627a5cbaa1092.30175787', $a, $c), 3 => new \Symfony\Component\Security\Http\Firewall\AccessListener($b, $this->get('security.access.decision_manager'), $e, $c)), new \Symfony\Component\Security\Http\Firewall\ExceptionListener($b, $this->get('security.authentication.trust_resolver'), new \Symfony\Component\Security\Http\HttpUtils($d, $d), 'main', NULL, NULL, NULL, $a, false)); } /** @@ -3376,7 +3376,7 @@ protected function getSecurity_Access_DecisionManagerService() */ protected function getSecurity_Authentication_ManagerService() { - $this->services['security.authentication.manager'] = $instance = new \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager(array(0 => new \Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider('56151688b734a0.80610511')), true); + $this->services['security.authentication.manager'] = $instance = new \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager(array(0 => new \Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider('5627a5cbaa1092.30175787')), true); $instance->setEventDispatcher($this->get('debug.event_dispatcher')); @@ -3569,7 +3569,6 @@ protected function getDefaultParameters() 'AsseticBundle' => 'Symfony\\Bundle\\AsseticBundle\\AsseticBundle', 'DoctrineBundle' => 'Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle', 'SensioFrameworkExtraBundle' => 'Sensio\\Bundle\\FrameworkExtraBundle\\SensioFrameworkExtraBundle', - 'AppBundle' => 'AppBundle\\AppBundle', 'XavSiteBundle' => 'Xav\\SiteBundle\\XavSiteBundle', 'DebugBundle' => 'Symfony\\Bundle\\DebugBundle\\DebugBundle', 'WebProfilerBundle' => 'Symfony\\Bundle\\WebProfilerBundle\\WebProfilerBundle', @@ -3983,8 +3982,8 @@ protected function getDefaultParameters() ), 'assetic.java.bin' => '/bin/java', 'assetic.node.bin' => '/home/xavier/.nvm/versions/node/v0.12.6/bin/node', - 'assetic.ruby.bin' => '/usr/bin/ruby', - 'assetic.sass.bin' => '/usr/bin/sass', + 'assetic.ruby.bin' => '/bin/ruby', + 'assetic.sass.bin' => '/home/xavier/bin/sass', 'assetic.reactjsx.bin' => '/usr/bin/jsx', 'assetic.filter.cssrewrite.class' => 'Assetic\\Filter\\CssRewriteFilter', 'assetic.twig_extension.functions' => array( diff --git a/app/cache/dev/appDevDebugProjectContainer.php.meta b/app/cache/dev/appDevDebugProjectContainer.php.meta index c21e740..edb637f 100644 --- a/app/cache/dev/appDevDebugProjectContainer.php.meta +++ b/app/cache/dev/appDevDebugProjectContainer.php.meta @@ -1 +1 @@ -a:184:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":55:{s:47:"/var/www/html/portfolio-photo/app/AppKernel.php";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/var/www/html/portfolio-photo/app/bootstrap.php.cache";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php";}i:5;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/SecurityBundle.php";}i:8;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigBundle.php";}i:11;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/MonologBundle.php";}i:14;C:46:"Symfony\Component\Config\Resource\FileResource":93:{s:85:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/SwiftmailerBundle.php";}i:17;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/AsseticBundle.php";}i:20;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/DoctrineBundle.php";}i:23;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php";}i:26;C:46:"Symfony\Component\Config\Resource\FileResource":65:{s:57:"/var/www/html/portfolio-photo/src/AppBundle/AppBundle.php";}i:29;C:46:"Symfony\Component\Config\Resource\FileResource":74:{s:66:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/XavSiteBundle.php";}i:32;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DebugBundle.php";}i:35;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/WebProfilerBundle.php";}i:38;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/SensioDistributionBundle.php";}i:41;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/SensioGeneratorBundle.php";}i:44;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/RoutingResolverPass.php";}i:45;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php";}i:46;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php";}i:47;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TemplatingPass.php";}i:48;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php";}i:49;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddValidatorInitializersPass.php";}i:50;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConsoleCommandPass.php";}i:51;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/FormPass.php";}i:52;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslatorPass.php";}i:53;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php";}i:54;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheWarmerPass.php";}i:55;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheClearerPass.php";}i:56;C:46:"Symfony\Component\Config\Resource\FileResource":164:{s:155:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php";}i:57;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationExtractorPass.php";}i:58;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationDumperPass.php";}i:59;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php";}i:60;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php";}i:61;C:46:"Symfony\Component\Config\Resource\FileResource":159:{s:150:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php";}i:62;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php";}i:63;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php";}i:64;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php";}i:65;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php";}i:66;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigLoaderPass.php";}i:67;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExceptionListenerPass.php";}i:68;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/LoggerChannelPass.php";}i:69;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/DebugHandlerPass.php";}i:70;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddProcessorsPass.php";}i:71;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddSwiftMailerTransportPass.php";}i:72;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/DependencyInjection/Compiler/RegisterPluginsPass.php";}i:73;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/TemplateResourcesPass.php";}i:74;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/CheckClosureFilterPass.php";}i:75;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/CheckCssEmbedFilterPass.php";}i:76;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/CheckYuiFilterPass.php";}i:77;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/SprocketsFilterPass.php";}i:78;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/TemplatingPass.php";}i:79;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/AssetFactoryPass.php";}i:80;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/AssetManagerPass.php";}i:81;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/FilterManagerPass.php";}i:82;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/RouterResourcePass.php";}i:83;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php";}i:84;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/DoctrineValidationPass.php";}i:85;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/DependencyInjection/Compiler/EntityListenerPass.php";}i:86;C:46:"Symfony\Component\Config\Resource\FileResource":130:{s:121:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/AddParamConverterPass.php";}i:87;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/LegacyPass.php";}i:88;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php";}i:89;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/DependencyInjection/Compiler/StepsPass.php";}i:90;C:46:"Symfony\Component\Config\Resource\FileResource":63:{s:55:"/var/www/html/portfolio-photo/app/config/config_dev.yml";}i:91;C:46:"Symfony\Component\Config\Resource\FileResource":59:{s:51:"/var/www/html/portfolio-photo/app/config/config.yml";}i:92;C:46:"Symfony\Component\Config\Resource\FileResource":63:{s:55:"/var/www/html/portfolio-photo/app/config/parameters.yml";}i:93;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/var/www/html/portfolio-photo/app/config/security.yml";}i:94;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/var/www/html/portfolio-photo/app/config/services.yml";}i:95;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php";}i:96;C:57:"Symfony\Component\HttpKernel\Config\EnvParametersResource":57:{a:2:{s:6:"prefix";s:9:"SYMFONY__";s:9:"variables";a:0:{}}}i:97;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php";}i:98;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php";}i:142;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ExtensionCompilerPass.php";}i:143;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php";}i:144;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php";}i:145;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php";}i:146;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php";}i:147;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php";}i:148;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php";}i:149;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php";}i:150;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php";}i:151;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php";}i:153;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php";}i:154;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php";}i:155;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php";}i:156;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php";}i:157;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php";}i:161;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php";}i:162;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/Extension.php";}i:163;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php";}i:164;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml";}i:165;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml";}i:166;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml";}i:167;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml";}i:168;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_access.xml";}i:169;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml";}i:170;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security.xml";}i:171;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form.xml";}i:172;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml";}i:173;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml";}i:174;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.xml";}i:175;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml";}i:176;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml";}i:177;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml";}i:178;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_listener.xml";}i:179;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml";}i:180;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml";}i:181;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_debug.xml";}i:182;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml";}i:183;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/annotations.xml";}i:184;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml";}i:185;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug.xml";}i:186;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php";}i:189;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml";}i:190;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml";}i:191;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml";}i:192;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml";}i:193;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_twig.xml";}i:194;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/collectors.xml";}i:195;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php";}i:198;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml";}i:199;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php";}i:200;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php";}i:203;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php";}i:204;C:46:"Symfony\Component\Config\Resource\FileResource":96:{s:88:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/Resources/config/monolog.xml";}i:205;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/DependencyInjection/SwiftmailerExtension.php";}i:208;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/Resources/config/swiftmailer.xml";}i:209;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/AsseticExtension.php";}i:212;C:46:"Symfony\Component\Config\Resource\FileResource":96:{s:88:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/assetic.xml";}i:213;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/templating_twig.xml";}i:214;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/templating_php.xml";}i:215;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/filters/cssrewrite.xml";}i:216;C:46:"Symfony\Component\Config\Resource\FileResource":99:{s:91:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/controller.xml";}i:217;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/DependencyInjection/DoctrineExtension.php";}i:218;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php";}i:221;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-cache-bundle/Doctrine/Bundle/DoctrineCacheBundle/Resources/config/services.xml";}i:222;C:46:"Symfony\Component\Config\Resource\FileResource":95:{s:87:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/Resources/config/dbal.xml";}i:223;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml";}i:224;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config";}i:225;C:46:"Symfony\Component\Config\Resource\FileResource":95:{s:87:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";}i:226;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config";}i:227;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";}i:228;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config";}i:229;C:46:"Symfony\Component\Config\Resource\FileResource":90:{s:82:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";}i:230;C:46:"Symfony\Component\Config\Resource\FileResource":84:{s:76:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/Resources/config";}i:231;C:46:"Symfony\Component\Config\Resource\FileResource":67:{s:59:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle";}i:232;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/Resources/config";}i:233;C:46:"Symfony\Component\Config\Resource\FileResource":71:{s:63:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle";}i:234;C:46:"Symfony\Component\Config\Resource\FileResource":84:{s:76:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config";}i:235;C:46:"Symfony\Component\Config\Resource\FileResource":67:{s:59:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle";}i:236;C:46:"Symfony\Component\Config\Resource\FileResource":86:{s:78:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/Resources/config";}i:237;C:46:"Symfony\Component\Config\Resource\FileResource":69:{s:61:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle";}i:238;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config";}i:239;C:46:"Symfony\Component\Config\Resource\FileResource":74:{s:66:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle";}i:240;C:46:"Symfony\Component\Config\Resource\FileResource":51:{s:43:"/var/www/html/portfolio-photo/src/AppBundle";}i:241;C:46:"Symfony\Component\Config\Resource\FileResource":73:{s:65:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/Resources/config";}i:242;C:46:"Symfony\Component\Config\Resource\FileResource":56:{s:48:"/var/www/html/portfolio-photo/src/Xav/SiteBundle";}i:243;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config";}i:244;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";}i:245;C:46:"Symfony\Component\Config\Resource\FileResource":115:{s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config";}i:246;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";}i:247;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/config";}i:248;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle";}i:249;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/Resources";}i:250;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle";}i:251;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/SensioFrameworkExtraExtension.php";}i:254;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/Configuration.php";}i:255;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/services.xml";}i:256;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/annotations.xml";}i:257;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/routing.xml";}i:258;C:46:"Symfony\Component\Config\Resource\FileResource":106:{s:98:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/converters.xml";}i:259;C:46:"Symfony\Component\Config\Resource\FileResource":100:{s:92:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/view.xml";}i:260;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/cache.xml";}i:261;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/security.xml";}i:262;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/DependencyInjection/XavSiteExtension.php";}i:265;C:46:"Symfony\Component\Config\Resource\FileResource":86:{s:78:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/Resources/config/services.xml";}i:266;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php";}i:269;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config/services.xml";}i:270;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php";}i:273;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/Configuration.php";}i:274;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml";}i:275;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/toolbar.xml";}i:276;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/DependencyInjection/SensioDistributionExtension.php";}i:279;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/config/webconfigurator.xml";}i:280;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/config/security.xml";}} \ No newline at end of file +a:182:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":55:{s:47:"/var/www/html/portfolio-photo/app/AppKernel.php";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/var/www/html/portfolio-photo/app/bootstrap.php.cache";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php";}i:5;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/SecurityBundle.php";}i:8;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigBundle.php";}i:11;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/MonologBundle.php";}i:14;C:46:"Symfony\Component\Config\Resource\FileResource":93:{s:85:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/SwiftmailerBundle.php";}i:17;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/AsseticBundle.php";}i:20;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/DoctrineBundle.php";}i:23;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php";}i:26;C:46:"Symfony\Component\Config\Resource\FileResource":74:{s:66:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/XavSiteBundle.php";}i:29;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DebugBundle.php";}i:32;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/WebProfilerBundle.php";}i:35;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/SensioDistributionBundle.php";}i:38;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/SensioGeneratorBundle.php";}i:41;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/RoutingResolverPass.php";}i:42;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php";}i:43;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php";}i:44;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TemplatingPass.php";}i:45;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php";}i:46;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddValidatorInitializersPass.php";}i:47;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConsoleCommandPass.php";}i:48;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/FormPass.php";}i:49;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslatorPass.php";}i:50;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php";}i:51;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheWarmerPass.php";}i:52;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheClearerPass.php";}i:53;C:46:"Symfony\Component\Config\Resource\FileResource":164:{s:155:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php";}i:54;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationExtractorPass.php";}i:55;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationDumperPass.php";}i:56;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php";}i:57;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php";}i:58;C:46:"Symfony\Component\Config\Resource\FileResource":159:{s:150:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php";}i:59;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php";}i:60;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php";}i:61;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php";}i:62;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php";}i:63;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigLoaderPass.php";}i:64;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExceptionListenerPass.php";}i:65;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/LoggerChannelPass.php";}i:66;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/DebugHandlerPass.php";}i:67;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddProcessorsPass.php";}i:68;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddSwiftMailerTransportPass.php";}i:69;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/DependencyInjection/Compiler/RegisterPluginsPass.php";}i:70;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/TemplateResourcesPass.php";}i:71;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/CheckClosureFilterPass.php";}i:72;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/CheckCssEmbedFilterPass.php";}i:73;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/CheckYuiFilterPass.php";}i:74;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/SprocketsFilterPass.php";}i:75;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/TemplatingPass.php";}i:76;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/AssetFactoryPass.php";}i:77;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/AssetManagerPass.php";}i:78;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/FilterManagerPass.php";}i:79;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/Compiler/RouterResourcePass.php";}i:80;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php";}i:81;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/DoctrineValidationPass.php";}i:82;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/DependencyInjection/Compiler/EntityListenerPass.php";}i:83;C:46:"Symfony\Component\Config\Resource\FileResource":130:{s:121:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/AddParamConverterPass.php";}i:84;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/LegacyPass.php";}i:85;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php";}i:86;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/DependencyInjection/Compiler/StepsPass.php";}i:87;C:46:"Symfony\Component\Config\Resource\FileResource":63:{s:55:"/var/www/html/portfolio-photo/app/config/config_dev.yml";}i:88;C:46:"Symfony\Component\Config\Resource\FileResource":59:{s:51:"/var/www/html/portfolio-photo/app/config/config.yml";}i:89;C:46:"Symfony\Component\Config\Resource\FileResource":63:{s:55:"/var/www/html/portfolio-photo/app/config/parameters.yml";}i:90;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/var/www/html/portfolio-photo/app/config/security.yml";}i:91;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/var/www/html/portfolio-photo/app/config/services.yml";}i:92;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php";}i:93;C:57:"Symfony\Component\HttpKernel\Config\EnvParametersResource":57:{a:2:{s:6:"prefix";s:9:"SYMFONY__";s:9:"variables";a:0:{}}}i:94;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php";}i:95;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php";}i:139;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ExtensionCompilerPass.php";}i:140;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php";}i:141;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php";}i:142;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php";}i:143;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php";}i:144;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php";}i:145;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php";}i:146;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php";}i:147;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php";}i:148;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php";}i:150;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php";}i:151;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php";}i:152;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php";}i:153;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php";}i:154;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php";}i:158;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php";}i:159;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/Extension.php";}i:160;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php";}i:161;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml";}i:162;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml";}i:163;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml";}i:164;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml";}i:165;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_access.xml";}i:166;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml";}i:167;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security.xml";}i:168;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form.xml";}i:169;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml";}i:170;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml";}i:171;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.xml";}i:172;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml";}i:173;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml";}i:174;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml";}i:175;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_listener.xml";}i:176;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml";}i:177;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml";}i:178;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_debug.xml";}i:179;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml";}i:180;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/annotations.xml";}i:181;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml";}i:182;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug.xml";}i:183;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php";}i:186;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml";}i:187;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml";}i:188;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml";}i:189;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml";}i:190;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_twig.xml";}i:191;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/collectors.xml";}i:192;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php";}i:195;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml";}i:196;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php";}i:197;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php";}i:200;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php";}i:201;C:46:"Symfony\Component\Config\Resource\FileResource":96:{s:88:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/Resources/config/monolog.xml";}i:202;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/DependencyInjection/SwiftmailerExtension.php";}i:205;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/Resources/config/swiftmailer.xml";}i:206;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DependencyInjection/AsseticExtension.php";}i:209;C:46:"Symfony\Component\Config\Resource\FileResource":96:{s:88:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/assetic.xml";}i:210;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/templating_twig.xml";}i:211;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/templating_php.xml";}i:212;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/filters/cssrewrite.xml";}i:213;C:46:"Symfony\Component\Config\Resource\FileResource":99:{s:91:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config/controller.xml";}i:214;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/DependencyInjection/DoctrineExtension.php";}i:215;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php";}i:218;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-cache-bundle/Doctrine/Bundle/DoctrineCacheBundle/Resources/config/services.xml";}i:219;C:46:"Symfony\Component\Config\Resource\FileResource":95:{s:87:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/Resources/config/dbal.xml";}i:220;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml";}i:221;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config";}i:222;C:46:"Symfony\Component\Config\Resource\FileResource":95:{s:87:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";}i:223;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config";}i:224;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";}i:225;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config";}i:226;C:46:"Symfony\Component\Config\Resource\FileResource":90:{s:82:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";}i:227;C:46:"Symfony\Component\Config\Resource\FileResource":84:{s:76:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle/Resources/config";}i:228;C:46:"Symfony\Component\Config\Resource\FileResource":67:{s:59:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle";}i:229;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/Resources/config";}i:230;C:46:"Symfony\Component\Config\Resource\FileResource":71:{s:63:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle";}i:231;C:46:"Symfony\Component\Config\Resource\FileResource":84:{s:76:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Resources/config";}i:232;C:46:"Symfony\Component\Config\Resource\FileResource":67:{s:59:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle";}i:233;C:46:"Symfony\Component\Config\Resource\FileResource":86:{s:78:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/Resources/config";}i:234;C:46:"Symfony\Component\Config\Resource\FileResource":69:{s:61:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle";}i:235;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config";}i:236;C:46:"Symfony\Component\Config\Resource\FileResource":74:{s:66:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle";}i:237;C:46:"Symfony\Component\Config\Resource\FileResource":73:{s:65:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/Resources/config";}i:238;C:46:"Symfony\Component\Config\Resource\FileResource":56:{s:48:"/var/www/html/portfolio-photo/src/Xav/SiteBundle";}i:239;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config";}i:240;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";}i:241;C:46:"Symfony\Component\Config\Resource\FileResource":115:{s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config";}i:242;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";}i:243;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/config";}i:244;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle";}i:245;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/Resources";}i:246;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle";}i:247;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/SensioFrameworkExtraExtension.php";}i:250;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/DependencyInjection/Configuration.php";}i:251;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/services.xml";}i:252;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/annotations.xml";}i:253;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/routing.xml";}i:254;C:46:"Symfony\Component\Config\Resource\FileResource":106:{s:98:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/converters.xml";}i:255;C:46:"Symfony\Component\Config\Resource\FileResource":100:{s:92:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/view.xml";}i:256;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/cache.xml";}i:257;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Resources/config/security.xml";}i:258;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/DependencyInjection/XavSiteExtension.php";}i:261;C:46:"Symfony\Component\Config\Resource\FileResource":86:{s:78:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/Resources/config/services.xml";}i:262;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php";}i:265;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config/services.xml";}i:266;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php";}i:269;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/Configuration.php";}i:270;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml";}i:271;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/toolbar.xml";}i:272;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/DependencyInjection/SensioDistributionExtension.php";}i:275;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/config/webconfigurator.xml";}i:276;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/config/security.xml";}} \ No newline at end of file diff --git a/app/cache/dev/appDevDebugProjectContainer.xml b/app/cache/dev/appDevDebugProjectContainer.xml index dc5d8b4..dabd6e0 100644 --- a/app/cache/dev/appDevDebugProjectContainer.xml +++ b/app/cache/dev/appDevDebugProjectContainer.xml @@ -16,7 +16,6 @@ Symfony\Bundle\AsseticBundle\AsseticBundle Doctrine\Bundle\DoctrineBundle\DoctrineBundle Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle - AppBundle\AppBundle Xav\SiteBundle\XavSiteBundle Symfony\Bundle\DebugBundle\DebugBundle Symfony\Bundle\WebProfilerBundle\WebProfilerBundle @@ -416,8 +415,8 @@ /bin/java /home/xavier/.nvm/versions/node/v0.12.6/bin/node - /usr/bin/ruby - /usr/bin/sass + /bin/ruby + /home/xavier/bin/sass /usr/bin/jsx Assetic\Filter\CssRewriteFilter @@ -1712,7 +1711,7 @@ - 56151688b734a0.80610511 + 5627a5cbaa1092.30175787 @@ -1835,7 +1834,7 @@ - 56151688b734a0.80610511 + 5627a5cbaa1092.30175787 diff --git a/app/cache/dev/appDevUrlGenerator.php b/app/cache/dev/appDevUrlGenerator.php deleted file mode 100644 index d45bbe5..0000000 --- a/app/cache/dev/appDevUrlGenerator.php +++ /dev/null @@ -1,55 +0,0 @@ - array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 1 => array ( 0 => 'text', 1 => '/_wdt', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_home' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:homeAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_search' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/search', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_search_bar' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/search_bar', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_purge' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:purgeAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/purge', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_info' => array ( 0 => array ( 0 => 'about', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:infoAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'about', ), 1 => array ( 0 => 'text', 1 => '/_profiler/info', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_phpinfo' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/phpinfo', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_search_results' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/search/results', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:panelAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 1 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_router' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.router:panelAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/router', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_exception' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.exception:showAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/exception', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), - '_profiler_exception_css' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.exception:cssAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/exception.css', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), - '_configurator_home' => array ( 0 => array ( ), 1 => array ( '_controller' => 'Sensio\\Bundle\\DistributionBundle\\Controller\\ConfiguratorController::checkAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_configurator/', ), ), 4 => array ( ), 5 => array ( ),), - '_configurator_step' => array ( 0 => array ( 0 => 'index', ), 1 => array ( '_controller' => 'Sensio\\Bundle\\DistributionBundle\\Controller\\ConfiguratorController::stepAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'index', ), 1 => array ( 0 => 'text', 1 => '/_configurator/step', ), ), 4 => array ( ), 5 => array ( ),), - '_configurator_final' => array ( 0 => array ( ), 1 => array ( '_controller' => 'Sensio\\Bundle\\DistributionBundle\\Controller\\ConfiguratorController::finalAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_configurator/final', ), ), 4 => array ( ), 5 => array ( ),), - '_twig_error_test' => array ( 0 => array ( 0 => 'code', 1 => '_format', ), 1 => array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html', ), 2 => array ( 'code' => '\\d+', ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '.', 2 => '[^/]++', 3 => '_format', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '\\d+', 3 => 'code', ), 2 => array ( 0 => 'text', 1 => '/_error', ), ), 4 => array ( ), 5 => array ( ),), - 'xav_site_default_index' => array ( 0 => array ( 0 => 'name', ), 1 => array ( '_controller' => 'Xav\\SiteBundle\\Controller\\DefaultController::indexAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'name', ), 1 => array ( 0 => 'text', 1 => '/hello', ), ), 4 => array ( ), 5 => array ( ),), - 'homepage' => array ( 0 => array ( ), 1 => array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/', ), ), 4 => array ( ), 5 => array ( ),), - ); - - /** - * Constructor. - */ - public function __construct(RequestContext $context, LoggerInterface $logger = null) - { - $this->context = $context; - $this->logger = $logger; - } - - public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) - { - if (!isset(self::$declaredRoutes[$name])) { - throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); - } - - list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name]; - - return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes); - } -} diff --git a/app/cache/dev/appDevUrlGenerator.php.meta b/app/cache/dev/appDevUrlGenerator.php.meta deleted file mode 100644 index 146a8d30ef49081ae206c882141b818af7fc49b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4036 zcmds4-*4J55aw@*_Ef33;Wy@~YgJ8JrA=$4?Ez^r$pKMA961JxD*pG~*(RY-2xQ$f z?E#S(eD~emcc0IK`%V55@vFfNZ*{o$u$ql!vKrpVSt=7qG(IKcXfpf;nVhQthIdg6 zn-`CFeg2a1PLq3VArxCKmu#wMF-xV=V;M*CGM!2-nMhL>h+qmVgas2>2099ul5-s; zllp2FdxLev{lORB_6rmr=SdjD@Y?>}y*WT`v4CQc;O^Qch%>g=l#9FFxFcYtUG^jFRdNkAmIDPTiwEVL5xpYr=LM35N|j_)W~fituo%mp!0H^xV83V zjC#mO%;9zFoOry^<1d0R5?wQnoI@^o1ES3cKkGI6!^N}xr9w|VG}t)$_9fs7xUyfrTjoWo@YLt`2yuEwHNb)Xfs1YO{ zU<3@K+7ZDcTClT2w)hT=xskRxwqERcy-GLA{{kek$?hG_JL z{7KLbJ)$TW=Fu~n8cQ`3+Wm*v?bacgM2XpedoAIyWOz(8{@Y_h@ebzXuXFOfn%nXo_3R1yuVb7cv2P9b}Sr}znMI#)XWpZg%m_68^T>5Xf{!v;H7}*-l6^)X4 zRNbmkVOc0Dzx3ojy*iIL>y*U-N=cRF@Ou^EcT7#%rQKn!Gq2h+Z_Pfs-oC>WQ}4~r zO$rAKF!zW}zj(Zl+1na%5l#s=-k5*TjXQ*y9gfXp$%gfGnts3~Izj!a_q|@9%G)dD z>~UOfBrA{-HhTl~e=B`>IoL`c-9C=D7Qw_DhGSQO=Sb!n6{*!T%HJ(j{)3PXC2jo+ D3K5p! diff --git a/app/cache/dev/appDevUrlMatcher.php b/app/cache/dev/appDevUrlMatcher.php deleted file mode 100644 index 85e0a88..0000000 --- a/app/cache/dev/appDevUrlMatcher.php +++ /dev/null @@ -1,146 +0,0 @@ -context = $context; - } - - public function match($pathinfo) - { - $allow = array(); - $pathinfo = rawurldecode($pathinfo); - $context = $this->context; - $request = $this->request; - - if (0 === strpos($pathinfo, '/_')) { - // _wdt - if (0 === strpos($pathinfo, '/_wdt') && preg_match('#^/_wdt/(?P[^/]++)$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_wdt')), array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction',)); - } - - if (0 === strpos($pathinfo, '/_profiler')) { - // _profiler_home - if (rtrim($pathinfo, '/') === '/_profiler') { - if (substr($pathinfo, -1) !== '/') { - return $this->redirect($pathinfo.'/', '_profiler_home'); - } - - return array ( '_controller' => 'web_profiler.controller.profiler:homeAction', '_route' => '_profiler_home',); - } - - if (0 === strpos($pathinfo, '/_profiler/search')) { - // _profiler_search - if ($pathinfo === '/_profiler/search') { - return array ( '_controller' => 'web_profiler.controller.profiler:searchAction', '_route' => '_profiler_search',); - } - - // _profiler_search_bar - if ($pathinfo === '/_profiler/search_bar') { - return array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', '_route' => '_profiler_search_bar',); - } - - } - - // _profiler_purge - if ($pathinfo === '/_profiler/purge') { - return array ( '_controller' => 'web_profiler.controller.profiler:purgeAction', '_route' => '_profiler_purge',); - } - - // _profiler_info - if (0 === strpos($pathinfo, '/_profiler/info') && preg_match('#^/_profiler/info/(?P[^/]++)$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_info')), array ( '_controller' => 'web_profiler.controller.profiler:infoAction',)); - } - - // _profiler_phpinfo - if ($pathinfo === '/_profiler/phpinfo') { - return array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', '_route' => '_profiler_phpinfo',); - } - - // _profiler_search_results - if (preg_match('#^/_profiler/(?P[^/]++)/search/results$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_search_results')), array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction',)); - } - - // _profiler - if (preg_match('#^/_profiler/(?P[^/]++)$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler')), array ( '_controller' => 'web_profiler.controller.profiler:panelAction',)); - } - - // _profiler_router - if (preg_match('#^/_profiler/(?P[^/]++)/router$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_router')), array ( '_controller' => 'web_profiler.controller.router:panelAction',)); - } - - // _profiler_exception - if (preg_match('#^/_profiler/(?P[^/]++)/exception$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception')), array ( '_controller' => 'web_profiler.controller.exception:showAction',)); - } - - // _profiler_exception_css - if (preg_match('#^/_profiler/(?P[^/]++)/exception\\.css$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception_css')), array ( '_controller' => 'web_profiler.controller.exception:cssAction',)); - } - - } - - if (0 === strpos($pathinfo, '/_configurator')) { - // _configurator_home - if (rtrim($pathinfo, '/') === '/_configurator') { - if (substr($pathinfo, -1) !== '/') { - return $this->redirect($pathinfo.'/', '_configurator_home'); - } - - return array ( '_controller' => 'Sensio\\Bundle\\DistributionBundle\\Controller\\ConfiguratorController::checkAction', '_route' => '_configurator_home',); - } - - // _configurator_step - if (0 === strpos($pathinfo, '/_configurator/step') && preg_match('#^/_configurator/step/(?P[^/]++)$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_configurator_step')), array ( '_controller' => 'Sensio\\Bundle\\DistributionBundle\\Controller\\ConfiguratorController::stepAction',)); - } - - // _configurator_final - if ($pathinfo === '/_configurator/final') { - return array ( '_controller' => 'Sensio\\Bundle\\DistributionBundle\\Controller\\ConfiguratorController::finalAction', '_route' => '_configurator_final',); - } - - } - - // _twig_error_test - if (0 === strpos($pathinfo, '/_error') && preg_match('#^/_error/(?P\\d+)(?:\\.(?P<_format>[^/]++))?$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => '_twig_error_test')), array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html',)); - } - - } - - // xav_site_default_index - if (0 === strpos($pathinfo, '/hello') && preg_match('#^/hello/(?P[^/]++)$#s', $pathinfo, $matches)) { - return $this->mergeDefaults(array_replace($matches, array('_route' => 'xav_site_default_index')), array ( '_controller' => 'Xav\\SiteBundle\\Controller\\DefaultController::indexAction',)); - } - - // homepage - if (rtrim($pathinfo, '/') === '') { - if (substr($pathinfo, -1) !== '/') { - return $this->redirect($pathinfo.'/', 'homepage'); - } - - return array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', '_route' => 'homepage',); - } - - throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException(); - } -} diff --git a/app/cache/dev/appDevUrlMatcher.php.meta b/app/cache/dev/appDevUrlMatcher.php.meta deleted file mode 100644 index 26efa3a682177bcac62644e49cf367f5412f28e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3895 zcmds4+iu!G5anB}K1B)}b7y%<6GfF8sZ|rHeL$)fdjKo8*IF+Sg!uQ)?5+*DVQ|x` z>I1?y?ChDDb7qeP_uG6E@r%(F@ASBLw@#)qU5~G1lF1ZOjaTV3nvK6fE*C0*@l6y% zapUp6&o?>mwYkTZLb26q#pXJRStga9$~cne*<5PLM3%8Y1an{^ESbo2&{4pYT<9pB zHP=b(jkXc@M_+i?-=X-pNW&P$m-g@O&H-`{cTg-6T-_*=IAM81x%@nWFsOiVBLXee z`mLgLsU|}Na@L5Y2tiTMUiU@N8zmB0N%i1>-b0ebf+{k;HS0{V^L4Hvu@5|Mvh*)p z@IW9A6TMR-y4w$KrH#W|1pH<2PJb7CM~qKeXP-f(5EmRFYLu~%Ryprt(q%i2T-tar zK|N$7*6=cOn|Qo6;2S|0iLN78iueX$cYq zn@j=lR#0;+wv$59go2r7w6L!{gsE7>nn!5}k4@57Q?H^K0qCEGnJpt&<)}du zki8Pn$05M^MC9;vqaFgOmUvklx6$)BTguZaV`8*TIUt$o%khquTt`T1>?Zzl`ktmN zWnawQyBCS3%vl3vNqPk{Gcc=XbLW7(3*~)-DJVz-D1=S?B|_0;(4Y*f%s9ceyjrn9 zrdr83rXhoLAWfLw(jB%e#W-|{IyB9uYYa7&DiPZKhY01KLpqC6vjEpxj$zAiGPnNQ z$*gz}Yx37Q`969=)%>eebgJItAYPKV>r${?)1qLdHz)vPef2CsHKExle92EdUrKM% zsky!1wnuiWRRv%PX($!Ttp(eCtAM%5!mLqX-(m7q$tfPU%01Z)-lr+BRj8Yf&R%tE zr_eLTpoQb*a1H-R3Ykl_%%fK~4?Iwi3VsJQb6g&f=8f?8DXH=j{-7rOp6N-qQXS?E z;)y&Kpnly~tih1lJE-LBVO-bN7VMA`Hv7`$|5o|XrtX!G4F6#g5==Dp Xr&O+0lUf5a`TLcV|4m456>a+qO2uPp diff --git a/app/cache/dev/assetic/config/4/43a80f0e087752a2d4724591f85aa0e1.php b/app/cache/dev/assetic/config/4/43a80f0e087752a2d4724591f85aa0e1.php deleted file mode 100644 index bd6125f..0000000 --- a/app/cache/dev/assetic/config/4/43a80f0e087752a2d4724591f85aa0e1.php +++ /dev/null @@ -1,5 +0,0 @@ -isMasterRequest()) { -return; -} -$request = $event->getRequest(); -$session = $this->getSession(); -if (null === $session || $request->hasSession()) { -return; -} -$request->setSession($session); -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::REQUEST => array('onKernelRequest', 128), -); -} -abstract protected function getSession(); -} -} -namespace Symfony\Bundle\FrameworkBundle\EventListener -{ -use Symfony\Component\HttpKernel\EventListener\SessionListener as BaseSessionListener; -use Symfony\Component\DependencyInjection\ContainerInterface; -class SessionListener extends BaseSessionListener -{ -private $container; -public function __construct(ContainerInterface $container) -{ -$this->container = $container; -} -protected function getSession() -{ -if (!$this->container->has('session')) { -return; -} -return $this->container->get('session'); -} -} -} -namespace Symfony\Component\HttpFoundation\Session\Storage -{ -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; -interface SessionStorageInterface -{ -public function start(); -public function isStarted(); -public function getId(); -public function setId($id); -public function getName(); -public function setName($name); -public function regenerate($destroy = false, $lifetime = null); -public function save(); -public function clear(); -public function getBag($name); -public function registerBag(SessionBagInterface $bag); -public function getMetadataBag(); -} -} -namespace Symfony\Component\HttpFoundation\Session\Storage -{ -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; -use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler; -use Symfony\Component\HttpFoundation\Session\Storage\Proxy\NativeProxy; -use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy; -use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy; -class NativeSessionStorage implements SessionStorageInterface -{ -protected $bags; -protected $started = false; -protected $closed = false; -protected $saveHandler; -protected $metadataBag; -public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null) -{ -session_cache_limiter(''); ini_set('session.use_cookies', 1); -if (PHP_VERSION_ID >= 50400) { -session_register_shutdown(); -} else { -register_shutdown_function('session_write_close'); -} -$this->setMetadataBag($metaBag); -$this->setOptions($options); -$this->setSaveHandler($handler); -} -public function getSaveHandler() -{ -return $this->saveHandler; -} -public function start() -{ -if ($this->started) { -return true; -} -if (PHP_VERSION_ID >= 50400 && \PHP_SESSION_ACTIVE === session_status()) { -throw new \RuntimeException('Failed to start the session: already started by PHP.'); -} -if (PHP_VERSION_ID < 50400 && !$this->closed && isset($_SESSION) && session_id()) { -throw new \RuntimeException('Failed to start the session: already started by PHP ($_SESSION is set).'); -} -if (ini_get('session.use_cookies') && headers_sent($file, $line)) { -throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line)); -} -if (!session_start()) { -throw new \RuntimeException('Failed to start the session'); -} -$this->loadSession(); -if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) { -$this->saveHandler->setActive(true); -} -return true; -} -public function getId() -{ -return $this->saveHandler->getId(); -} -public function setId($id) -{ -$this->saveHandler->setId($id); -} -public function getName() -{ -return $this->saveHandler->getName(); -} -public function setName($name) -{ -$this->saveHandler->setName($name); -} -public function regenerate($destroy = false, $lifetime = null) -{ -if (null !== $lifetime) { -ini_set('session.cookie_lifetime', $lifetime); -} -if ($destroy) { -$this->metadataBag->stampNew(); -} -$isRegenerated = session_regenerate_id($destroy); -$this->loadSession(); -return $isRegenerated; -} -public function save() -{ -session_write_close(); -if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) { -$this->saveHandler->setActive(false); -} -$this->closed = true; -$this->started = false; -} -public function clear() -{ -foreach ($this->bags as $bag) { -$bag->clear(); -} -$_SESSION = array(); -$this->loadSession(); -} -public function registerBag(SessionBagInterface $bag) -{ -$this->bags[$bag->getName()] = $bag; -} -public function getBag($name) -{ -if (!isset($this->bags[$name])) { -throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name)); -} -if ($this->saveHandler->isActive() && !$this->started) { -$this->loadSession(); -} elseif (!$this->started) { -$this->start(); -} -return $this->bags[$name]; -} -public function setMetadataBag(MetadataBag $metaBag = null) -{ -if (null === $metaBag) { -$metaBag = new MetadataBag(); -} -$this->metadataBag = $metaBag; -} -public function getMetadataBag() -{ -return $this->metadataBag; -} -public function isStarted() -{ -return $this->started; -} -public function setOptions(array $options) -{ -$validOptions = array_flip(array('cache_limiter','cookie_domain','cookie_httponly','cookie_lifetime','cookie_path','cookie_secure','entropy_file','entropy_length','gc_divisor','gc_maxlifetime','gc_probability','hash_bits_per_character','hash_function','name','referer_check','serialize_handler','use_cookies','use_only_cookies','use_trans_sid','upload_progress.enabled','upload_progress.cleanup','upload_progress.prefix','upload_progress.name','upload_progress.freq','upload_progress.min-freq','url_rewriter.tags', -)); -foreach ($options as $key => $value) { -if (isset($validOptions[$key])) { -ini_set('session.'.$key, $value); -} -} -} -public function setSaveHandler($saveHandler = null) -{ -if (!$saveHandler instanceof AbstractProxy && -!$saveHandler instanceof NativeSessionHandler && -!$saveHandler instanceof \SessionHandlerInterface && -null !== $saveHandler) { -throw new \InvalidArgumentException('Must be instance of AbstractProxy or NativeSessionHandler; implement \SessionHandlerInterface; or be null.'); -} -if (!$saveHandler instanceof AbstractProxy && $saveHandler instanceof \SessionHandlerInterface) { -$saveHandler = new SessionHandlerProxy($saveHandler); -} elseif (!$saveHandler instanceof AbstractProxy) { -$saveHandler = PHP_VERSION_ID >= 50400 ? -new SessionHandlerProxy(new \SessionHandler()) : new NativeProxy(); -} -$this->saveHandler = $saveHandler; -if ($this->saveHandler instanceof \SessionHandlerInterface) { -if (PHP_VERSION_ID >= 50400) { -session_set_save_handler($this->saveHandler, false); -} else { -session_set_save_handler( -array($this->saveHandler,'open'), -array($this->saveHandler,'close'), -array($this->saveHandler,'read'), -array($this->saveHandler,'write'), -array($this->saveHandler,'destroy'), -array($this->saveHandler,'gc') -); -} -} -} -protected function loadSession(array &$session = null) -{ -if (null === $session) { -$session = &$_SESSION; -} -$bags = array_merge($this->bags, array($this->metadataBag)); -foreach ($bags as $bag) { -$key = $bag->getStorageKey(); -$session[$key] = isset($session[$key]) ? $session[$key] : array(); -$bag->initialize($session[$key]); -} -$this->started = true; -$this->closed = false; -} -} -} -namespace Symfony\Component\HttpFoundation\Session\Storage -{ -use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy; -use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler; -class PhpBridgeSessionStorage extends NativeSessionStorage -{ -public function __construct($handler = null, MetadataBag $metaBag = null) -{ -$this->setMetadataBag($metaBag); -$this->setSaveHandler($handler); -} -public function start() -{ -if ($this->started) { -return true; -} -$this->loadSession(); -if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) { -$this->saveHandler->setActive(true); -} -return true; -} -public function clear() -{ -foreach ($this->bags as $bag) { -$bag->clear(); -} -$this->loadSession(); -} -} -} -namespace Symfony\Component\HttpFoundation\Session\Storage\Handler -{ -if (PHP_VERSION_ID >= 50400) { -class NativeSessionHandler extends \SessionHandler -{ -} -} else { -class NativeSessionHandler -{ -} -} -} -namespace Symfony\Component\HttpFoundation\Session\Storage\Handler -{ -class NativeFileSessionHandler extends NativeSessionHandler -{ -public function __construct($savePath = null) -{ -if (null === $savePath) { -$savePath = ini_get('session.save_path'); -} -$baseDir = $savePath; -if ($count = substr_count($savePath,';')) { -if ($count > 2) { -throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'', $savePath)); -} -$baseDir = ltrim(strrchr($savePath,';'),';'); -} -if ($baseDir && !is_dir($baseDir)) { -mkdir($baseDir, 0777, true); -} -ini_set('session.save_path', $savePath); -ini_set('session.save_handler','files'); -} -} -} -namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy -{ -abstract class AbstractProxy -{ -protected $wrapper = false; -protected $active = false; -protected $saveHandlerName; -public function getSaveHandlerName() -{ -return $this->saveHandlerName; -} -public function isSessionHandlerInterface() -{ -return ($this instanceof \SessionHandlerInterface); -} -public function isWrapper() -{ -return $this->wrapper; -} -public function isActive() -{ -if (PHP_VERSION_ID >= 50400) { -return $this->active = \PHP_SESSION_ACTIVE === session_status(); -} -return $this->active; -} -public function setActive($flag) -{ -if (PHP_VERSION_ID >= 50400) { -throw new \LogicException('This method is disabled in PHP 5.4.0+'); -} -$this->active = (bool) $flag; -} -public function getId() -{ -return session_id(); -} -public function setId($id) -{ -if ($this->isActive()) { -throw new \LogicException('Cannot change the ID of an active session'); -} -session_id($id); -} -public function getName() -{ -return session_name(); -} -public function setName($name) -{ -if ($this->isActive()) { -throw new \LogicException('Cannot change the name of an active session'); -} -session_name($name); -} -} -} -namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy -{ -class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterface -{ -protected $handler; -public function __construct(\SessionHandlerInterface $handler) -{ -$this->handler = $handler; -$this->wrapper = ($handler instanceof \SessionHandler); -$this->saveHandlerName = $this->wrapper ? ini_get('session.save_handler') :'user'; -} -public function open($savePath, $sessionName) -{ -$return = (bool) $this->handler->open($savePath, $sessionName); -if (true === $return) { -$this->active = true; -} -return $return; -} -public function close() -{ -$this->active = false; -return (bool) $this->handler->close(); -} -public function read($sessionId) -{ -return (string) $this->handler->read($sessionId); -} -public function write($sessionId, $data) -{ -return (bool) $this->handler->write($sessionId, $data); -} -public function destroy($sessionId) -{ -return (bool) $this->handler->destroy($sessionId); -} -public function gc($maxlifetime) -{ -return (bool) $this->handler->gc($maxlifetime); -} -} -} -namespace Symfony\Component\HttpFoundation\Session -{ -use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; -interface SessionInterface -{ -public function start(); -public function getId(); -public function setId($id); -public function getName(); -public function setName($name); -public function invalidate($lifetime = null); -public function migrate($destroy = false, $lifetime = null); -public function save(); -public function has($name); -public function get($name, $default = null); -public function set($name, $value); -public function all(); -public function replace(array $attributes); -public function remove($name); -public function clear(); -public function isStarted(); -public function registerBag(SessionBagInterface $bag); -public function getBag($name); -public function getMetadataBag(); -} -} -namespace Symfony\Component\HttpFoundation\Session -{ -use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface; -use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag; -use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; -use Symfony\Component\HttpFoundation\Session\Flash\FlashBag; -use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface; -use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; -class Session implements SessionInterface, \IteratorAggregate, \Countable -{ -protected $storage; -private $flashName; -private $attributeName; -public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null) -{ -$this->storage = $storage ?: new NativeSessionStorage(); -$attributes = $attributes ?: new AttributeBag(); -$this->attributeName = $attributes->getName(); -$this->registerBag($attributes); -$flashes = $flashes ?: new FlashBag(); -$this->flashName = $flashes->getName(); -$this->registerBag($flashes); -} -public function start() -{ -return $this->storage->start(); -} -public function has($name) -{ -return $this->storage->getBag($this->attributeName)->has($name); -} -public function get($name, $default = null) -{ -return $this->storage->getBag($this->attributeName)->get($name, $default); -} -public function set($name, $value) -{ -$this->storage->getBag($this->attributeName)->set($name, $value); -} -public function all() -{ -return $this->storage->getBag($this->attributeName)->all(); -} -public function replace(array $attributes) -{ -$this->storage->getBag($this->attributeName)->replace($attributes); -} -public function remove($name) -{ -return $this->storage->getBag($this->attributeName)->remove($name); -} -public function clear() -{ -$this->storage->getBag($this->attributeName)->clear(); -} -public function isStarted() -{ -return $this->storage->isStarted(); -} -public function getIterator() -{ -return new \ArrayIterator($this->storage->getBag($this->attributeName)->all()); -} -public function count() -{ -return count($this->storage->getBag($this->attributeName)->all()); -} -public function invalidate($lifetime = null) -{ -$this->storage->clear(); -return $this->migrate(true, $lifetime); -} -public function migrate($destroy = false, $lifetime = null) -{ -return $this->storage->regenerate($destroy, $lifetime); -} -public function save() -{ -$this->storage->save(); -} -public function getId() -{ -return $this->storage->getId(); -} -public function setId($id) -{ -$this->storage->setId($id); -} -public function getName() -{ -return $this->storage->getName(); -} -public function setName($name) -{ -$this->storage->setName($name); -} -public function getMetadataBag() -{ -return $this->storage->getMetadataBag(); -} -public function registerBag(SessionBagInterface $bag) -{ -$this->storage->registerBag($bag); -} -public function getBag($name) -{ -return $this->storage->getBag($name); -} -public function getFlashBag() -{ -return $this->getBag($this->flashName); -} -} -} -namespace Symfony\Bundle\FrameworkBundle\Templating -{ -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Session\Session; -use Symfony\Component\Security\Core\SecurityContext; -class GlobalVariables -{ -protected $container; -public function __construct(ContainerInterface $container) -{ -$this->container = $container; -} -public function getSecurity() -{ -@trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED); -if ($this->container->has('security.context')) { -return $this->container->get('security.context'); -} -} -public function getUser() -{ -if (!$this->container->has('security.token_storage')) { -return; -} -$tokenStorage = $this->container->get('security.token_storage'); -if (!$token = $tokenStorage->getToken()) { -return; -} -$user = $token->getUser(); -if (!is_object($user)) { -return; -} -return $user; -} -public function getRequest() -{ -if ($this->container->has('request_stack')) { -return $this->container->get('request_stack')->getCurrentRequest(); -} -} -public function getSession() -{ -if ($request = $this->getRequest()) { -return $request->getSession(); -} -} -public function getEnvironment() -{ -return $this->container->getParameter('kernel.environment'); -} -public function getDebug() -{ -return (bool) $this->container->getParameter('kernel.debug'); -} -} -} -namespace Symfony\Component\Templating -{ -interface TemplateReferenceInterface -{ -public function all(); -public function set($name, $value); -public function get($name); -public function getPath(); -public function getLogicalName(); -public function __toString(); -} -} -namespace Symfony\Component\Templating -{ -class TemplateReference implements TemplateReferenceInterface -{ -protected $parameters; -public function __construct($name = null, $engine = null) -{ -$this->parameters = array('name'=> $name,'engine'=> $engine, -); -} -public function __toString() -{ -return $this->getLogicalName(); -} -public function set($name, $value) -{ -if (array_key_exists($name, $this->parameters)) { -$this->parameters[$name] = $value; -} else { -throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name)); -} -return $this; -} -public function get($name) -{ -if (array_key_exists($name, $this->parameters)) { -return $this->parameters[$name]; -} -throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name)); -} -public function all() -{ -return $this->parameters; -} -public function getPath() -{ -return $this->parameters['name']; -} -public function getLogicalName() -{ -return $this->parameters['name']; -} -} -} -namespace Symfony\Bundle\FrameworkBundle\Templating -{ -use Symfony\Component\Templating\TemplateReference as BaseTemplateReference; -class TemplateReference extends BaseTemplateReference -{ -public function __construct($bundle = null, $controller = null, $name = null, $format = null, $engine = null) -{ -$this->parameters = array('bundle'=> $bundle,'controller'=> $controller,'name'=> $name,'format'=> $format,'engine'=> $engine, -); -} -public function getPath() -{ -$controller = str_replace('\\','/', $this->get('controller')); -$path = (empty($controller) ?'': $controller.'/').$this->get('name').'.'.$this->get('format').'.'.$this->get('engine'); -return empty($this->parameters['bundle']) ?'views/'.$path :'@'.$this->get('bundle').'/Resources/views/'.$path; -} -public function getLogicalName() -{ -return sprintf('%s:%s:%s.%s.%s', $this->parameters['bundle'], $this->parameters['controller'], $this->parameters['name'], $this->parameters['format'], $this->parameters['engine']); -} -} -} -namespace Symfony\Component\Templating -{ -interface TemplateNameParserInterface -{ -public function parse($name); -} -} -namespace Symfony\Component\Templating -{ -class TemplateNameParser implements TemplateNameParserInterface -{ -public function parse($name) -{ -if ($name instanceof TemplateReferenceInterface) { -return $name; -} -$engine = null; -if (false !== $pos = strrpos($name,'.')) { -$engine = substr($name, $pos + 1); -} -return new TemplateReference($name, $engine); -} -} -} -namespace Symfony\Bundle\FrameworkBundle\Templating -{ -use Symfony\Component\Templating\TemplateReferenceInterface; -use Symfony\Component\HttpKernel\KernelInterface; -use Symfony\Component\Templating\TemplateNameParser as BaseTemplateNameParser; -class TemplateNameParser extends BaseTemplateNameParser -{ -protected $kernel; -protected $cache = array(); -public function __construct(KernelInterface $kernel) -{ -$this->kernel = $kernel; -} -public function parse($name) -{ -if ($name instanceof TemplateReferenceInterface) { -return $name; -} elseif (isset($this->cache[$name])) { -return $this->cache[$name]; -} -$name = str_replace(':/',':', preg_replace('#/{2,}#','/', str_replace('\\','/', $name))); -if (false !== strpos($name,'..')) { -throw new \RuntimeException(sprintf('Template name "%s" contains invalid characters.', $name)); -} -if (!preg_match('/^([^:]*):([^:]*):(.+)\.([^\.]+)\.([^\.]+)$/', $name, $matches)) { -return parent::parse($name); -} -$template = new TemplateReference($matches[1], $matches[2], $matches[3], $matches[4], $matches[5]); -if ($template->get('bundle')) { -try { -$this->kernel->getBundle($template->get('bundle')); -} catch (\Exception $e) { -throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid.', $name), 0, $e); -} -} -return $this->cache[$name] = $template; -} -} -} -namespace Symfony\Component\Config -{ -interface FileLocatorInterface -{ -public function locate($name, $currentPath = null, $first = true); -} -} -namespace Symfony\Bundle\FrameworkBundle\Templating\Loader -{ -use Symfony\Component\Config\FileLocatorInterface; -use Symfony\Component\Templating\TemplateReferenceInterface; -class TemplateLocator implements FileLocatorInterface -{ -protected $locator; -protected $cache; -public function __construct(FileLocatorInterface $locator, $cacheDir = null) -{ -if (null !== $cacheDir && is_file($cache = $cacheDir.'/templates.php')) { -$this->cache = require $cache; -} -$this->locator = $locator; -} -protected function getCacheKey($template) -{ -return $template->getLogicalName(); -} -public function locate($template, $currentPath = null, $first = true) -{ -if (!$template instanceof TemplateReferenceInterface) { -throw new \InvalidArgumentException('The template must be an instance of TemplateReferenceInterface.'); -} -$key = $this->getCacheKey($template); -if (isset($this->cache[$key])) { -return $this->cache[$key]; -} -try { -return $this->cache[$key] = $this->locator->locate($template->getPath(), $currentPath); -} catch (\InvalidArgumentException $e) { -throw new \InvalidArgumentException(sprintf('Unable to find template "%s" : "%s".', $template, $e->getMessage()), 0, $e); -} -} -} -} -namespace Symfony\Component\Routing -{ -interface RequestContextAwareInterface -{ -public function setContext(RequestContext $context); -public function getContext(); -} -} -namespace Symfony\Component\Routing\Generator -{ -use Symfony\Component\Routing\Exception\InvalidParameterException; -use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; -use Symfony\Component\Routing\Exception\RouteNotFoundException; -use Symfony\Component\Routing\RequestContextAwareInterface; -interface UrlGeneratorInterface extends RequestContextAwareInterface -{ -const ABSOLUTE_URL = true; -const ABSOLUTE_PATH = false; -const RELATIVE_PATH ='relative'; -const NETWORK_PATH ='network'; -public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH); -} -} -namespace Symfony\Component\Routing\Generator -{ -interface ConfigurableRequirementsInterface -{ -public function setStrictRequirements($enabled); -public function isStrictRequirements(); -} -} -namespace Symfony\Component\Routing\Generator -{ -use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RequestContext; -use Symfony\Component\Routing\Exception\InvalidParameterException; -use Symfony\Component\Routing\Exception\RouteNotFoundException; -use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; -use Psr\Log\LoggerInterface; -class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInterface -{ -protected $routes; -protected $context; -protected $strictRequirements = true; -protected $logger; -protected $decodedChars = array('%2F'=>'/','%40'=>'@','%3A'=>':','%3B'=>';','%2C'=>',','%3D'=>'=','%2B'=>'+','%21'=>'!','%2A'=>'*','%7C'=>'|', -); -public function __construct(RouteCollection $routes, RequestContext $context, LoggerInterface $logger = null) -{ -$this->routes = $routes; -$this->context = $context; -$this->logger = $logger; -} -public function setContext(RequestContext $context) -{ -$this->context = $context; -} -public function getContext() -{ -return $this->context; -} -public function setStrictRequirements($enabled) -{ -$this->strictRequirements = null === $enabled ? null : (bool) $enabled; -} -public function isStrictRequirements() -{ -return $this->strictRequirements; -} -public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) -{ -if (null === $route = $this->routes->get($name)) { -throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); -} -$compiledRoute = $route->compile(); -return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes()); -} -protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = array()) -{ -$variables = array_flip($variables); -$mergedParams = array_replace($defaults, $this->context->getParameters(), $parameters); -if ($diff = array_diff_key($variables, $mergedParams)) { -throw new MissingMandatoryParametersException(sprintf('Some mandatory parameters are missing ("%s") to generate a URL for route "%s".', implode('", "', array_keys($diff)), $name)); -} -$url =''; -$optional = true; -foreach ($tokens as $token) { -if ('variable'=== $token[0]) { -if (!$optional || !array_key_exists($token[3], $defaults) || null !== $mergedParams[$token[3]] && (string) $mergedParams[$token[3]] !== (string) $defaults[$token[3]]) { -if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#', $mergedParams[$token[3]])) { -$message = sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given) to generate a corresponding URL.', $token[3], $name, $token[2], $mergedParams[$token[3]]); -if ($this->strictRequirements) { -throw new InvalidParameterException($message); -} -if ($this->logger) { -$this->logger->error($message); -} -return; -} -$url = $token[1].$mergedParams[$token[3]].$url; -$optional = false; -} -} else { -$url = $token[1].$url; -$optional = false; -} -} -if (''=== $url) { -$url ='/'; -} -$url = strtr(rawurlencode($url), $this->decodedChars); -$url = strtr($url, array('/../'=>'/%2E%2E/','/./'=>'/%2E/')); -if ('/..'=== substr($url, -3)) { -$url = substr($url, 0, -2).'%2E%2E'; -} elseif ('/.'=== substr($url, -2)) { -$url = substr($url, 0, -1).'%2E'; -} -$schemeAuthority =''; -if ($host = $this->context->getHost()) { -$scheme = $this->context->getScheme(); -if ($requiredSchemes) { -$schemeMatched = false; -foreach ($requiredSchemes as $requiredScheme) { -if ($scheme === $requiredScheme) { -$schemeMatched = true; -break; -} -} -if (!$schemeMatched) { -$referenceType = self::ABSOLUTE_URL; -$scheme = current($requiredSchemes); -} -} elseif (isset($requirements['_scheme']) && ($req = strtolower($requirements['_scheme'])) && $scheme !== $req) { -$referenceType = self::ABSOLUTE_URL; -$scheme = $req; -} -if ($hostTokens) { -$routeHost =''; -foreach ($hostTokens as $token) { -if ('variable'=== $token[0]) { -if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#i', $mergedParams[$token[3]])) { -$message = sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given) to generate a corresponding URL.', $token[3], $name, $token[2], $mergedParams[$token[3]]); -if ($this->strictRequirements) { -throw new InvalidParameterException($message); -} -if ($this->logger) { -$this->logger->error($message); -} -return; -} -$routeHost = $token[1].$mergedParams[$token[3]].$routeHost; -} else { -$routeHost = $token[1].$routeHost; -} -} -if ($routeHost !== $host) { -$host = $routeHost; -if (self::ABSOLUTE_URL !== $referenceType) { -$referenceType = self::NETWORK_PATH; -} -} -} -if (self::ABSOLUTE_URL === $referenceType || self::NETWORK_PATH === $referenceType) { -$port =''; -if ('http'=== $scheme && 80 != $this->context->getHttpPort()) { -$port =':'.$this->context->getHttpPort(); -} elseif ('https'=== $scheme && 443 != $this->context->getHttpsPort()) { -$port =':'.$this->context->getHttpsPort(); -} -$schemeAuthority = self::NETWORK_PATH === $referenceType ?'//': "$scheme://"; -$schemeAuthority .= $host.$port; -} -} -if (self::RELATIVE_PATH === $referenceType) { -$url = self::getRelativePath($this->context->getPathInfo(), $url); -} else { -$url = $schemeAuthority.$this->context->getBaseUrl().$url; -} -$extra = array_diff_key($parameters, $variables, $defaults); -if ($extra && $query = http_build_query($extra,'','&')) { -$url .='?'.strtr($query, array('%2F'=>'/')); -} -return $url; -} -public static function getRelativePath($basePath, $targetPath) -{ -if ($basePath === $targetPath) { -return''; -} -$sourceDirs = explode('/', isset($basePath[0]) &&'/'=== $basePath[0] ? substr($basePath, 1) : $basePath); -$targetDirs = explode('/', isset($targetPath[0]) &&'/'=== $targetPath[0] ? substr($targetPath, 1) : $targetPath); -array_pop($sourceDirs); -$targetFile = array_pop($targetDirs); -foreach ($sourceDirs as $i => $dir) { -if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) { -unset($sourceDirs[$i], $targetDirs[$i]); -} else { -break; -} -} -$targetDirs[] = $targetFile; -$path = str_repeat('../', count($sourceDirs)).implode('/', $targetDirs); -return''=== $path ||'/'=== $path[0] -|| false !== ($colonPos = strpos($path,':')) && ($colonPos < ($slashPos = strpos($path,'/')) || false === $slashPos) -? "./$path" : $path; -} -} -} -namespace Symfony\Component\Routing -{ -use Symfony\Component\HttpFoundation\Request; -class RequestContext -{ -private $baseUrl; -private $pathInfo; -private $method; -private $host; -private $scheme; -private $httpPort; -private $httpsPort; -private $queryString; -private $parameters = array(); -public function __construct($baseUrl ='', $method ='GET', $host ='localhost', $scheme ='http', $httpPort = 80, $httpsPort = 443, $path ='/', $queryString ='') -{ -$this->setBaseUrl($baseUrl); -$this->setMethod($method); -$this->setHost($host); -$this->setScheme($scheme); -$this->setHttpPort($httpPort); -$this->setHttpsPort($httpsPort); -$this->setPathInfo($path); -$this->setQueryString($queryString); -} -public function fromRequest(Request $request) -{ -$this->setBaseUrl($request->getBaseUrl()); -$this->setPathInfo($request->getPathInfo()); -$this->setMethod($request->getMethod()); -$this->setHost($request->getHost()); -$this->setScheme($request->getScheme()); -$this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort()); -$this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort); -$this->setQueryString($request->server->get('QUERY_STRING','')); -return $this; -} -public function getBaseUrl() -{ -return $this->baseUrl; -} -public function setBaseUrl($baseUrl) -{ -$this->baseUrl = $baseUrl; -return $this; -} -public function getPathInfo() -{ -return $this->pathInfo; -} -public function setPathInfo($pathInfo) -{ -$this->pathInfo = $pathInfo; -return $this; -} -public function getMethod() -{ -return $this->method; -} -public function setMethod($method) -{ -$this->method = strtoupper($method); -return $this; -} -public function getHost() -{ -return $this->host; -} -public function setHost($host) -{ -$this->host = strtolower($host); -return $this; -} -public function getScheme() -{ -return $this->scheme; -} -public function setScheme($scheme) -{ -$this->scheme = strtolower($scheme); -return $this; -} -public function getHttpPort() -{ -return $this->httpPort; -} -public function setHttpPort($httpPort) -{ -$this->httpPort = (int) $httpPort; -return $this; -} -public function getHttpsPort() -{ -return $this->httpsPort; -} -public function setHttpsPort($httpsPort) -{ -$this->httpsPort = (int) $httpsPort; -return $this; -} -public function getQueryString() -{ -return $this->queryString; -} -public function setQueryString($queryString) -{ -$this->queryString = (string) $queryString; -return $this; -} -public function getParameters() -{ -return $this->parameters; -} -public function setParameters(array $parameters) -{ -$this->parameters = $parameters; -return $this; -} -public function getParameter($name) -{ -return isset($this->parameters[$name]) ? $this->parameters[$name] : null; -} -public function hasParameter($name) -{ -return array_key_exists($name, $this->parameters); -} -public function setParameter($name, $parameter) -{ -$this->parameters[$name] = $parameter; -return $this; -} -} -} -namespace Symfony\Component\Routing\Matcher -{ -use Symfony\Component\Routing\RequestContextAwareInterface; -use Symfony\Component\Routing\Exception\ResourceNotFoundException; -use Symfony\Component\Routing\Exception\MethodNotAllowedException; -interface UrlMatcherInterface extends RequestContextAwareInterface -{ -public function match($pathinfo); -} -} -namespace Symfony\Component\Routing -{ -use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Routing\Matcher\UrlMatcherInterface; -interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface -{ -public function getRouteCollection(); -} -} -namespace Symfony\Component\Routing\Matcher -{ -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\Routing\Exception\ResourceNotFoundException; -use Symfony\Component\Routing\Exception\MethodNotAllowedException; -interface RequestMatcherInterface -{ -public function matchRequest(Request $request); -} -} -namespace Symfony\Component\Routing -{ -use Symfony\Component\Config\Loader\LoaderInterface; -use Symfony\Component\Config\ConfigCacheInterface; -use Symfony\Component\Config\ConfigCacheFactoryInterface; -use Symfony\Component\Config\ConfigCacheFactory; -use Psr\Log\LoggerInterface; -use Symfony\Component\Routing\Generator\ConfigurableRequirementsInterface; -use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Routing\Generator\Dumper\GeneratorDumperInterface; -use Symfony\Component\Routing\Matcher\RequestMatcherInterface; -use Symfony\Component\Routing\Matcher\UrlMatcherInterface; -use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; -class Router implements RouterInterface, RequestMatcherInterface -{ -protected $matcher; -protected $generator; -protected $context; -protected $loader; -protected $collection; -protected $resource; -protected $options = array(); -protected $logger; -private $configCacheFactory; -private $expressionLanguageProviders = array(); -public function __construct(LoaderInterface $loader, $resource, array $options = array(), RequestContext $context = null, LoggerInterface $logger = null) -{ -$this->loader = $loader; -$this->resource = $resource; -$this->logger = $logger; -$this->context = $context ?: new RequestContext(); -$this->setOptions($options); -} -public function setOptions(array $options) -{ -$this->options = array('cache_dir'=> null,'debug'=> false,'generator_class'=>'Symfony\\Component\\Routing\\Generator\\UrlGenerator','generator_base_class'=>'Symfony\\Component\\Routing\\Generator\\UrlGenerator','generator_dumper_class'=>'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper','generator_cache_class'=>'ProjectUrlGenerator','matcher_class'=>'Symfony\\Component\\Routing\\Matcher\\UrlMatcher','matcher_base_class'=>'Symfony\\Component\\Routing\\Matcher\\UrlMatcher','matcher_dumper_class'=>'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper','matcher_cache_class'=>'ProjectUrlMatcher','resource_type'=> null,'strict_requirements'=> true, -); -$invalid = array(); -foreach ($options as $key => $value) { -if (array_key_exists($key, $this->options)) { -$this->options[$key] = $value; -} else { -$invalid[] = $key; -} -} -if ($invalid) { -throw new \InvalidArgumentException(sprintf('The Router does not support the following options: "%s".', implode('", "', $invalid))); -} -} -public function setOption($key, $value) -{ -if (!array_key_exists($key, $this->options)) { -throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); -} -$this->options[$key] = $value; -} -public function getOption($key) -{ -if (!array_key_exists($key, $this->options)) { -throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); -} -return $this->options[$key]; -} -public function getRouteCollection() -{ -if (null === $this->collection) { -$this->collection = $this->loader->load($this->resource, $this->options['resource_type']); -} -return $this->collection; -} -public function setContext(RequestContext $context) -{ -$this->context = $context; -if (null !== $this->matcher) { -$this->getMatcher()->setContext($context); -} -if (null !== $this->generator) { -$this->getGenerator()->setContext($context); -} -} -public function getContext() -{ -return $this->context; -} -public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory) -{ -$this->configCacheFactory = $configCacheFactory; -} -public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) -{ -return $this->getGenerator()->generate($name, $parameters, $referenceType); -} -public function match($pathinfo) -{ -return $this->getMatcher()->match($pathinfo); -} -public function matchRequest(Request $request) -{ -$matcher = $this->getMatcher(); -if (!$matcher instanceof RequestMatcherInterface) { -return $matcher->match($request->getPathInfo()); -} -return $matcher->matchRequest($request); -} -public function getMatcher() -{ -if (null !== $this->matcher) { -return $this->matcher; -} -if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) { -$this->matcher = new $this->options['matcher_class']($this->getRouteCollection(), $this->context); -if (method_exists($this->matcher,'addExpressionLanguageProvider')) { -foreach ($this->expressionLanguageProviders as $provider) { -$this->matcher->addExpressionLanguageProvider($provider); -} -} -return $this->matcher; -} -$class = $this->options['matcher_cache_class']; -$baseClass = $this->options['matcher_base_class']; -$expressionLanguageProviders = $this->expressionLanguageProviders; -$that = $this; -$cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$class.'.php', -function (ConfigCacheInterface $cache) use ($that, $class, $baseClass, $expressionLanguageProviders) { -$dumper = $that->getMatcherDumperInstance(); -if (method_exists($dumper,'addExpressionLanguageProvider')) { -foreach ($expressionLanguageProviders as $provider) { -$dumper->addExpressionLanguageProvider($provider); -} -} -$options = array('class'=> $class,'base_class'=> $baseClass, -); -$cache->write($dumper->dump($options), $that->getRouteCollection()->getResources()); -} -); -require_once $cache->getPath(); -return $this->matcher = new $class($this->context); -} -public function getGenerator() -{ -if (null !== $this->generator) { -return $this->generator; -} -if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) { -$this->generator = new $this->options['generator_class']($this->getRouteCollection(), $this->context, $this->logger); -} else { -$class = $this->options['generator_cache_class']; -$baseClass = $this->options['generator_base_class']; -$that = $this; $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$class.'.php', -function (ConfigCacheInterface $cache) use ($that, $class, $baseClass) { -$dumper = $that->getGeneratorDumperInstance(); -$options = array('class'=> $class,'base_class'=> $baseClass, -); -$cache->write($dumper->dump($options), $that->getRouteCollection()->getResources()); -} -); -require_once $cache->getPath(); -$this->generator = new $class($this->context, $this->logger); -} -if ($this->generator instanceof ConfigurableRequirementsInterface) { -$this->generator->setStrictRequirements($this->options['strict_requirements']); -} -return $this->generator; -} -public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) -{ -$this->expressionLanguageProviders[] = $provider; -} -public function getGeneratorDumperInstance() -{ -return new $this->options['generator_dumper_class']($this->getRouteCollection()); -} -public function getMatcherDumperInstance() -{ -return new $this->options['matcher_dumper_class']($this->getRouteCollection()); -} -private function getConfigCacheFactory() -{ -if (null === $this->configCacheFactory) { -$this->configCacheFactory = new ConfigCacheFactory($this->options['debug']); -} -return $this->configCacheFactory; -} -} -} -namespace Symfony\Component\Routing\Matcher -{ -interface RedirectableUrlMatcherInterface -{ -public function redirect($path, $route, $scheme = null); -} -} -namespace Symfony\Component\Routing\Matcher -{ -use Symfony\Component\Routing\Exception\MethodNotAllowedException; -use Symfony\Component\Routing\Exception\ResourceNotFoundException; -use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RequestContext; -use Symfony\Component\Routing\Route; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\ExpressionLanguage\ExpressionLanguage; -use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; -class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface -{ -const REQUIREMENT_MATCH = 0; -const REQUIREMENT_MISMATCH = 1; -const ROUTE_MATCH = 2; -protected $context; -protected $allow = array(); -protected $routes; -protected $request; -protected $expressionLanguage; -protected $expressionLanguageProviders = array(); -public function __construct(RouteCollection $routes, RequestContext $context) -{ -$this->routes = $routes; -$this->context = $context; -} -public function setContext(RequestContext $context) -{ -$this->context = $context; -} -public function getContext() -{ -return $this->context; -} -public function match($pathinfo) -{ -$this->allow = array(); -if ($ret = $this->matchCollection(rawurldecode($pathinfo), $this->routes)) { -return $ret; -} -throw 0 < count($this->allow) -? new MethodNotAllowedException(array_unique($this->allow)) -: new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo)); -} -public function matchRequest(Request $request) -{ -$this->request = $request; -$ret = $this->match($request->getPathInfo()); -$this->request = null; -return $ret; -} -public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) -{ -$this->expressionLanguageProviders[] = $provider; -} -protected function matchCollection($pathinfo, RouteCollection $routes) -{ -foreach ($routes as $name => $route) { -$compiledRoute = $route->compile(); -if (''!== $compiledRoute->getStaticPrefix() && 0 !== strpos($pathinfo, $compiledRoute->getStaticPrefix())) { -continue; -} -if (!preg_match($compiledRoute->getRegex(), $pathinfo, $matches)) { -continue; -} -$hostMatches = array(); -if ($compiledRoute->getHostRegex() && !preg_match($compiledRoute->getHostRegex(), $this->context->getHost(), $hostMatches)) { -continue; -} -if ($requiredMethods = $route->getMethods()) { -if ('HEAD'=== $method = $this->context->getMethod()) { -$method ='GET'; -} -if (!in_array($method, $requiredMethods)) { -$this->allow = array_merge($this->allow, $requiredMethods); -continue; -} -} -$status = $this->handleRouteRequirements($pathinfo, $name, $route); -if (self::ROUTE_MATCH === $status[0]) { -return $status[1]; -} -if (self::REQUIREMENT_MISMATCH === $status[0]) { -continue; -} -return $this->getAttributes($route, $name, array_replace($matches, $hostMatches)); -} -} -protected function getAttributes(Route $route, $name, array $attributes) -{ -$attributes['_route'] = $name; -return $this->mergeDefaults($attributes, $route->getDefaults()); -} -protected function handleRouteRequirements($pathinfo, $name, Route $route) -{ -if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context'=> $this->context,'request'=> $this->request))) { -return array(self::REQUIREMENT_MISMATCH, null); -} -$scheme = $this->context->getScheme(); -$status = $route->getSchemes() && !$route->hasScheme($scheme) ? self::REQUIREMENT_MISMATCH : self::REQUIREMENT_MATCH; -return array($status, null); -} -protected function mergeDefaults($params, $defaults) -{ -foreach ($params as $key => $value) { -if (!is_int($key)) { -$defaults[$key] = $value; -} -} -return $defaults; -} -protected function getExpressionLanguage() -{ -if (null === $this->expressionLanguage) { -if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { -throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); -} -$this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders); -} -return $this->expressionLanguage; -} -} -} -namespace Symfony\Component\Routing\Matcher -{ -use Symfony\Component\Routing\Exception\ResourceNotFoundException; -use Symfony\Component\Routing\Route; -abstract class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface -{ -public function match($pathinfo) -{ -try { -$parameters = parent::match($pathinfo); -} catch (ResourceNotFoundException $e) { -if ('/'=== substr($pathinfo, -1) || !in_array($this->context->getMethod(), array('HEAD','GET'))) { -throw $e; -} -try { -parent::match($pathinfo.'/'); -return $this->redirect($pathinfo.'/', null); -} catch (ResourceNotFoundException $e2) { -throw $e; -} -} -return $parameters; -} -protected function handleRouteRequirements($pathinfo, $name, Route $route) -{ -if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context'=> $this->context,'request'=> $this->request))) { -return array(self::REQUIREMENT_MISMATCH, null); -} -$scheme = $this->context->getScheme(); -$schemes = $route->getSchemes(); -if ($schemes && !$route->hasScheme($scheme)) { -return array(self::ROUTE_MATCH, $this->redirect($pathinfo, $name, current($schemes))); -} -return array(self::REQUIREMENT_MATCH, null); -} -} -} -namespace Symfony\Bundle\FrameworkBundle\Routing -{ -use Symfony\Component\Routing\Matcher\RedirectableUrlMatcher as BaseMatcher; -class RedirectableUrlMatcher extends BaseMatcher -{ -public function redirect($path, $route, $scheme = null) -{ -return array('_controller'=>'Symfony\\Bundle\\FrameworkBundle\\Controller\\RedirectController::urlRedirectAction','path'=> $path,'permanent'=> true,'scheme'=> $scheme,'httpPort'=> $this->context->getHttpPort(),'httpsPort'=> $this->context->getHttpsPort(),'_route'=> $route, -); -} -} -} -namespace Symfony\Component\HttpKernel\CacheWarmer -{ -interface WarmableInterface -{ -public function warmUp($cacheDir); -} -} -namespace Symfony\Bundle\FrameworkBundle\Routing -{ -use Symfony\Component\Routing\Router as BaseRouter; -use Symfony\Component\Routing\RequestContext; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface; -use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; -use Symfony\Component\DependencyInjection\Exception\RuntimeException; -class Router extends BaseRouter implements WarmableInterface -{ -private $container; -public function __construct(ContainerInterface $container, $resource, array $options = array(), RequestContext $context = null) -{ -$this->container = $container; -$this->resource = $resource; -$this->context = $context ?: new RequestContext(); -$this->setOptions($options); -} -public function getRouteCollection() -{ -if (null === $this->collection) { -$this->collection = $this->container->get('routing.loader')->load($this->resource, $this->options['resource_type']); -$this->resolveParameters($this->collection); -} -return $this->collection; -} -public function warmUp($cacheDir) -{ -$currentDir = $this->getOption('cache_dir'); -$this->setOption('cache_dir', $cacheDir); -$this->getMatcher(); -$this->getGenerator(); -$this->setOption('cache_dir', $currentDir); -} -private function resolveParameters(RouteCollection $collection) -{ -foreach ($collection as $route) { -foreach ($route->getDefaults() as $name => $value) { -$route->setDefault($name, $this->resolve($value)); -} -foreach ($route->getRequirements() as $name => $value) { -if ('_scheme'=== $name ||'_method'=== $name) { -continue; } -$route->setRequirement($name, $this->resolve($value)); -} -$route->setPath($this->resolve($route->getPath())); -$route->setHost($this->resolve($route->getHost())); -$schemes = array(); -foreach ($route->getSchemes() as $scheme) { -$schemes = array_merge($schemes, explode('|', $this->resolve($scheme))); -} -$route->setSchemes($schemes); -$methods = array(); -foreach ($route->getMethods() as $method) { -$methods = array_merge($methods, explode('|', $this->resolve($method))); -} -$route->setMethods($methods); -$route->setCondition($this->resolve($route->getCondition())); -} -} -private function resolve($value) -{ -if (is_array($value)) { -foreach ($value as $key => $val) { -$value[$key] = $this->resolve($val); -} -return $value; -} -if (!is_string($value)) { -return $value; -} -$container = $this->container; -$escapedValue = preg_replace_callback('/%%|%([^%\s]++)%/', function ($match) use ($container, $value) { -if (!isset($match[1])) { -return'%%'; -} -$resolved = $container->getParameter($match[1]); -if (is_string($resolved) || is_numeric($resolved)) { -return (string) $resolved; -} -throw new RuntimeException(sprintf('The container parameter "%s", used in the route configuration value "%s", '.'must be a string or numeric, but it is of type %s.', -$match[1], -$value, -gettype($resolved) -) -); -}, $value); -return str_replace('%%','%', $escapedValue); -} -} -} -namespace Symfony\Component\Config -{ -class FileLocator implements FileLocatorInterface -{ -protected $paths; -public function __construct($paths = array()) -{ -$this->paths = (array) $paths; -} -public function locate($name, $currentPath = null, $first = true) -{ -if (''== $name) { -throw new \InvalidArgumentException('An empty file name is not valid to be located.'); -} -if ($this->isAbsolutePath($name)) { -if (!file_exists($name)) { -throw new \InvalidArgumentException(sprintf('The file "%s" does not exist.', $name)); -} -return $name; -} -$paths = $this->paths; -if (null !== $currentPath) { -array_unshift($paths, $currentPath); -} -$paths = array_unique($paths); -$filepaths = array(); -foreach ($paths as $path) { -if (file_exists($file = $path.DIRECTORY_SEPARATOR.$name)) { -if (true === $first) { -return $file; -} -$filepaths[] = $file; -} -} -if (!$filepaths) { -throw new \InvalidArgumentException(sprintf('The file "%s" does not exist (in: %s).', $name, implode(', ', $paths))); -} -return $filepaths; -} -private function isAbsolutePath($file) -{ -if ($file[0] ==='/'|| $file[0] ==='\\'|| (strlen($file) > 3 && ctype_alpha($file[0]) -&& $file[1] ===':'&& ($file[2] ==='\\'|| $file[2] ==='/') -) -|| null !== parse_url($file, PHP_URL_SCHEME) -) { -return true; -} -return false; -} -} -} -namespace Symfony\Component\EventDispatcher -{ -class Event -{ -private $propagationStopped = false; -private $dispatcher; -private $name; -public function isPropagationStopped() -{ -return $this->propagationStopped; -} -public function stopPropagation() -{ -$this->propagationStopped = true; -} -public function setDispatcher(EventDispatcherInterface $dispatcher) -{ -$this->dispatcher = $dispatcher; -} -public function getDispatcher() -{ -@trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0. The event dispatcher instance can be received in the listener call instead.', E_USER_DEPRECATED); -return $this->dispatcher; -} -public function getName() -{ -@trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0. The event name can be received in the listener call instead.', E_USER_DEPRECATED); -return $this->name; -} -public function setName($name) -{ -$this->name = $name; -} -} -} -namespace Symfony\Component\EventDispatcher -{ -interface EventDispatcherInterface -{ -public function dispatch($eventName, Event $event = null); -public function addListener($eventName, $listener, $priority = 0); -public function addSubscriber(EventSubscriberInterface $subscriber); -public function removeListener($eventName, $listener); -public function removeSubscriber(EventSubscriberInterface $subscriber); -public function getListeners($eventName = null); -public function hasListeners($eventName = null); -} -} -namespace Symfony\Component\EventDispatcher -{ -class EventDispatcher implements EventDispatcherInterface -{ -private $listeners = array(); -private $sorted = array(); -public function dispatch($eventName, Event $event = null) -{ -if (null === $event) { -$event = new Event(); -} -$event->setDispatcher($this); -$event->setName($eventName); -if ($listeners = $this->getListeners($eventName)) { -$this->doDispatch($listeners, $eventName, $event); -} -return $event; -} -public function getListeners($eventName = null) -{ -if (null !== $eventName) { -if (!isset($this->listeners[$eventName])) { -return array(); -} -if (!isset($this->sorted[$eventName])) { -$this->sortListeners($eventName); -} -return $this->sorted[$eventName]; -} -foreach ($this->listeners as $eventName => $eventListeners) { -if (!isset($this->sorted[$eventName])) { -$this->sortListeners($eventName); -} -} -return array_filter($this->sorted); -} -public function hasListeners($eventName = null) -{ -return (bool) count($this->getListeners($eventName)); -} -public function addListener($eventName, $listener, $priority = 0) -{ -$this->listeners[$eventName][$priority][] = $listener; -unset($this->sorted[$eventName]); -} -public function removeListener($eventName, $listener) -{ -if (!isset($this->listeners[$eventName])) { -return; -} -foreach ($this->listeners[$eventName] as $priority => $listeners) { -if (false !== ($key = array_search($listener, $listeners, true))) { -unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]); -} -} -} -public function addSubscriber(EventSubscriberInterface $subscriber) -{ -foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { -if (is_string($params)) { -$this->addListener($eventName, array($subscriber, $params)); -} elseif (is_string($params[0])) { -$this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); -} else { -foreach ($params as $listener) { -$this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0); -} -} -} -} -public function removeSubscriber(EventSubscriberInterface $subscriber) -{ -foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { -if (is_array($params) && is_array($params[0])) { -foreach ($params as $listener) { -$this->removeListener($eventName, array($subscriber, $listener[0])); -} -} else { -$this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0])); -} -} -} -protected function doDispatch($listeners, $eventName, Event $event) -{ -foreach ($listeners as $listener) { -call_user_func($listener, $event, $eventName, $this); -if ($event->isPropagationStopped()) { -break; -} -} -} -private function sortListeners($eventName) -{ -$this->sorted[$eventName] = array(); -krsort($this->listeners[$eventName]); -$this->sorted[$eventName] = call_user_func_array('array_merge', $this->listeners[$eventName]); -} -} -} -namespace Symfony\Component\EventDispatcher -{ -use Symfony\Component\DependencyInjection\ContainerInterface; -class ContainerAwareEventDispatcher extends EventDispatcher -{ -private $container; -private $listenerIds = array(); -private $listeners = array(); -public function __construct(ContainerInterface $container) -{ -$this->container = $container; -} -public function addListenerService($eventName, $callback, $priority = 0) -{ -if (!is_array($callback) || 2 !== count($callback)) { -throw new \InvalidArgumentException('Expected an array("service", "method") argument'); -} -$this->listenerIds[$eventName][] = array($callback[0], $callback[1], $priority); -} -public function removeListener($eventName, $listener) -{ -$this->lazyLoad($eventName); -if (isset($this->listenerIds[$eventName])) { -foreach ($this->listenerIds[$eventName] as $i => $args) { -list($serviceId, $method, $priority) = $args; -$key = $serviceId.'.'.$method; -if (isset($this->listeners[$eventName][$key]) && $listener === array($this->listeners[$eventName][$key], $method)) { -unset($this->listeners[$eventName][$key]); -if (empty($this->listeners[$eventName])) { -unset($this->listeners[$eventName]); -} -unset($this->listenerIds[$eventName][$i]); -if (empty($this->listenerIds[$eventName])) { -unset($this->listenerIds[$eventName]); -} -} -} -} -parent::removeListener($eventName, $listener); -} -public function hasListeners($eventName = null) -{ -if (null === $eventName) { -return (bool) count($this->listenerIds) || (bool) count($this->listeners); -} -if (isset($this->listenerIds[$eventName])) { -return true; -} -return parent::hasListeners($eventName); -} -public function getListeners($eventName = null) -{ -if (null === $eventName) { -foreach ($this->listenerIds as $serviceEventName => $args) { -$this->lazyLoad($serviceEventName); -} -} else { -$this->lazyLoad($eventName); -} -return parent::getListeners($eventName); -} -public function addSubscriberService($serviceId, $class) -{ -foreach ($class::getSubscribedEvents() as $eventName => $params) { -if (is_string($params)) { -$this->listenerIds[$eventName][] = array($serviceId, $params, 0); -} elseif (is_string($params[0])) { -$this->listenerIds[$eventName][] = array($serviceId, $params[0], isset($params[1]) ? $params[1] : 0); -} else { -foreach ($params as $listener) { -$this->listenerIds[$eventName][] = array($serviceId, $listener[0], isset($listener[1]) ? $listener[1] : 0); -} -} -} -} -public function getContainer() -{ -return $this->container; -} -protected function lazyLoad($eventName) -{ -if (isset($this->listenerIds[$eventName])) { -foreach ($this->listenerIds[$eventName] as $args) { -list($serviceId, $method, $priority) = $args; -$listener = $this->container->get($serviceId); -$key = $serviceId.'.'.$method; -if (!isset($this->listeners[$eventName][$key])) { -$this->addListener($eventName, array($listener, $method), $priority); -} elseif ($listener !== $this->listeners[$eventName][$key]) { -parent::removeListener($eventName, array($this->listeners[$eventName][$key], $method)); -$this->addListener($eventName, array($listener, $method), $priority); -} -$this->listeners[$eventName][$key] = $listener; -} -} -} -} -} -namespace Symfony\Component\HttpKernel\EventListener -{ -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -class ResponseListener implements EventSubscriberInterface -{ -private $charset; -public function __construct($charset) -{ -$this->charset = $charset; -} -public function onKernelResponse(FilterResponseEvent $event) -{ -if (!$event->isMasterRequest()) { -return; -} -$response = $event->getResponse(); -if (null === $response->getCharset()) { -$response->setCharset($this->charset); -} -$response->prepare($event->getRequest()); -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::RESPONSE =>'onKernelResponse', -); -} -} -} -namespace Symfony\Component\HttpKernel\EventListener -{ -use Psr\Log\LoggerInterface; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; -use Symfony\Component\HttpKernel\Event\FinishRequestEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Routing\Exception\MethodNotAllowedException; -use Symfony\Component\Routing\Exception\ResourceNotFoundException; -use Symfony\Component\Routing\Matcher\UrlMatcherInterface; -use Symfony\Component\Routing\Matcher\RequestMatcherInterface; -use Symfony\Component\Routing\RequestContext; -use Symfony\Component\Routing\RequestContextAwareInterface; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Request; -class RouterListener implements EventSubscriberInterface -{ -private $matcher; -private $context; -private $logger; -private $request; -private $requestStack; -public function __construct($matcher, RequestContext $context = null, LoggerInterface $logger = null, RequestStack $requestStack = null) -{ -if (!$matcher instanceof UrlMatcherInterface && !$matcher instanceof RequestMatcherInterface) { -throw new \InvalidArgumentException('Matcher must either implement UrlMatcherInterface or RequestMatcherInterface.'); -} -if (null === $context && !$matcher instanceof RequestContextAwareInterface) { -throw new \InvalidArgumentException('You must either pass a RequestContext or the matcher must implement RequestContextAwareInterface.'); -} -if (!$requestStack instanceof RequestStack) { -@trigger_error('The '.__METHOD__.' method now requires a RequestStack instance as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED); -} -$this->matcher = $matcher; -$this->context = $context ?: $matcher->getContext(); -$this->requestStack = $requestStack; -$this->logger = $logger; -} -public function setRequest(Request $request = null) -{ -@trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be made private in 3.0.', E_USER_DEPRECATED); -$this->setCurrentRequest($request); -} -private function setCurrentRequest(Request $request = null) -{ -if (null !== $request && $this->request !== $request) { -$this->context->fromRequest($request); -} -$this->request = $request; -} -public function onKernelFinishRequest(FinishRequestEvent $event) -{ -if (null === $this->requestStack) { -return; } -$this->setCurrentRequest($this->requestStack->getParentRequest()); -} -public function onKernelRequest(GetResponseEvent $event) -{ -$request = $event->getRequest(); -if (null !== $this->requestStack) { -$this->setCurrentRequest($request); -} -if ($request->attributes->has('_controller')) { -return; -} -try { -if ($this->matcher instanceof RequestMatcherInterface) { -$parameters = $this->matcher->matchRequest($request); -} else { -$parameters = $this->matcher->match($request->getPathInfo()); -} -if (null !== $this->logger) { -$this->logger->info(sprintf('Matched route "%s".', isset($parameters['_route']) ? $parameters['_route'] :'n/a'), array('route_parameters'=> $parameters,'request_uri'=> $request->getUri(), -)); -} -$request->attributes->add($parameters); -unset($parameters['_route'], $parameters['_controller']); -$request->attributes->set('_route_params', $parameters); -} catch (ResourceNotFoundException $e) { -$message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo()); -if ($referer = $request->headers->get('referer')) { -$message .= sprintf(' (from "%s")', $referer); -} -throw new NotFoundHttpException($message, $e); -} catch (MethodNotAllowedException $e) { -$message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), implode(', ', $e->getAllowedMethods())); -throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e); -} -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::REQUEST => array(array('onKernelRequest', 32)), -KernelEvents::FINISH_REQUEST => array(array('onKernelFinishRequest', 0)), -); -} -} -} -namespace Symfony\Component\HttpKernel\Controller -{ -use Symfony\Component\HttpFoundation\Request; -interface ControllerResolverInterface -{ -public function getController(Request $request); -public function getArguments(Request $request, $controller); -} -} -namespace Symfony\Component\HttpKernel\Controller -{ -use Psr\Log\LoggerInterface; -use Symfony\Component\HttpFoundation\Request; -class ControllerResolver implements ControllerResolverInterface -{ -private $logger; -public function __construct(LoggerInterface $logger = null) -{ -$this->logger = $logger; -} -public function getController(Request $request) -{ -if (!$controller = $request->attributes->get('_controller')) { -if (null !== $this->logger) { -$this->logger->warning('Unable to look for the controller as the "_controller" parameter is missing.'); -} -return false; -} -if (is_array($controller)) { -return $controller; -} -if (is_object($controller)) { -if (method_exists($controller,'__invoke')) { -return $controller; -} -throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', get_class($controller), $request->getPathInfo())); -} -if (false === strpos($controller,':')) { -if (method_exists($controller,'__invoke')) { -return $this->instantiateController($controller); -} elseif (function_exists($controller)) { -return $controller; -} -} -$callable = $this->createController($controller); -if (!is_callable($callable)) { -throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', $controller, $request->getPathInfo())); -} -return $callable; -} -public function getArguments(Request $request, $controller) -{ -if (is_array($controller)) { -$r = new \ReflectionMethod($controller[0], $controller[1]); -} elseif (is_object($controller) && !$controller instanceof \Closure) { -$r = new \ReflectionObject($controller); -$r = $r->getMethod('__invoke'); -} else { -$r = new \ReflectionFunction($controller); -} -return $this->doGetArguments($request, $controller, $r->getParameters()); -} -protected function doGetArguments(Request $request, $controller, array $parameters) -{ -$attributes = $request->attributes->all(); -$arguments = array(); -foreach ($parameters as $param) { -if (array_key_exists($param->name, $attributes)) { -$arguments[] = $attributes[$param->name]; -} elseif ($param->getClass() && $param->getClass()->isInstance($request)) { -$arguments[] = $request; -} elseif ($param->isDefaultValueAvailable()) { -$arguments[] = $param->getDefaultValue(); -} else { -if (is_array($controller)) { -$repr = sprintf('%s::%s()', get_class($controller[0]), $controller[1]); -} elseif (is_object($controller)) { -$repr = get_class($controller); -} else { -$repr = $controller; -} -throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument (because there is no default value or because there is a non optional argument after this one).', $repr, $param->name)); -} -} -return $arguments; -} -protected function createController($controller) -{ -if (false === strpos($controller,'::')) { -throw new \InvalidArgumentException(sprintf('Unable to find controller "%s".', $controller)); -} -list($class, $method) = explode('::', $controller, 2); -if (!class_exists($class)) { -throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class)); -} -return array($this->instantiateController($class), $method); -} -protected function instantiateController($class) -{ -return new $class(); -} -} -} -namespace Symfony\Component\HttpKernel\Event -{ -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\EventDispatcher\Event; -class KernelEvent extends Event -{ -private $kernel; -private $request; -private $requestType; -public function __construct(HttpKernelInterface $kernel, Request $request, $requestType) -{ -$this->kernel = $kernel; -$this->request = $request; -$this->requestType = $requestType; -} -public function getKernel() -{ -return $this->kernel; -} -public function getRequest() -{ -return $this->request; -} -public function getRequestType() -{ -return $this->requestType; -} -public function isMasterRequest() -{ -return HttpKernelInterface::MASTER_REQUEST === $this->requestType; -} -} -} -namespace Symfony\Component\HttpKernel\Event -{ -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request; -class FilterControllerEvent extends KernelEvent -{ -private $controller; -public function __construct(HttpKernelInterface $kernel, $controller, Request $request, $requestType) -{ -parent::__construct($kernel, $request, $requestType); -$this->setController($controller); -} -public function getController() -{ -return $this->controller; -} -public function setController($controller) -{ -if (!is_callable($controller)) { -throw new \LogicException(sprintf('The controller must be a callable (%s given).', $this->varToString($controller))); -} -$this->controller = $controller; -} -private function varToString($var) -{ -if (is_object($var)) { -return sprintf('Object(%s)', get_class($var)); -} -if (is_array($var)) { -$a = array(); -foreach ($var as $k => $v) { -$a[] = sprintf('%s => %s', $k, $this->varToString($v)); -} -return sprintf('Array(%s)', implode(', ', $a)); -} -if (is_resource($var)) { -return sprintf('Resource(%s)', get_resource_type($var)); -} -if (null === $var) { -return'null'; -} -if (false === $var) { -return'false'; -} -if (true === $var) { -return'true'; -} -return (string) $var; -} -} -} -namespace Symfony\Component\HttpKernel\Event -{ -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -class FilterResponseEvent extends KernelEvent -{ -private $response; -public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, Response $response) -{ -parent::__construct($kernel, $request, $requestType); -$this->setResponse($response); -} -public function getResponse() -{ -return $this->response; -} -public function setResponse(Response $response) -{ -$this->response = $response; -} -} -} -namespace Symfony\Component\HttpKernel\Event -{ -use Symfony\Component\HttpFoundation\Response; -class GetResponseEvent extends KernelEvent -{ -private $response; -public function getResponse() -{ -return $this->response; -} -public function setResponse(Response $response) -{ -$this->response = $response; -$this->stopPropagation(); -} -public function hasResponse() -{ -return null !== $this->response; -} -} -} -namespace Symfony\Component\HttpKernel\Event -{ -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request; -class GetResponseForControllerResultEvent extends GetResponseEvent -{ -private $controllerResult; -public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, $controllerResult) -{ -parent::__construct($kernel, $request, $requestType); -$this->controllerResult = $controllerResult; -} -public function getControllerResult() -{ -return $this->controllerResult; -} -public function setControllerResult($controllerResult) -{ -$this->controllerResult = $controllerResult; -} -} -} -namespace Symfony\Component\HttpKernel\Event -{ -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request; -class GetResponseForExceptionEvent extends GetResponseEvent -{ -private $exception; -public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, \Exception $e) -{ -parent::__construct($kernel, $request, $requestType); -$this->setException($e); -} -public function getException() -{ -return $this->exception; -} -public function setException(\Exception $exception) -{ -$this->exception = $exception; -} -} -} -namespace Symfony\Component\HttpKernel -{ -final class KernelEvents -{ -const REQUEST ='kernel.request'; -const EXCEPTION ='kernel.exception'; -const VIEW ='kernel.view'; -const CONTROLLER ='kernel.controller'; -const RESPONSE ='kernel.response'; -const TERMINATE ='kernel.terminate'; -const FINISH_REQUEST ='kernel.finish_request'; -} -} -namespace Symfony\Component\HttpKernel\Config -{ -use Symfony\Component\Config\FileLocator as BaseFileLocator; -use Symfony\Component\HttpKernel\KernelInterface; -class FileLocator extends BaseFileLocator -{ -private $kernel; -private $path; -public function __construct(KernelInterface $kernel, $path = null, array $paths = array()) -{ -$this->kernel = $kernel; -if (null !== $path) { -$this->path = $path; -$paths[] = $path; -} -parent::__construct($paths); -} -public function locate($file, $currentPath = null, $first = true) -{ -if (isset($file[0]) &&'@'=== $file[0]) { -return $this->kernel->locateResource($file, $this->path, $first); -} -return parent::locate($file, $currentPath, $first); -} -} -} -namespace Symfony\Bundle\FrameworkBundle\Controller -{ -use Symfony\Component\HttpKernel\KernelInterface; -class ControllerNameParser -{ -protected $kernel; -public function __construct(KernelInterface $kernel) -{ -$this->kernel = $kernel; -} -public function parse($controller) -{ -$originalController = $controller; -if (3 !== count($parts = explode(':', $controller))) { -throw new \InvalidArgumentException(sprintf('The "%s" controller is not a valid "a:b:c" controller string.', $controller)); -} -list($bundle, $controller, $action) = $parts; -$controller = str_replace('/','\\', $controller); -$bundles = array(); -try { -$allBundles = $this->kernel->getBundle($bundle, false); -} catch (\InvalidArgumentException $e) { -$message = sprintf('The "%s" (from the _controller value "%s") does not exist or is not enabled in your kernel!', -$bundle, -$originalController -); -if ($alternative = $this->findAlternative($bundle)) { -$message .= sprintf(' Did you mean "%s:%s:%s"?', $alternative, $controller, $action); -} -throw new \InvalidArgumentException($message, 0, $e); -} -foreach ($allBundles as $b) { -$try = $b->getNamespace().'\\Controller\\'.$controller.'Controller'; -if (class_exists($try)) { -return $try.'::'.$action.'Action'; -} -$bundles[] = $b->getName(); -$msg = sprintf('The _controller value "%s:%s:%s" maps to a "%s" class, but this class was not found. Create this class or check the spelling of the class and its namespace.', $bundle, $controller, $action, $try); -} -if (count($bundles) > 1) { -$msg = sprintf('Unable to find controller "%s:%s" in bundles %s.', $bundle, $controller, implode(', ', $bundles)); -} -throw new \InvalidArgumentException($msg); -} -public function build($controller) -{ -if (0 === preg_match('#^(.*?\\\\Controller\\\\(.+)Controller)::(.+)Action$#', $controller, $match)) { -throw new \InvalidArgumentException(sprintf('The "%s" controller is not a valid "class::method" string.', $controller)); -} -$className = $match[1]; -$controllerName = $match[2]; -$actionName = $match[3]; -foreach ($this->kernel->getBundles() as $name => $bundle) { -if (0 !== strpos($className, $bundle->getNamespace())) { -continue; -} -return sprintf('%s:%s:%s', $name, $controllerName, $actionName); -} -throw new \InvalidArgumentException(sprintf('Unable to find a bundle that defines controller "%s".', $controller)); -} -private function findAlternative($nonExistentBundleName) -{ -$bundleNames = array_map(function ($b) { -return $b->getName(); -}, $this->kernel->getBundles()); -$alternative = null; -$shortest = null; -foreach ($bundleNames as $bundleName) { -if (false !== strpos($bundleName, $nonExistentBundleName)) { -return $bundleName; -} -$lev = levenshtein($nonExistentBundleName, $bundleName); -if ($lev <= strlen($nonExistentBundleName) / 3 && ($alternative === null || $lev < $shortest)) { -$alternative = $bundleName; -} -} -return $alternative; -} -} -} -namespace Symfony\Bundle\FrameworkBundle\Controller -{ -use Psr\Log\LoggerInterface; -use Symfony\Component\HttpKernel\Controller\ControllerResolver as BaseControllerResolver; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\ContainerAwareInterface; -class ControllerResolver extends BaseControllerResolver -{ -protected $container; -protected $parser; -public function __construct(ContainerInterface $container, ControllerNameParser $parser, LoggerInterface $logger = null) -{ -$this->container = $container; -$this->parser = $parser; -parent::__construct($logger); -} -protected function createController($controller) -{ -if (false === strpos($controller,'::')) { -$count = substr_count($controller,':'); -if (2 == $count) { -$controller = $this->parser->parse($controller); -} elseif (1 == $count) { -list($service, $method) = explode(':', $controller, 2); -return array($this->container->get($service), $method); -} elseif ($this->container->has($controller) && method_exists($service = $this->container->get($controller),'__invoke')) { -return $service; -} else { -throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller)); -} -} -return parent::createController($controller); -} -protected function instantiateController($class) -{ -$controller = parent::instantiateController($class); -if ($controller instanceof ContainerAwareInterface) { -$controller->setContainer($this->container); -} -return $controller; -} -} -} -namespace Symfony\Component\Security\Http -{ -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; -use Symfony\Component\HttpKernel\Event\FinishRequestEvent; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -class Firewall implements EventSubscriberInterface -{ -private $map; -private $dispatcher; -private $exceptionListeners; -public function __construct(FirewallMapInterface $map, EventDispatcherInterface $dispatcher) -{ -$this->map = $map; -$this->dispatcher = $dispatcher; -$this->exceptionListeners = new \SplObjectStorage(); -} -public function onKernelRequest(GetResponseEvent $event) -{ -if (!$event->isMasterRequest()) { -return; -} -list($listeners, $exceptionListener) = $this->map->getListeners($event->getRequest()); -if (null !== $exceptionListener) { -$this->exceptionListeners[$event->getRequest()] = $exceptionListener; -$exceptionListener->register($this->dispatcher); -} -foreach ($listeners as $listener) { -$listener->handle($event); -if ($event->hasResponse()) { -break; -} -} -} -public function onKernelFinishRequest(FinishRequestEvent $event) -{ -$request = $event->getRequest(); -if (isset($this->exceptionListeners[$request])) { -$this->exceptionListeners[$request]->unregister($this->dispatcher); -unset($this->exceptionListeners[$request]); -} -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::REQUEST => array('onKernelRequest', 8), -KernelEvents::FINISH_REQUEST =>'onKernelFinishRequest', -); -} -} -} -namespace Symfony\Component\Security\Core\User -{ -use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; -use Symfony\Component\Security\Core\Exception\UnsupportedUserException; -interface UserProviderInterface -{ -public function loadUserByUsername($username); -public function refreshUser(UserInterface $user); -public function supportsClass($class); -} -} -namespace Symfony\Component\Security\Core\Authentication -{ -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -use Symfony\Component\Security\Core\Exception\AuthenticationException; -interface AuthenticationManagerInterface -{ -public function authenticate(TokenInterface $token); -} -} -namespace Symfony\Component\Security\Core\Authentication -{ -use Symfony\Component\Security\Core\Event\AuthenticationFailureEvent; -use Symfony\Component\Security\Core\Event\AuthenticationEvent; -use Symfony\Component\Security\Core\AuthenticationEvents; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\Security\Core\Exception\AccountStatusException; -use Symfony\Component\Security\Core\Exception\AuthenticationException; -use Symfony\Component\Security\Core\Exception\ProviderNotFoundException; -use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface; -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -class AuthenticationProviderManager implements AuthenticationManagerInterface -{ -private $providers; -private $eraseCredentials; -private $eventDispatcher; -public function __construct(array $providers, $eraseCredentials = true) -{ -if (!$providers) { -throw new \InvalidArgumentException('You must at least add one authentication provider.'); -} -foreach ($providers as $provider) { -if (!$provider instanceof AuthenticationProviderInterface) { -throw new \InvalidArgumentException(sprintf('Provider "%s" must implement the AuthenticationProviderInterface.', get_class($provider))); -} -} -$this->providers = $providers; -$this->eraseCredentials = (bool) $eraseCredentials; -} -public function setEventDispatcher(EventDispatcherInterface $dispatcher) -{ -$this->eventDispatcher = $dispatcher; -} -public function authenticate(TokenInterface $token) -{ -$lastException = null; -$result = null; -foreach ($this->providers as $provider) { -if (!$provider->supports($token)) { -continue; -} -try { -$result = $provider->authenticate($token); -if (null !== $result) { -break; -} -} catch (AccountStatusException $e) { -$e->setToken($token); -throw $e; -} catch (AuthenticationException $e) { -$lastException = $e; -} -} -if (null !== $result) { -if (true === $this->eraseCredentials) { -$result->eraseCredentials(); -} -if (null !== $this->eventDispatcher) { -$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_SUCCESS, new AuthenticationEvent($result)); -} -return $result; -} -if (null === $lastException) { -$lastException = new ProviderNotFoundException(sprintf('No Authentication Provider found for token of class "%s".', get_class($token))); -} -if (null !== $this->eventDispatcher) { -$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_FAILURE, new AuthenticationFailureEvent($token, $lastException)); -} -$lastException->setToken($token); -throw $lastException; -} -} -} -namespace Symfony\Component\Security\Core\Authentication\Token\Storage -{ -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -interface TokenStorageInterface -{ -public function getToken(); -public function setToken(TokenInterface $token = null); -} -} -namespace Symfony\Component\Security\Core\Authentication\Token\Storage -{ -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -class TokenStorage implements TokenStorageInterface -{ -private $token; -public function getToken() -{ -return $this->token; -} -public function setToken(TokenInterface $token = null) -{ -$this->token = $token; -} -} -} -namespace Symfony\Component\Security\Core\Authorization -{ -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -interface AccessDecisionManagerInterface -{ -public function decide(TokenInterface $token, array $attributes, $object = null); -public function supportsAttribute($attribute); -public function supportsClass($class); -} -} -namespace Symfony\Component\Security\Core\Authorization -{ -use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -class AccessDecisionManager implements AccessDecisionManagerInterface -{ -const STRATEGY_AFFIRMATIVE ='affirmative'; -const STRATEGY_CONSENSUS ='consensus'; -const STRATEGY_UNANIMOUS ='unanimous'; -private $voters; -private $strategy; -private $allowIfAllAbstainDecisions; -private $allowIfEqualGrantedDeniedDecisions; -public function __construct(array $voters, $strategy = self::STRATEGY_AFFIRMATIVE, $allowIfAllAbstainDecisions = false, $allowIfEqualGrantedDeniedDecisions = true) -{ -if (!$voters) { -throw new \InvalidArgumentException('You must at least add one voter.'); -} -$strategyMethod ='decide'.ucfirst($strategy); -if (!is_callable(array($this, $strategyMethod))) { -throw new \InvalidArgumentException(sprintf('The strategy "%s" is not supported.', $strategy)); -} -$this->voters = $voters; -$this->strategy = $strategyMethod; -$this->allowIfAllAbstainDecisions = (bool) $allowIfAllAbstainDecisions; -$this->allowIfEqualGrantedDeniedDecisions = (bool) $allowIfEqualGrantedDeniedDecisions; -} -public function decide(TokenInterface $token, array $attributes, $object = null) -{ -return $this->{$this->strategy}($token, $attributes, $object); -} -public function supportsAttribute($attribute) -{ -foreach ($this->voters as $voter) { -if ($voter->supportsAttribute($attribute)) { -return true; -} -} -return false; -} -public function supportsClass($class) -{ -foreach ($this->voters as $voter) { -if ($voter->supportsClass($class)) { -return true; -} -} -return false; -} -private function decideAffirmative(TokenInterface $token, array $attributes, $object = null) -{ -$deny = 0; -foreach ($this->voters as $voter) { -$result = $voter->vote($token, $object, $attributes); -switch ($result) { -case VoterInterface::ACCESS_GRANTED: -return true; -case VoterInterface::ACCESS_DENIED: -++$deny; -break; -default: -break; -} -} -if ($deny > 0) { -return false; -} -return $this->allowIfAllAbstainDecisions; -} -private function decideConsensus(TokenInterface $token, array $attributes, $object = null) -{ -$grant = 0; -$deny = 0; -$abstain = 0; -foreach ($this->voters as $voter) { -$result = $voter->vote($token, $object, $attributes); -switch ($result) { -case VoterInterface::ACCESS_GRANTED: -++$grant; -break; -case VoterInterface::ACCESS_DENIED: -++$deny; -break; -default: -++$abstain; -break; -} -} -if ($grant > $deny) { -return true; -} -if ($deny > $grant) { -return false; -} -if ($grant == $deny && $grant != 0) { -return $this->allowIfEqualGrantedDeniedDecisions; -} -return $this->allowIfAllAbstainDecisions; -} -private function decideUnanimous(TokenInterface $token, array $attributes, $object = null) -{ -$grant = 0; -foreach ($attributes as $attribute) { -foreach ($this->voters as $voter) { -$result = $voter->vote($token, $object, array($attribute)); -switch ($result) { -case VoterInterface::ACCESS_GRANTED: -++$grant; -break; -case VoterInterface::ACCESS_DENIED: -return false; -default: -break; -} -} -} -if ($grant > 0) { -return true; -} -return $this->allowIfAllAbstainDecisions; -} -} -} -namespace Symfony\Component\Security\Core\Authorization -{ -interface AuthorizationCheckerInterface -{ -public function isGranted($attributes, $object = null); -} -} -namespace Symfony\Component\Security\Core\Authorization -{ -use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; -use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException; -class AuthorizationChecker implements AuthorizationCheckerInterface -{ -private $tokenStorage; -private $accessDecisionManager; -private $authenticationManager; -private $alwaysAuthenticate; -public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, AccessDecisionManagerInterface $accessDecisionManager, $alwaysAuthenticate = false) -{ -$this->tokenStorage = $tokenStorage; -$this->authenticationManager = $authenticationManager; -$this->accessDecisionManager = $accessDecisionManager; -$this->alwaysAuthenticate = $alwaysAuthenticate; -} -final public function isGranted($attributes, $object = null) -{ -if (null === ($token = $this->tokenStorage->getToken())) { -throw new AuthenticationCredentialsNotFoundException('The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL.'); -} -if ($this->alwaysAuthenticate || !$token->isAuthenticated()) { -$this->tokenStorage->setToken($token = $this->authenticationManager->authenticate($token)); -} -if (!is_array($attributes)) { -$attributes = array($attributes); -} -return $this->accessDecisionManager->decide($token, $attributes, $object); -} -} -} -namespace Symfony\Component\Security\Core\Authorization\Voter -{ -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -interface VoterInterface -{ -const ACCESS_GRANTED = 1; -const ACCESS_ABSTAIN = 0; -const ACCESS_DENIED = -1; -public function supportsAttribute($attribute); -public function supportsClass($class); -public function vote(TokenInterface $token, $object, array $attributes); -} -} -namespace Symfony\Component\Security\Http -{ -use Symfony\Component\HttpFoundation\Request; -interface FirewallMapInterface -{ -public function getListeners(Request $request); -} -} -namespace Symfony\Bundle\SecurityBundle\Security -{ -use Symfony\Component\Security\Http\FirewallMapInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\DependencyInjection\ContainerInterface; -class FirewallMap implements FirewallMapInterface -{ -protected $container; -protected $map; -public function __construct(ContainerInterface $container, array $map) -{ -$this->container = $container; -$this->map = $map; -} -public function getListeners(Request $request) -{ -foreach ($this->map as $contextId => $requestMatcher) { -if (null === $requestMatcher || $requestMatcher->matches($request)) { -return $this->container->get($contextId)->getContext(); -} -} -return array(array(), null); -} -} -} -namespace Symfony\Bundle\SecurityBundle\Security -{ -use Symfony\Component\Security\Http\Firewall\ExceptionListener; -class FirewallContext -{ -private $listeners; -private $exceptionListener; -public function __construct(array $listeners, ExceptionListener $exceptionListener = null) -{ -$this->listeners = $listeners; -$this->exceptionListener = $exceptionListener; -} -public function getContext() -{ -return array($this->listeners, $this->exceptionListener); -} -} -} -namespace Symfony\Component\HttpFoundation -{ -interface RequestMatcherInterface -{ -public function matches(Request $request); -} -} -namespace Symfony\Component\HttpFoundation -{ -class RequestMatcher implements RequestMatcherInterface -{ -private $path; -private $host; -private $methods = array(); -private $ips = array(); -private $attributes = array(); -private $schemes = array(); -public function __construct($path = null, $host = null, $methods = null, $ips = null, array $attributes = array(), $schemes = null) -{ -$this->matchPath($path); -$this->matchHost($host); -$this->matchMethod($methods); -$this->matchIps($ips); -$this->matchScheme($schemes); -foreach ($attributes as $k => $v) { -$this->matchAttribute($k, $v); -} -} -public function matchScheme($scheme) -{ -$this->schemes = array_map('strtolower', (array) $scheme); -} -public function matchHost($regexp) -{ -$this->host = $regexp; -} -public function matchPath($regexp) -{ -$this->path = $regexp; -} -public function matchIp($ip) -{ -$this->matchIps($ip); -} -public function matchIps($ips) -{ -$this->ips = (array) $ips; -} -public function matchMethod($method) -{ -$this->methods = array_map('strtoupper', (array) $method); -} -public function matchAttribute($key, $regexp) -{ -$this->attributes[$key] = $regexp; -} -public function matches(Request $request) -{ -if ($this->schemes && !in_array($request->getScheme(), $this->schemes)) { -return false; -} -if ($this->methods && !in_array($request->getMethod(), $this->methods)) { -return false; -} -foreach ($this->attributes as $key => $pattern) { -if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) { -return false; -} -} -if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) { -return false; -} -if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) { -return false; -} -if (IpUtils::checkIp($request->getClientIp(), $this->ips)) { -return true; -} -return count($this->ips) === 0; -} -} -} -namespace -{ -class Twig_Environment -{ -const VERSION ='1.22.2'; -protected $charset; -protected $loader; -protected $debug; -protected $autoReload; -protected $cache; -protected $lexer; -protected $parser; -protected $compiler; -protected $baseTemplateClass; -protected $extensions; -protected $parsers; -protected $visitors; -protected $filters; -protected $tests; -protected $functions; -protected $globals; -protected $runtimeInitialized = false; -protected $extensionInitialized = false; -protected $loadedTemplates; -protected $strictVariables; -protected $unaryOperators; -protected $binaryOperators; -protected $templateClassPrefix ='__TwigTemplate_'; -protected $functionCallbacks = array(); -protected $filterCallbacks = array(); -protected $staging; -private $originalCache; -private $bcWriteCacheFile = false; -private $bcGetCacheFilename = false; -public function __construct(Twig_LoaderInterface $loader = null, $options = array()) -{ -if (null !== $loader) { -$this->setLoader($loader); -} else { -@trigger_error('Not passing a Twig_LoaderInterface as the first constructor argument of Twig_Environment is deprecated.', E_USER_DEPRECATED); -} -$options = array_merge(array('debug'=> false,'charset'=>'UTF-8','base_template_class'=>'Twig_Template','strict_variables'=> false,'autoescape'=>'html','cache'=> false,'auto_reload'=> null,'optimizations'=> -1, -), $options); -$this->debug = (bool) $options['debug']; -$this->charset = strtoupper($options['charset']); -$this->baseTemplateClass = $options['base_template_class']; -$this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; -$this->strictVariables = (bool) $options['strict_variables']; -$this->setCache($options['cache']); -$this->addExtension(new Twig_Extension_Core()); -$this->addExtension(new Twig_Extension_Escaper($options['autoescape'])); -$this->addExtension(new Twig_Extension_Optimizer($options['optimizations'])); -$this->staging = new Twig_Extension_Staging(); -if (is_string($this->originalCache)) { -$r = new ReflectionMethod($this,'writeCacheFile'); -if ($r->getDeclaringClass()->getName() !== __CLASS__) { -@trigger_error('The Twig_Environment::writeCacheFile method is deprecated and will be removed in Twig 2.0.', E_USER_DEPRECATED); -$this->bcWriteCacheFile = true; -} -$r = new ReflectionMethod($this,'getCacheFilename'); -if ($r->getDeclaringClass()->getName() !== __CLASS__) { -@trigger_error('The Twig_Environment::getCacheFilename method is deprecated and will be removed in Twig 2.0.', E_USER_DEPRECATED); -$this->bcGetCacheFilename = true; -} -} -} -public function getBaseTemplateClass() -{ -return $this->baseTemplateClass; -} -public function setBaseTemplateClass($class) -{ -$this->baseTemplateClass = $class; -} -public function enableDebug() -{ -$this->debug = true; -} -public function disableDebug() -{ -$this->debug = false; -} -public function isDebug() -{ -return $this->debug; -} -public function enableAutoReload() -{ -$this->autoReload = true; -} -public function disableAutoReload() -{ -$this->autoReload = false; -} -public function isAutoReload() -{ -return $this->autoReload; -} -public function enableStrictVariables() -{ -$this->strictVariables = true; -} -public function disableStrictVariables() -{ -$this->strictVariables = false; -} -public function isStrictVariables() -{ -return $this->strictVariables; -} -public function getCache($original = true) -{ -return $original ? $this->originalCache : $this->cache; -} -public function setCache($cache) -{ -if (is_string($cache)) { -$this->originalCache = $cache; -$this->cache = new Twig_Cache_Filesystem($cache); -} elseif (false === $cache) { -$this->originalCache = $cache; -$this->cache = new Twig_Cache_Null(); -} elseif ($cache instanceof Twig_CacheInterface) { -$this->originalCache = $this->cache = $cache; -} else { -throw new LogicException(sprintf('Cache can only be a string, false, or a Twig_CacheInterface implementation.')); -} -} -public function getCacheFilename($name) -{ -@trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); -$key = $this->cache->generateKey($name, $this->getTemplateClass($name)); -return !$key ? false : $key; -} -public function getTemplateClass($name, $index = null) -{ -$key = $this->getLoader()->getCacheKey($name).'__'.implode('__', array_keys($this->extensions)); -return $this->templateClassPrefix.hash('sha256', $key).(null === $index ?'':'_'.$index); -} -public function getTemplateClassPrefix() -{ -@trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); -return $this->templateClassPrefix; -} -public function render($name, array $context = array()) -{ -return $this->loadTemplate($name)->render($context); -} -public function display($name, array $context = array()) -{ -$this->loadTemplate($name)->display($context); -} -public function loadTemplate($name, $index = null) -{ -$cls = $this->getTemplateClass($name, $index); -if (isset($this->loadedTemplates[$cls])) { -return $this->loadedTemplates[$cls]; -} -if (!class_exists($cls, false)) { -if ($this->bcGetCacheFilename) { -$key = $this->getCacheFilename($name); -} else { -$key = $this->cache->generateKey($name, $cls); -} -if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { -$this->cache->load($key); -} -if (!class_exists($cls, false)) { -$content = $this->compileSource($this->getLoader()->getSource($name), $name); -if ($this->bcWriteCacheFile) { -$this->writeCacheFile($key, $content); -} else { -$this->cache->write($key, $content); -} -eval('?>'.$content); -} -} -if (!$this->runtimeInitialized) { -$this->initRuntime(); -} -return $this->loadedTemplates[$cls] = new $cls($this); -} -public function createTemplate($template) -{ -$name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false)); -$loader = new Twig_Loader_Chain(array( -new Twig_Loader_Array(array($name => $template)), -$current = $this->getLoader(), -)); -$this->setLoader($loader); -try { -$template = $this->loadTemplate($name); -} catch (Exception $e) { -$this->setLoader($current); -throw $e; -} -$this->setLoader($current); -return $template; -} -public function isTemplateFresh($name, $time) -{ -foreach ($this->extensions as $extension) { -$r = new ReflectionObject($extension); -if (filemtime($r->getFileName()) > $time) { -return false; -} -} -return $this->getLoader()->isFresh($name, $time); -} -public function resolveTemplate($names) -{ -if (!is_array($names)) { -$names = array($names); -} -foreach ($names as $name) { -if ($name instanceof Twig_Template) { -return $name; -} -try { -return $this->loadTemplate($name); -} catch (Twig_Error_Loader $e) { -} -} -if (1 === count($names)) { -throw $e; -} -throw new Twig_Error_Loader(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); -} -public function clearTemplateCache() -{ -@trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); -$this->loadedTemplates = array(); -} -public function clearCacheFiles() -{ -@trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); -if (is_string($this->originalCache)) { -foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->originalCache), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { -if ($file->isFile()) { -@unlink($file->getPathname()); -} -} -} -} -public function getLexer() -{ -if (null === $this->lexer) { -$this->lexer = new Twig_Lexer($this); -} -return $this->lexer; -} -public function setLexer(Twig_LexerInterface $lexer) -{ -$this->lexer = $lexer; -} -public function tokenize($source, $name = null) -{ -return $this->getLexer()->tokenize($source, $name); -} -public function getParser() -{ -if (null === $this->parser) { -$this->parser = new Twig_Parser($this); -} -return $this->parser; -} -public function setParser(Twig_ParserInterface $parser) -{ -$this->parser = $parser; -} -public function parse(Twig_TokenStream $stream) -{ -return $this->getParser()->parse($stream); -} -public function getCompiler() -{ -if (null === $this->compiler) { -$this->compiler = new Twig_Compiler($this); -} -return $this->compiler; -} -public function setCompiler(Twig_CompilerInterface $compiler) -{ -$this->compiler = $compiler; -} -public function compile(Twig_NodeInterface $node) -{ -return $this->getCompiler()->compile($node)->getSource(); -} -public function compileSource($source, $name = null) -{ -try { -$compiled = $this->compile($this->parse($this->tokenize($source, $name)), $source); -if (isset($source[0])) { -$compiled .='/* '.str_replace(array('*/',"\r\n","\r","\n"), array('*//* ',"\n","\n","*/\n/* "), $source)."*/\n"; -} -return $compiled; -} catch (Twig_Error $e) { -$e->setTemplateFile($name); -throw $e; -} catch (Exception $e) { -throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $name, $e); -} -} -public function setLoader(Twig_LoaderInterface $loader) -{ -$this->loader = $loader; -} -public function getLoader() -{ -if (null === $this->loader) { -throw new LogicException('You must set a loader first.'); -} -return $this->loader; -} -public function setCharset($charset) -{ -$this->charset = strtoupper($charset); -} -public function getCharset() -{ -return $this->charset; -} -public function initRuntime() -{ -$this->runtimeInitialized = true; -foreach ($this->getExtensions() as $extension) { -$extension->initRuntime($this); -} -} -public function hasExtension($name) -{ -return isset($this->extensions[$name]); -} -public function getExtension($name) -{ -if (!isset($this->extensions[$name])) { -throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $name)); -} -return $this->extensions[$name]; -} -public function addExtension(Twig_ExtensionInterface $extension) -{ -if ($this->extensionInitialized) { -throw new LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $extension->getName())); -} -$this->extensions[$extension->getName()] = $extension; -} -public function removeExtension($name) -{ -@trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); -if ($this->extensionInitialized) { -throw new LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name)); -} -unset($this->extensions[$name]); -} -public function setExtensions(array $extensions) -{ -foreach ($extensions as $extension) { -$this->addExtension($extension); -} -} -public function getExtensions() -{ -return $this->extensions; -} -public function addTokenParser(Twig_TokenParserInterface $parser) -{ -if ($this->extensionInitialized) { -throw new LogicException('Unable to add a token parser as extensions have already been initialized.'); -} -$this->staging->addTokenParser($parser); -} -public function getTokenParsers() -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -return $this->parsers; -} -public function getTags() -{ -$tags = array(); -foreach ($this->getTokenParsers()->getParsers() as $parser) { -if ($parser instanceof Twig_TokenParserInterface) { -$tags[$parser->getTag()] = $parser; -} -} -return $tags; -} -public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) -{ -if ($this->extensionInitialized) { -throw new LogicException('Unable to add a node visitor as extensions have already been initialized.'); -} -$this->staging->addNodeVisitor($visitor); -} -public function getNodeVisitors() -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -return $this->visitors; -} -public function addFilter($name, $filter = null) -{ -if (!$name instanceof Twig_SimpleFilter && !($filter instanceof Twig_SimpleFilter || $filter instanceof Twig_FilterInterface)) { -throw new LogicException('A filter must be an instance of Twig_FilterInterface or Twig_SimpleFilter'); -} -if ($name instanceof Twig_SimpleFilter) { -$filter = $name; -$name = $filter->getName(); -} else { -@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated. Pass an instance of "Twig_SimpleFilter" instead when defining filter "%s".', __METHOD__, $name), E_USER_DEPRECATED); -} -if ($this->extensionInitialized) { -throw new LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name)); -} -$this->staging->addFilter($name, $filter); -} -public function getFilter($name) -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -if (isset($this->filters[$name])) { -return $this->filters[$name]; -} -foreach ($this->filters as $pattern => $filter) { -$pattern = str_replace('\\*','(.*?)', preg_quote($pattern,'#'), $count); -if ($count) { -if (preg_match('#^'.$pattern.'$#', $name, $matches)) { -array_shift($matches); -$filter->setArguments($matches); -return $filter; -} -} -} -foreach ($this->filterCallbacks as $callback) { -if (false !== $filter = call_user_func($callback, $name)) { -return $filter; -} -} -return false; -} -public function registerUndefinedFilterCallback($callable) -{ -$this->filterCallbacks[] = $callable; -} -public function getFilters() -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -return $this->filters; -} -public function addTest($name, $test = null) -{ -if (!$name instanceof Twig_SimpleTest && !($test instanceof Twig_SimpleTest || $test instanceof Twig_TestInterface)) { -throw new LogicException('A test must be an instance of Twig_TestInterface or Twig_SimpleTest'); -} -if ($name instanceof Twig_SimpleTest) { -$test = $name; -$name = $test->getName(); -} else { -@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated. Pass an instance of "Twig_SimpleTest" instead when defining test "%s".', __METHOD__, $name), E_USER_DEPRECATED); -} -if ($this->extensionInitialized) { -throw new LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name)); -} -$this->staging->addTest($name, $test); -} -public function getTests() -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -return $this->tests; -} -public function getTest($name) -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -if (isset($this->tests[$name])) { -return $this->tests[$name]; -} -return false; -} -public function addFunction($name, $function = null) -{ -if (!$name instanceof Twig_SimpleFunction && !($function instanceof Twig_SimpleFunction || $function instanceof Twig_FunctionInterface)) { -throw new LogicException('A function must be an instance of Twig_FunctionInterface or Twig_SimpleFunction'); -} -if ($name instanceof Twig_SimpleFunction) { -$function = $name; -$name = $function->getName(); -} else { -@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated. Pass an instance of "Twig_SimpleFunction" instead when defining function "%s".', __METHOD__, $name), E_USER_DEPRECATED); -} -if ($this->extensionInitialized) { -throw new LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name)); -} -$this->staging->addFunction($name, $function); -} -public function getFunction($name) -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -if (isset($this->functions[$name])) { -return $this->functions[$name]; -} -foreach ($this->functions as $pattern => $function) { -$pattern = str_replace('\\*','(.*?)', preg_quote($pattern,'#'), $count); -if ($count) { -if (preg_match('#^'.$pattern.'$#', $name, $matches)) { -array_shift($matches); -$function->setArguments($matches); -return $function; -} -} -} -foreach ($this->functionCallbacks as $callback) { -if (false !== $function = call_user_func($callback, $name)) { -return $function; -} -} -return false; -} -public function registerUndefinedFunctionCallback($callable) -{ -$this->functionCallbacks[] = $callable; -} -public function getFunctions() -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -return $this->functions; -} -public function addGlobal($name, $value) -{ -if ($this->extensionInitialized || $this->runtimeInitialized) { -if (null === $this->globals) { -$this->globals = $this->initGlobals(); -} -if (!array_key_exists($name, $this->globals)) { -@trigger_error(sprintf('Registering global variable "%s" at runtime or when the extensions have already been initialized is deprecated.', $name), E_USER_DEPRECATED); -} -} -if ($this->extensionInitialized || $this->runtimeInitialized) { -$this->globals[$name] = $value; -} else { -$this->staging->addGlobal($name, $value); -} -} -public function getGlobals() -{ -if (!$this->runtimeInitialized && !$this->extensionInitialized) { -return $this->initGlobals(); -} -if (null === $this->globals) { -$this->globals = $this->initGlobals(); -} -return $this->globals; -} -public function mergeGlobals(array $context) -{ -foreach ($this->getGlobals() as $key => $value) { -if (!array_key_exists($key, $context)) { -$context[$key] = $value; -} -} -return $context; -} -public function getUnaryOperators() -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -return $this->unaryOperators; -} -public function getBinaryOperators() -{ -if (!$this->extensionInitialized) { -$this->initExtensions(); -} -return $this->binaryOperators; -} -public function computeAlternatives($name, $items) -{ -$alternatives = array(); -foreach ($items as $item) { -$lev = levenshtein($name, $item); -if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) { -$alternatives[$item] = $lev; -} -} -asort($alternatives); -return array_keys($alternatives); -} -protected function initGlobals() -{ -$globals = array(); -foreach ($this->extensions as $extension) { -$extGlob = $extension->getGlobals(); -if (!is_array($extGlob)) { -throw new UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', get_class($extension))); -} -$globals[] = $extGlob; -} -$globals[] = $this->staging->getGlobals(); -return call_user_func_array('array_merge', $globals); -} -protected function initExtensions() -{ -if ($this->extensionInitialized) { -return; -} -$this->extensionInitialized = true; -$this->parsers = new Twig_TokenParserBroker(array(), array(), false); -$this->filters = array(); -$this->functions = array(); -$this->tests = array(); -$this->visitors = array(); -$this->unaryOperators = array(); -$this->binaryOperators = array(); -foreach ($this->extensions as $extension) { -$this->initExtension($extension); -} -$this->initExtension($this->staging); -} -protected function initExtension(Twig_ExtensionInterface $extension) -{ -foreach ($extension->getFilters() as $name => $filter) { -if ($filter instanceof Twig_SimpleFilter) { -$name = $filter->getName(); -} else { -@trigger_error(sprintf('Using an instance of "%s" for filter "%s" is deprecated. Use Twig_SimpleFilter instead.', get_class($filter), $name), E_USER_DEPRECATED); -} -$this->filters[$name] = $filter; -} -foreach ($extension->getFunctions() as $name => $function) { -if ($function instanceof Twig_SimpleFunction) { -$name = $function->getName(); -} else { -@trigger_error(sprintf('Using an instance of "%s" for function "%s" is deprecated. Use Twig_SimpleFunction instead.', get_class($function), $name), E_USER_DEPRECATED); -} -$this->functions[$name] = $function; -} -foreach ($extension->getTests() as $name => $test) { -if ($test instanceof Twig_SimpleTest) { -$name = $test->getName(); -} else { -@trigger_error(sprintf('Using an instance of "%s" for test "%s" is deprecated. Use Twig_SimpleTest instead.', get_class($test), $name), E_USER_DEPRECATED); -} -$this->tests[$name] = $test; -} -foreach ($extension->getTokenParsers() as $parser) { -if ($parser instanceof Twig_TokenParserInterface) { -$this->parsers->addTokenParser($parser); -} elseif ($parser instanceof Twig_TokenParserBrokerInterface) { -@trigger_error('Registering a Twig_TokenParserBrokerInterface instance is deprecated.', E_USER_DEPRECATED); -$this->parsers->addTokenParserBroker($parser); -} else { -throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances'); -} -} -foreach ($extension->getNodeVisitors() as $visitor) { -$this->visitors[] = $visitor; -} -if ($operators = $extension->getOperators()) { -if (2 !== count($operators)) { -throw new InvalidArgumentException(sprintf('"%s::getOperators()" does not return a valid operators array.', get_class($extension))); -} -$this->unaryOperators = array_merge($this->unaryOperators, $operators[0]); -$this->binaryOperators = array_merge($this->binaryOperators, $operators[1]); -} -} -protected function writeCacheFile($file, $content) -{ -$this->cache->write($file, $content); -} -} -} -namespace -{ -interface Twig_ExtensionInterface -{ -public function initRuntime(Twig_Environment $environment); -public function getTokenParsers(); -public function getNodeVisitors(); -public function getFilters(); -public function getTests(); -public function getFunctions(); -public function getOperators(); -public function getGlobals(); -public function getName(); -} -} -namespace -{ -abstract class Twig_Extension implements Twig_ExtensionInterface -{ -public function initRuntime(Twig_Environment $environment) -{ -} -public function getTokenParsers() -{ -return array(); -} -public function getNodeVisitors() -{ -return array(); -} -public function getFilters() -{ -return array(); -} -public function getTests() -{ -return array(); -} -public function getFunctions() -{ -return array(); -} -public function getOperators() -{ -return array(); -} -public function getGlobals() -{ -return array(); -} -} -} -namespace -{ -if (!defined('ENT_SUBSTITUTE')) { -define('ENT_SUBSTITUTE', 0); -} -class Twig_Extension_Core extends Twig_Extension -{ -protected $dateFormats = array('F j, Y H:i','%d days'); -protected $numberFormat = array(0,'.',','); -protected $timezone = null; -protected $escapers = array(); -public function setEscaper($strategy, $callable) -{ -$this->escapers[$strategy] = $callable; -} -public function getEscapers() -{ -return $this->escapers; -} -public function setDateFormat($format = null, $dateIntervalFormat = null) -{ -if (null !== $format) { -$this->dateFormats[0] = $format; -} -if (null !== $dateIntervalFormat) { -$this->dateFormats[1] = $dateIntervalFormat; -} -} -public function getDateFormat() -{ -return $this->dateFormats; -} -public function setTimezone($timezone) -{ -$this->timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); -} -public function getTimezone() -{ -if (null === $this->timezone) { -$this->timezone = new DateTimeZone(date_default_timezone_get()); -} -return $this->timezone; -} -public function setNumberFormat($decimal, $decimalPoint, $thousandSep) -{ -$this->numberFormat = array($decimal, $decimalPoint, $thousandSep); -} -public function getNumberFormat() -{ -return $this->numberFormat; -} -public function getTokenParsers() -{ -return array( -new Twig_TokenParser_For(), -new Twig_TokenParser_If(), -new Twig_TokenParser_Extends(), -new Twig_TokenParser_Include(), -new Twig_TokenParser_Block(), -new Twig_TokenParser_Use(), -new Twig_TokenParser_Filter(), -new Twig_TokenParser_Macro(), -new Twig_TokenParser_Import(), -new Twig_TokenParser_From(), -new Twig_TokenParser_Set(), -new Twig_TokenParser_Spaceless(), -new Twig_TokenParser_Flush(), -new Twig_TokenParser_Do(), -new Twig_TokenParser_Embed(), -); -} -public function getFilters() -{ -$filters = array( -new Twig_SimpleFilter('date','twig_date_format_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('date_modify','twig_date_modify_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('format','sprintf'), -new Twig_SimpleFilter('replace','twig_replace_filter'), -new Twig_SimpleFilter('number_format','twig_number_format_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('abs','abs'), -new Twig_SimpleFilter('round','twig_round'), -new Twig_SimpleFilter('url_encode','twig_urlencode_filter'), -new Twig_SimpleFilter('json_encode','twig_jsonencode_filter'), -new Twig_SimpleFilter('convert_encoding','twig_convert_encoding'), -new Twig_SimpleFilter('title','twig_title_string_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('capitalize','twig_capitalize_string_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('upper','strtoupper'), -new Twig_SimpleFilter('lower','strtolower'), -new Twig_SimpleFilter('striptags','strip_tags'), -new Twig_SimpleFilter('trim','trim'), -new Twig_SimpleFilter('nl2br','nl2br', array('pre_escape'=>'html','is_safe'=> array('html'))), -new Twig_SimpleFilter('join','twig_join_filter'), -new Twig_SimpleFilter('split','twig_split_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('sort','twig_sort_filter'), -new Twig_SimpleFilter('merge','twig_array_merge'), -new Twig_SimpleFilter('batch','twig_array_batch'), -new Twig_SimpleFilter('reverse','twig_reverse_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('length','twig_length_filter', array('needs_environment'=> true)), -new Twig_SimpleFilter('slice','twig_slice', array('needs_environment'=> true)), -new Twig_SimpleFilter('first','twig_first', array('needs_environment'=> true)), -new Twig_SimpleFilter('last','twig_last', array('needs_environment'=> true)), -new Twig_SimpleFilter('default','_twig_default_filter', array('node_class'=>'Twig_Node_Expression_Filter_Default')), -new Twig_SimpleFilter('keys','twig_get_array_keys_filter'), -new Twig_SimpleFilter('escape','twig_escape_filter', array('needs_environment'=> true,'is_safe_callback'=>'twig_escape_filter_is_safe')), -new Twig_SimpleFilter('e','twig_escape_filter', array('needs_environment'=> true,'is_safe_callback'=>'twig_escape_filter_is_safe')), -); -if (function_exists('mb_get_info')) { -$filters[] = new Twig_SimpleFilter('upper','twig_upper_filter', array('needs_environment'=> true)); -$filters[] = new Twig_SimpleFilter('lower','twig_lower_filter', array('needs_environment'=> true)); -} -return $filters; -} -public function getFunctions() -{ -return array( -new Twig_SimpleFunction('max','max'), -new Twig_SimpleFunction('min','min'), -new Twig_SimpleFunction('range','range'), -new Twig_SimpleFunction('constant','twig_constant'), -new Twig_SimpleFunction('cycle','twig_cycle'), -new Twig_SimpleFunction('random','twig_random', array('needs_environment'=> true)), -new Twig_SimpleFunction('date','twig_date_converter', array('needs_environment'=> true)), -new Twig_SimpleFunction('include','twig_include', array('needs_environment'=> true,'needs_context'=> true,'is_safe'=> array('all'))), -new Twig_SimpleFunction('source','twig_source', array('needs_environment'=> true,'is_safe'=> array('all'))), -); -} -public function getTests() -{ -return array( -new Twig_SimpleTest('even', null, array('node_class'=>'Twig_Node_Expression_Test_Even')), -new Twig_SimpleTest('odd', null, array('node_class'=>'Twig_Node_Expression_Test_Odd')), -new Twig_SimpleTest('defined', null, array('node_class'=>'Twig_Node_Expression_Test_Defined')), -new Twig_SimpleTest('sameas', null, array('node_class'=>'Twig_Node_Expression_Test_Sameas','deprecated'=> true,'alternative'=>'same as')), -new Twig_SimpleTest('same as', null, array('node_class'=>'Twig_Node_Expression_Test_Sameas')), -new Twig_SimpleTest('none', null, array('node_class'=>'Twig_Node_Expression_Test_Null')), -new Twig_SimpleTest('null', null, array('node_class'=>'Twig_Node_Expression_Test_Null')), -new Twig_SimpleTest('divisibleby', null, array('node_class'=>'Twig_Node_Expression_Test_Divisibleby','deprecated'=> true,'alternative'=>'divisible by')), -new Twig_SimpleTest('divisible by', null, array('node_class'=>'Twig_Node_Expression_Test_Divisibleby')), -new Twig_SimpleTest('constant', null, array('node_class'=>'Twig_Node_Expression_Test_Constant')), -new Twig_SimpleTest('empty','twig_test_empty'), -new Twig_SimpleTest('iterable','twig_test_iterable'), -); -} -public function getOperators() -{ -return array( -array('not'=> array('precedence'=> 50,'class'=>'Twig_Node_Expression_Unary_Not'),'-'=> array('precedence'=> 500,'class'=>'Twig_Node_Expression_Unary_Neg'),'+'=> array('precedence'=> 500,'class'=>'Twig_Node_Expression_Unary_Pos'), -), -array('or'=> array('precedence'=> 10,'class'=>'Twig_Node_Expression_Binary_Or','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'and'=> array('precedence'=> 15,'class'=>'Twig_Node_Expression_Binary_And','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-or'=> array('precedence'=> 16,'class'=>'Twig_Node_Expression_Binary_BitwiseOr','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-xor'=> array('precedence'=> 17,'class'=>'Twig_Node_Expression_Binary_BitwiseXor','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-and'=> array('precedence'=> 18,'class'=>'Twig_Node_Expression_Binary_BitwiseAnd','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'=='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Equal','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'!='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_NotEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'<'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Less','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'>'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Greater','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'>='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_GreaterEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'<='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_LessEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'not in'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_NotIn','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'in'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_In','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'matches'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Matches','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'starts with'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_StartsWith','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'ends with'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_EndsWith','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'..'=> array('precedence'=> 25,'class'=>'Twig_Node_Expression_Binary_Range','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'+'=> array('precedence'=> 30,'class'=>'Twig_Node_Expression_Binary_Add','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'-'=> array('precedence'=> 30,'class'=>'Twig_Node_Expression_Binary_Sub','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'~'=> array('precedence'=> 40,'class'=>'Twig_Node_Expression_Binary_Concat','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'*'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Mul','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'/'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Div','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'//'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_FloorDiv','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'%'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Mod','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'is'=> array('precedence'=> 100,'callable'=> array($this,'parseTestExpression'),'associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'is not'=> array('precedence'=> 100,'callable'=> array($this,'parseNotTestExpression'),'associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'**'=> array('precedence'=> 200,'class'=>'Twig_Node_Expression_Binary_Power','associativity'=> Twig_ExpressionParser::OPERATOR_RIGHT), -), -); -} -public function parseNotTestExpression(Twig_Parser $parser, Twig_NodeInterface $node) -{ -return new Twig_Node_Expression_Unary_Not($this->parseTestExpression($parser, $node), $parser->getCurrentToken()->getLine()); -} -public function parseTestExpression(Twig_Parser $parser, Twig_NodeInterface $node) -{ -$stream = $parser->getStream(); -list($name, $test) = $this->getTest($parser, $node->getLine()); -if ($test instanceof Twig_SimpleTest && $test->isDeprecated()) { -$message = sprintf('Twig Test "%s" is deprecated', $name); -if ($test->getAlternative()) { -$message .= sprintf('. Use "%s" instead', $test->getAlternative()); -} -$message .= sprintf(' in %s at line %d.', $stream->getFilename(), $stream->getCurrent()->getLine()); -@trigger_error($message, E_USER_DEPRECATED); -} -$class = $this->getTestNodeClass($parser, $test); -$arguments = null; -if ($stream->test(Twig_Token::PUNCTUATION_TYPE,'(')) { -$arguments = $parser->getExpressionParser()->parseArguments(true); -} -return new $class($node, $name, $arguments, $parser->getCurrentToken()->getLine()); -} -protected function getTest(Twig_Parser $parser, $line) -{ -$stream = $parser->getStream(); -$name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); -$env = $parser->getEnvironment(); -if ($test = $env->getTest($name)) { -return array($name, $test); -} -if ($stream->test(Twig_Token::NAME_TYPE)) { -$name = $name.' '.$parser->getCurrentToken()->getValue(); -if ($test = $env->getTest($name)) { -$parser->getStream()->next(); -return array($name, $test); -} -} -$message = sprintf('The test "%s" does not exist', $name); -if ($alternatives = $env->computeAlternatives($name, array_keys($env->getTests()))) { -$message = sprintf('%s. Did you mean "%s"', $message, implode('", "', $alternatives)); -} -throw new Twig_Error_Syntax($message, $line, $parser->getFilename()); -} -protected function getTestNodeClass(Twig_Parser $parser, $test) -{ -if ($test instanceof Twig_SimpleTest) { -return $test->getNodeClass(); -} -return $test instanceof Twig_Test_Node ? $test->getClass() :'Twig_Node_Expression_Test'; -} -public function getName() -{ -return'core'; -} -} -function twig_cycle($values, $position) -{ -if (!is_array($values) && !$values instanceof ArrayAccess) { -return $values; -} -return $values[$position % count($values)]; -} -function twig_random(Twig_Environment $env, $values = null) -{ -if (null === $values) { -return mt_rand(); -} -if (is_int($values) || is_float($values)) { -return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values); -} -if ($values instanceof Traversable) { -$values = iterator_to_array($values); -} elseif (is_string($values)) { -if (''=== $values) { -return''; -} -if (null !== $charset = $env->getCharset()) { -if ('UTF-8'!= $charset) { -$values = twig_convert_encoding($values,'UTF-8', $charset); -} -$values = preg_split('/(? $value) { -$values[$i] = twig_convert_encoding($value, $charset,'UTF-8'); -} -} -} else { -return $values[mt_rand(0, strlen($values) - 1)]; -} -} -if (!is_array($values)) { -return $values; -} -if (0 === count($values)) { -throw new Twig_Error_Runtime('The random function cannot pick from an empty array.'); -} -return $values[array_rand($values, 1)]; -} -function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $timezone = null) -{ -if (null === $format) { -$formats = $env->getExtension('core')->getDateFormat(); -$format = $date instanceof DateInterval ? $formats[1] : $formats[0]; -} -if ($date instanceof DateInterval) { -return $date->format($format); -} -return twig_date_converter($env, $date, $timezone)->format($format); -} -function twig_date_modify_filter(Twig_Environment $env, $date, $modifier) -{ -$date = twig_date_converter($env, $date, false); -$resultDate = $date->modify($modifier); -return null === $resultDate ? $date : $resultDate; -} -function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null) -{ -if (false !== $timezone) { -if (null === $timezone) { -$timezone = $env->getExtension('core')->getTimezone(); -} elseif (!$timezone instanceof DateTimeZone) { -$timezone = new DateTimeZone($timezone); -} -} -if ($date instanceof DateTimeImmutable) { -return false !== $timezone ? $date->setTimezone($timezone) : $date; -} -if ($date instanceof DateTime || $date instanceof DateTimeInterface) { -$date = clone $date; -if (false !== $timezone) { -$date->setTimezone($timezone); -} -return $date; -} -if (null === $date ||'now'=== $date) { -return new DateTime($date, false !== $timezone ? $timezone : $env->getExtension('core')->getTimezone()); -} -$asString = (string) $date; -if (ctype_digit($asString) || (!empty($asString) &&'-'=== $asString[0] && ctype_digit(substr($asString, 1)))) { -$date = new DateTime('@'.$date); -} else { -$date = new DateTime($date, $env->getExtension('core')->getTimezone()); -} -if (false !== $timezone) { -$date->setTimezone($timezone); -} -return $date; -} -function twig_replace_filter($str, $from, $to = null) -{ -if ($from instanceof Traversable) { -$from = iterator_to_array($from); -} elseif (is_string($from) && is_string($to)) { -@trigger_error('Using "replace" with character by character replacement is deprecated and will be removed in Twig 2.0', E_USER_DEPRECATED); -return strtr($str, $from, $to); -} elseif (!is_array($from)) { -throw new Twig_Error_Runtime(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".',is_object($from) ? get_class($from) : gettype($from))); -} -return strtr($str, $from); -} -function twig_round($value, $precision = 0, $method ='common') -{ -if ('common'== $method) { -return round($value, $precision); -} -if ('ceil'!= $method &&'floor'!= $method) { -throw new Twig_Error_Runtime('The round filter only supports the "common", "ceil", and "floor" methods.'); -} -return $method($value * pow(10, $precision)) / pow(10, $precision); -} -function twig_number_format_filter(Twig_Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) -{ -$defaults = $env->getExtension('core')->getNumberFormat(); -if (null === $decimal) { -$decimal = $defaults[0]; -} -if (null === $decimalPoint) { -$decimalPoint = $defaults[1]; -} -if (null === $thousandSep) { -$thousandSep = $defaults[2]; -} -return number_format((float) $number, $decimal, $decimalPoint, $thousandSep); -} -function twig_urlencode_filter($url) -{ -if (is_array($url)) { -if (defined('PHP_QUERY_RFC3986')) { -return http_build_query($url,'','&', PHP_QUERY_RFC3986); -} -return http_build_query($url,'','&'); -} -return rawurlencode($url); -} -if (PHP_VERSION_ID < 50300) { -function twig_jsonencode_filter($value, $options = 0) -{ -if ($value instanceof Twig_Markup) { -$value = (string) $value; -} elseif (is_array($value)) { -array_walk_recursive($value,'_twig_markup2string'); -} -return json_encode($value); -} -} else { -function twig_jsonencode_filter($value, $options = 0) -{ -if ($value instanceof Twig_Markup) { -$value = (string) $value; -} elseif (is_array($value)) { -array_walk_recursive($value,'_twig_markup2string'); -} -return json_encode($value, $options); -} -} -function _twig_markup2string(&$value) -{ -if ($value instanceof Twig_Markup) { -$value = (string) $value; -} -} -function twig_array_merge($arr1, $arr2) -{ -if ($arr1 instanceof Traversable) { -$arr1 = iterator_to_array($arr1); -} elseif (!is_array($arr1)) { -throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', gettype($arr1))); -} -if ($arr2 instanceof Traversable) { -$arr2 = iterator_to_array($arr2); -} elseif (!is_array($arr2)) { -throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', gettype($arr2))); -} -return array_merge($arr1, $arr2); -} -function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false) -{ -if ($item instanceof Traversable) { -if ($item instanceof IteratorAggregate) { -$item = $item->getIterator(); -} -if ($start >= 0 && $length >= 0 && $item instanceof Iterator) { -try { -return iterator_to_array(new LimitIterator($item, $start, $length === null ? -1 : $length), $preserveKeys); -} catch (OutOfBoundsException $exception) { -return array(); -} -} -$item = iterator_to_array($item, $preserveKeys); -} -if (is_array($item)) { -return array_slice($item, $start, $length, $preserveKeys); -} -$item = (string) $item; -if (function_exists('mb_get_info') && null !== $charset = $env->getCharset()) { -return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset); -} -return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length)); -} -function twig_first(Twig_Environment $env, $item) -{ -$elements = twig_slice($env, $item, 0, 1, false); -return is_string($elements) ? $elements : current($elements); -} -function twig_last(Twig_Environment $env, $item) -{ -$elements = twig_slice($env, $item, -1, 1, false); -return is_string($elements) ? $elements : current($elements); -} -function twig_join_filter($value, $glue ='') -{ -if ($value instanceof Traversable) { -$value = iterator_to_array($value, false); -} -return implode($glue, (array) $value); -} -function twig_split_filter(Twig_Environment $env, $value, $delimiter, $limit = null) -{ -if (!empty($delimiter)) { -return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); -} -if (!function_exists('mb_get_info') || null === $charset = $env->getCharset()) { -return str_split($value, null === $limit ? 1 : $limit); -} -if ($limit <= 1) { -return preg_split('/(?getCharset()) { -$string = (string) $item; -if ('UTF-8'!= $charset) { -$item = twig_convert_encoding($string,'UTF-8', $charset); -} -preg_match_all('/./us', $item, $matches); -$string = implode('', array_reverse($matches[0])); -if ('UTF-8'!= $charset) { -$string = twig_convert_encoding($string, $charset,'UTF-8'); -} -return $string; -} -return strrev((string) $item); -} -function twig_sort_filter($array) -{ -if ($array instanceof Traversable) { -$array = iterator_to_array($array); -} elseif (!is_array($array)) { -throw new Twig_Error_Runtime(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', gettype($array))); -} -asort($array); -return $array; -} -function twig_in_filter($value, $compare) -{ -if (is_array($compare)) { -return in_array($value, $compare, is_object($value) || is_resource($value)); -} elseif (is_string($compare) && (is_string($value) || is_int($value) || is_float($value))) { -return''=== $value || false !== strpos($compare, (string) $value); -} elseif ($compare instanceof Traversable) { -return in_array($value, iterator_to_array($compare, false), is_object($value) || is_resource($value)); -} -return false; -} -function twig_escape_filter(Twig_Environment $env, $string, $strategy ='html', $charset = null, $autoescape = false) -{ -if ($autoescape && $string instanceof Twig_Markup) { -return $string; -} -if (!is_string($string)) { -if (is_object($string) && method_exists($string,'__toString')) { -$string = (string) $string; -} else { -return $string; -} -} -if (null === $charset) { -$charset = $env->getCharset(); -} -switch ($strategy) { -case'html': -static $htmlspecialcharsCharsets; -if (null === $htmlspecialcharsCharsets) { -if (defined('HHVM_VERSION')) { -$htmlspecialcharsCharsets = array('utf-8'=> true,'UTF-8'=> true); -} else { -$htmlspecialcharsCharsets = array('ISO-8859-1'=> true,'ISO8859-1'=> true,'ISO-8859-15'=> true,'ISO8859-15'=> true,'utf-8'=> true,'UTF-8'=> true,'CP866'=> true,'IBM866'=> true,'866'=> true,'CP1251'=> true,'WINDOWS-1251'=> true,'WIN-1251'=> true,'1251'=> true,'CP1252'=> true,'WINDOWS-1252'=> true,'1252'=> true,'KOI8-R'=> true,'KOI8-RU'=> true,'KOI8R'=> true,'BIG5'=> true,'950'=> true,'GB2312'=> true,'936'=> true,'BIG5-HKSCS'=> true,'SHIFT_JIS'=> true,'SJIS'=> true,'932'=> true,'EUC-JP'=> true,'EUCJP'=> true,'ISO8859-5'=> true,'ISO-8859-5'=> true,'MACROMAN'=> true, -); -} -} -if (isset($htmlspecialcharsCharsets[$charset])) { -return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); -} -if (isset($htmlspecialcharsCharsets[strtoupper($charset)])) { -$htmlspecialcharsCharsets[$charset] = true; -return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); -} -$string = twig_convert_encoding($string,'UTF-8', $charset); -$string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE,'UTF-8'); -return twig_convert_encoding($string, $charset,'UTF-8'); -case'js': -if ('UTF-8'!= $charset) { -$string = twig_convert_encoding($string,'UTF-8', $charset); -} -if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { -throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); -} -$string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su','_twig_escape_js_callback', $string); -if ('UTF-8'!= $charset) { -$string = twig_convert_encoding($string, $charset,'UTF-8'); -} -return $string; -case'css': -if ('UTF-8'!= $charset) { -$string = twig_convert_encoding($string,'UTF-8', $charset); -} -if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { -throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); -} -$string = preg_replace_callback('#[^a-zA-Z0-9]#Su','_twig_escape_css_callback', $string); -if ('UTF-8'!= $charset) { -$string = twig_convert_encoding($string, $charset,'UTF-8'); -} -return $string; -case'html_attr': -if ('UTF-8'!= $charset) { -$string = twig_convert_encoding($string,'UTF-8', $charset); -} -if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { -throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); -} -$string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su','_twig_escape_html_attr_callback', $string); -if ('UTF-8'!= $charset) { -$string = twig_convert_encoding($string, $charset,'UTF-8'); -} -return $string; -case'url': -if (PHP_VERSION_ID < 50300) { -return str_replace('%7E','~', rawurlencode($string)); -} -return rawurlencode($string); -default: -static $escapers; -if (null === $escapers) { -$escapers = $env->getExtension('core')->getEscapers(); -} -if (isset($escapers[$strategy])) { -return call_user_func($escapers[$strategy], $env, $string, $charset); -} -$validStrategies = implode(', ', array_merge(array('html','js','url','css','html_attr'), array_keys($escapers))); -throw new Twig_Error_Runtime(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); -} -} -function twig_escape_filter_is_safe(Twig_Node $filterArgs) -{ -foreach ($filterArgs as $arg) { -if ($arg instanceof Twig_Node_Expression_Constant) { -return array($arg->getAttribute('value')); -} -return array(); -} -return array('html'); -} -if (function_exists('mb_convert_encoding')) { -function twig_convert_encoding($string, $to, $from) -{ -return mb_convert_encoding($string, $to, $from); -} -} elseif (function_exists('iconv')) { -function twig_convert_encoding($string, $to, $from) -{ -return iconv($from, $to, $string); -} -} else { -function twig_convert_encoding($string, $to, $from) -{ -throw new Twig_Error_Runtime('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).'); -} -} -function _twig_escape_js_callback($matches) -{ -$char = $matches[0]; -if (!isset($char[1])) { -return'\\x'.strtoupper(substr('00'.bin2hex($char), -2)); -} -$char = twig_convert_encoding($char,'UTF-16BE','UTF-8'); -return'\\u'.strtoupper(substr('0000'.bin2hex($char), -4)); -} -function _twig_escape_css_callback($matches) -{ -$char = $matches[0]; -if (!isset($char[1])) { -$hex = ltrim(strtoupper(bin2hex($char)),'0'); -if (0 === strlen($hex)) { -$hex ='0'; -} -return'\\'.$hex.' '; -} -$char = twig_convert_encoding($char,'UTF-16BE','UTF-8'); -return'\\'.ltrim(strtoupper(bin2hex($char)),'0').' '; -} -function _twig_escape_html_attr_callback($matches) -{ -static $entityMap = array( -34 =>'quot', -38 =>'amp', -60 =>'lt', -62 =>'gt', -); -$chr = $matches[0]; -$ord = ord($chr); -if (($ord <= 0x1f && $chr !="\t"&& $chr !="\n"&& $chr !="\r") || ($ord >= 0x7f && $ord <= 0x9f)) { -return'�'; -} -if (strlen($chr) == 1) { -$hex = strtoupper(substr('00'.bin2hex($chr), -2)); -} else { -$chr = twig_convert_encoding($chr,'UTF-16BE','UTF-8'); -$hex = strtoupper(substr('0000'.bin2hex($chr), -4)); -} -$int = hexdec($hex); -if (array_key_exists($int, $entityMap)) { -return sprintf('&%s;', $entityMap[$int]); -} -return sprintf('&#x%s;', $hex); -} -if (function_exists('mb_get_info')) { -function twig_length_filter(Twig_Environment $env, $thing) -{ -return is_scalar($thing) ? mb_strlen($thing, $env->getCharset()) : count($thing); -} -function twig_upper_filter(Twig_Environment $env, $string) -{ -if (null !== ($charset = $env->getCharset())) { -return mb_strtoupper($string, $charset); -} -return strtoupper($string); -} -function twig_lower_filter(Twig_Environment $env, $string) -{ -if (null !== ($charset = $env->getCharset())) { -return mb_strtolower($string, $charset); -} -return strtolower($string); -} -function twig_title_string_filter(Twig_Environment $env, $string) -{ -if (null !== ($charset = $env->getCharset())) { -return mb_convert_case($string, MB_CASE_TITLE, $charset); -} -return ucwords(strtolower($string)); -} -function twig_capitalize_string_filter(Twig_Environment $env, $string) -{ -if (null !== $charset = $env->getCharset()) { -return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset); -} -return ucfirst(strtolower($string)); -} -} -else { -function twig_length_filter(Twig_Environment $env, $thing) -{ -return is_scalar($thing) ? strlen($thing) : count($thing); -} -function twig_title_string_filter(Twig_Environment $env, $string) -{ -return ucwords(strtolower($string)); -} -function twig_capitalize_string_filter(Twig_Environment $env, $string) -{ -return ucfirst(strtolower($string)); -} -} -function twig_ensure_traversable($seq) -{ -if ($seq instanceof Traversable || is_array($seq)) { -return $seq; -} -return array(); -} -function twig_test_empty($value) -{ -if ($value instanceof Countable) { -return 0 == count($value); -} -return''=== $value || false === $value || null === $value || array() === $value; -} -function twig_test_iterable($value) -{ -return $value instanceof Traversable || is_array($value); -} -function twig_include(Twig_Environment $env, $context, $template, $variables = array(), $withContext = true, $ignoreMissing = false, $sandboxed = false) -{ -$alreadySandboxed = false; -$sandbox = null; -if ($withContext) { -$variables = array_merge($context, $variables); -} -if ($isSandboxed = $sandboxed && $env->hasExtension('sandbox')) { -$sandbox = $env->getExtension('sandbox'); -if (!$alreadySandboxed = $sandbox->isSandboxed()) { -$sandbox->enableSandbox(); -} -} -$result = null; -try { -$result = $env->resolveTemplate($template)->render($variables); -} catch (Twig_Error_Loader $e) { -if (!$ignoreMissing) { -if ($isSandboxed && !$alreadySandboxed) { -$sandbox->disableSandbox(); -} -throw $e; -} -} -if ($isSandboxed && !$alreadySandboxed) { -$sandbox->disableSandbox(); -} -return $result; -} -function twig_source(Twig_Environment $env, $name, $ignoreMissing = false) -{ -try { -return $env->getLoader()->getSource($name); -} catch (Twig_Error_Loader $e) { -if (!$ignoreMissing) { -throw $e; -} -} -} -function twig_constant($constant, $object = null) -{ -if (null !== $object) { -$constant = get_class($object).'::'.$constant; -} -return constant($constant); -} -function twig_array_batch($items, $size, $fill = null) -{ -if ($items instanceof Traversable) { -$items = iterator_to_array($items, false); -} -$size = ceil($size); -$result = array_chunk($items, $size, true); -if (null !== $fill && !empty($result)) { -$last = count($result) - 1; -if ($fillCount = $size - count($result[$last])) { -$result[$last] = array_merge( -$result[$last], -array_fill(0, $fillCount, $fill) -); -} -} -return $result; -} -} -namespace -{ -class Twig_Extension_Escaper extends Twig_Extension -{ -protected $defaultStrategy; -public function __construct($defaultStrategy ='html') -{ -$this->setDefaultStrategy($defaultStrategy); -} -public function getTokenParsers() -{ -return array(new Twig_TokenParser_AutoEscape()); -} -public function getNodeVisitors() -{ -return array(new Twig_NodeVisitor_Escaper()); -} -public function getFilters() -{ -return array( -new Twig_SimpleFilter('raw','twig_raw_filter', array('is_safe'=> array('all'))), -); -} -public function setDefaultStrategy($defaultStrategy) -{ -if (true === $defaultStrategy) { -@trigger_error('Using "true" as the default strategy is deprecated. Use "html" instead.', E_USER_DEPRECATED); -$defaultStrategy ='html'; -} -if ('filename'=== $defaultStrategy) { -$defaultStrategy = array('Twig_FileExtensionEscapingStrategy','guess'); -} -$this->defaultStrategy = $defaultStrategy; -} -public function getDefaultStrategy($filename) -{ -if (!is_string($this->defaultStrategy) && false !== $this->defaultStrategy) { -return call_user_func($this->defaultStrategy, $filename); -} -return $this->defaultStrategy; -} -public function getName() -{ -return'escaper'; -} -} -function twig_raw_filter($string) -{ -return $string; -} -} -namespace -{ -class Twig_Extension_Optimizer extends Twig_Extension -{ -protected $optimizers; -public function __construct($optimizers = -1) -{ -$this->optimizers = $optimizers; -} -public function getNodeVisitors() -{ -return array(new Twig_NodeVisitor_Optimizer($this->optimizers)); -} -public function getName() -{ -return'optimizer'; -} -} -} -namespace -{ -interface Twig_LoaderInterface -{ -public function getSource($name); -public function getCacheKey($name); -public function isFresh($name, $time); -} -} -namespace -{ -class Twig_Markup implements Countable -{ -protected $content; -protected $charset; -public function __construct($content, $charset) -{ -$this->content = (string) $content; -$this->charset = $charset; -} -public function __toString() -{ -return $this->content; -} -public function count() -{ -return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content); -} -} -} -namespace -{ -interface Twig_TemplateInterface -{ -const ANY_CALL ='any'; -const ARRAY_CALL ='array'; -const METHOD_CALL ='method'; -public function render(array $context); -public function display(array $context, array $blocks = array()); -public function getEnvironment(); -} -} -namespace -{ -abstract class Twig_Template implements Twig_TemplateInterface -{ -protected static $cache = array(); -protected $parent; -protected $parents = array(); -protected $env; -protected $blocks = array(); -protected $traits = array(); -public function __construct(Twig_Environment $env) -{ -$this->env = $env; -} -abstract public function getTemplateName(); -public function getEnvironment() -{ -@trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED); -return $this->env; -} -public function getParent(array $context) -{ -if (null !== $this->parent) { -return $this->parent; -} -try { -$parent = $this->doGetParent($context); -if (false === $parent) { -return false; -} -if ($parent instanceof self) { -return $this->parents[$parent->getTemplateName()] = $parent; -} -if (!isset($this->parents[$parent])) { -$this->parents[$parent] = $this->loadTemplate($parent); -} -} catch (Twig_Error_Loader $e) { -$e->setTemplateFile(null); -$e->guess(); -throw $e; -} -return $this->parents[$parent]; -} -protected function doGetParent(array $context) -{ -return false; -} -public function isTraitable() -{ -return true; -} -public function displayParentBlock($name, array $context, array $blocks = array()) -{ -$name = (string) $name; -if (isset($this->traits[$name])) { -$this->traits[$name][0]->displayBlock($name, $context, $blocks, false); -} elseif (false !== $parent = $this->getParent($context)) { -$parent->displayBlock($name, $context, $blocks, false); -} else { -throw new Twig_Error_Runtime(sprintf('The template has no parent and no traits defining the "%s" block', $name), -1, $this->getTemplateName()); -} -} -public function displayBlock($name, array $context, array $blocks = array(), $useBlocks = true) -{ -$name = (string) $name; -if ($useBlocks && isset($blocks[$name])) { -$template = $blocks[$name][0]; -$block = $blocks[$name][1]; -} elseif (isset($this->blocks[$name])) { -$template = $this->blocks[$name][0]; -$block = $this->blocks[$name][1]; -} else { -$template = null; -$block = null; -} -if (null !== $template) { -if (!$template instanceof self) { -throw new LogicException('A block must be a method on a Twig_Template instance.'); -} -try { -$template->$block($context, $blocks); -} catch (Twig_Error $e) { -if (!$e->getTemplateFile()) { -$e->setTemplateFile($template->getTemplateName()); -} -if (false === $e->getTemplateLine()) { -$e->setTemplateLine(-1); -$e->guess(); -} -throw $e; -} catch (Exception $e) { -throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getTemplateName(), $e); -} -} elseif (false !== $parent = $this->getParent($context)) { -$parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false); -} -} -public function renderParentBlock($name, array $context, array $blocks = array()) -{ -ob_start(); -$this->displayParentBlock($name, $context, $blocks); -return ob_get_clean(); -} -public function renderBlock($name, array $context, array $blocks = array(), $useBlocks = true) -{ -ob_start(); -$this->displayBlock($name, $context, $blocks, $useBlocks); -return ob_get_clean(); -} -public function hasBlock($name) -{ -return isset($this->blocks[(string) $name]); -} -public function getBlockNames() -{ -return array_keys($this->blocks); -} -protected function loadTemplate($template, $templateName = null, $line = null, $index = null) -{ -try { -if (is_array($template)) { -return $this->env->resolveTemplate($template); -} -if ($template instanceof self) { -return $template; -} -return $this->env->loadTemplate($template, $index); -} catch (Twig_Error $e) { -if (!$e->getTemplateFile()) { -$e->setTemplateFile($templateName ? $templateName : $this->getTemplateName()); -} -if ($e->getTemplateLine()) { -throw $e; -} -if (!$line) { -$e->guess(); -} else { -$e->setTemplateLine($line); -} -throw $e; -} -} -public function getBlocks() -{ -return $this->blocks; -} -public function getSource() -{ -$reflector = new ReflectionClass($this); -$file = $reflector->getFileName(); -if (!file_exists($file)) { -return; -} -$source = file($file, FILE_IGNORE_NEW_LINES); -array_splice($source, 0, $reflector->getEndLine()); -$i = 0; -while (isset($source[$i]) &&'/* */'=== substr_replace($source[$i],'', 3, -2)) { -$source[$i] = str_replace('*//* ','*/', substr($source[$i], 3, -2)); -++$i; -} -array_splice($source, $i); -return implode("\n", $source); -} -public function display(array $context, array $blocks = array()) -{ -$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); -} -public function render(array $context) -{ -$level = ob_get_level(); -ob_start(); -try { -$this->display($context); -} catch (Exception $e) { -while (ob_get_level() > $level) { -ob_end_clean(); -} -throw $e; -} -return ob_get_clean(); -} -protected function displayWithErrorHandling(array $context, array $blocks = array()) -{ -try { -$this->doDisplay($context, $blocks); -} catch (Twig_Error $e) { -if (!$e->getTemplateFile()) { -$e->setTemplateFile($this->getTemplateName()); -} -if (false === $e->getTemplateLine()) { -$e->setTemplateLine(-1); -$e->guess(); -} -throw $e; -} catch (Exception $e) { -throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getTemplateName(), $e); -} -} -abstract protected function doDisplay(array $context, array $blocks = array()); -final protected function getContext($context, $item, $ignoreStrictCheck = false) -{ -if (!array_key_exists($item, $context)) { -if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { -return; -} -throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist', $item), -1, $this->getTemplateName()); -} -return $context[$item]; -} -protected function getAttribute($object, $item, array $arguments = array(), $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) -{ -if (self::METHOD_CALL !== $type) { -$arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item; -if ((is_array($object) && array_key_exists($arrayItem, $object)) -|| ($object instanceof ArrayAccess && isset($object[$arrayItem])) -) { -if ($isDefinedTest) { -return true; -} -return $object[$arrayItem]; -} -if (self::ARRAY_CALL === $type || !is_object($object)) { -if ($isDefinedTest) { -return false; -} -if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { -return; -} -if ($object instanceof ArrayAccess) { -$message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist', $arrayItem, get_class($object)); -} elseif (is_object($object)) { -$message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object)); -} elseif (is_array($object)) { -if (empty($object)) { -$message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem); -} else { -$message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object))); -} -} elseif (self::ARRAY_CALL === $type) { -if (null === $object) { -$message = sprintf('Impossible to access a key ("%s") on a null variable', $item); -} else { -$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object); -} -} elseif (null === $object) { -$message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item); -} else { -$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object); -} -throw new Twig_Error_Runtime($message, -1, $this->getTemplateName()); -} -} -if (!is_object($object)) { -if ($isDefinedTest) { -return false; -} -if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { -return; -} -if (null === $object) { -$message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item); -} else { -$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object); -} -throw new Twig_Error_Runtime($message, -1, $this->getTemplateName()); -} -if (self::METHOD_CALL !== $type && !$object instanceof self) { if (isset($object->$item) || array_key_exists((string) $item, $object)) { -if ($isDefinedTest) { -return true; -} -if ($this->env->hasExtension('sandbox')) { -$this->env->getExtension('sandbox')->checkPropertyAllowed($object, $item); -} -return $object->$item; -} -} -$class = get_class($object); -if (!isset(self::$cache[$class]['methods'])) { -if ($object instanceof self) { -$ref = new ReflectionClass($class); -$methods = array(); -foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) { -$methodName = strtolower($refMethod->name); -if ('getenvironment'!== $methodName) { -$methods[$methodName] = true; -} -} -self::$cache[$class]['methods'] = $methods; -} else { -self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object))); -} -} -$call = false; -$lcItem = strtolower($item); -if (isset(self::$cache[$class]['methods'][$lcItem])) { -$method = (string) $item; -} elseif (isset(self::$cache[$class]['methods']['get'.$lcItem])) { -$method ='get'.$item; -} elseif (isset(self::$cache[$class]['methods']['is'.$lcItem])) { -$method ='is'.$item; -} elseif (isset(self::$cache[$class]['methods']['__call'])) { -$method = (string) $item; -$call = true; -} else { -if ($isDefinedTest) { -return false; -} -if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { -return; -} -throw new Twig_Error_Runtime(sprintf('Method "%s" for object "%s" does not exist', $item, get_class($object)), -1, $this->getTemplateName()); -} -if ($isDefinedTest) { -return true; -} -if ($this->env->hasExtension('sandbox')) { -$this->env->getExtension('sandbox')->checkMethodAllowed($object, $method); -} -try { -$ret = call_user_func_array(array($object, $method), $arguments); -} catch (BadMethodCallException $e) { -if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { -return; -} -throw $e; -} -if ($object instanceof Twig_TemplateInterface) { -return $ret ===''?'': new Twig_Markup($ret, $this->env->getCharset()); -} -return $ret; -} -} -} -namespace Monolog\Formatter -{ -interface FormatterInterface -{ -public function format(array $record); -public function formatBatch(array $records); -} -} -namespace Monolog\Formatter -{ -use Exception; -class NormalizerFormatter implements FormatterInterface -{ -const SIMPLE_DATE ="Y-m-d H:i:s"; -protected $dateFormat; -public function __construct($dateFormat = null) -{ -$this->dateFormat = $dateFormat ?: static::SIMPLE_DATE; -if (!function_exists('json_encode')) { -throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter'); -} -} -public function format(array $record) -{ -return $this->normalize($record); -} -public function formatBatch(array $records) -{ -foreach ($records as $key => $record) { -$records[$key] = $this->format($record); -} -return $records; -} -protected function normalize($data) -{ -if (null === $data || is_scalar($data)) { -if (is_float($data)) { -if (is_infinite($data)) { -return ($data > 0 ?'':'-') .'INF'; -} -if (is_nan($data)) { -return'NaN'; -} -} -return $data; -} -if (is_array($data) || $data instanceof \Traversable) { -$normalized = array(); -$count = 1; -foreach ($data as $key => $value) { -if ($count++ >= 1000) { -$normalized['...'] ='Over 1000 items, aborting normalization'; -break; -} -$normalized[$key] = $this->normalize($value); -} -return $normalized; -} -if ($data instanceof \DateTime) { -return $data->format($this->dateFormat); -} -if (is_object($data)) { -if ($data instanceof Exception) { -return $this->normalizeException($data); -} -if (method_exists($data,'__toString') && !$data instanceof \JsonSerializable) { -$value = (string) $data; -} else { -$value = $this->toJson($data, true); -} -return sprintf("[object] (%s: %s)", get_class($data), $value); -} -if (is_resource($data)) { -return sprintf('[resource] (%s)', get_resource_type($data)); -} -return'[unknown('.gettype($data).')]'; -} -protected function normalizeException(Exception $e) -{ -$data = array('class'=> get_class($e),'message'=> $e->getMessage(),'code'=> $e->getCode(),'file'=> $e->getFile().':'.$e->getLine(), -); -$trace = $e->getTrace(); -foreach ($trace as $frame) { -if (isset($frame['file'])) { -$data['trace'][] = $frame['file'].':'.$frame['line']; -} else { -$data['trace'][] = $this->toJson($this->normalize($frame), true); -} -} -if ($previous = $e->getPrevious()) { -$data['previous'] = $this->normalizeException($previous); -} -return $data; -} -protected function toJson($data, $ignoreErrors = false) -{ -if ($ignoreErrors) { -if (version_compare(PHP_VERSION,'5.4.0','>=')) { -return @json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} -return @json_encode($data); -} -if (version_compare(PHP_VERSION,'5.4.0','>=')) { -$json = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} else { -$json = json_encode($data); -} -if ($json === false) { -$this->throwEncodeError(json_last_error(), $data); -} -return $json; -} -private function throwEncodeError($code, $data) -{ -switch ($code) { -case JSON_ERROR_DEPTH: -$msg ='Maximum stack depth exceeded'; -break; -case JSON_ERROR_STATE_MISMATCH: -$msg ='Underflow or the modes mismatch'; -break; -case JSON_ERROR_CTRL_CHAR: -$msg ='Unexpected control character found'; -break; -case JSON_ERROR_UTF8: -$msg ='Malformed UTF-8 characters, possibly incorrectly encoded'; -break; -default: -$msg ='Unknown error'; -} -throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true)); -} -} -} -namespace Monolog\Formatter -{ -use Exception; -class LineFormatter extends NormalizerFormatter -{ -const SIMPLE_FORMAT ="[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; -protected $format; -protected $allowInlineLineBreaks; -protected $ignoreEmptyContextAndExtra; -protected $includeStacktraces; -public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false) -{ -$this->format = $format ?: static::SIMPLE_FORMAT; -$this->allowInlineLineBreaks = $allowInlineLineBreaks; -$this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra; -parent::__construct($dateFormat); -} -public function includeStacktraces($include = true) -{ -$this->includeStacktraces = $include; -if ($this->includeStacktraces) { -$this->allowInlineLineBreaks = true; -} -} -public function allowInlineLineBreaks($allow = true) -{ -$this->allowInlineLineBreaks = $allow; -} -public function ignoreEmptyContextAndExtra($ignore = true) -{ -$this->ignoreEmptyContextAndExtra = $ignore; -} -public function format(array $record) -{ -$vars = parent::format($record); -$output = $this->format; -foreach ($vars['extra'] as $var => $val) { -if (false !== strpos($output,'%extra.'.$var.'%')) { -$output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output); -unset($vars['extra'][$var]); -} -} -if ($this->ignoreEmptyContextAndExtra) { -if (empty($vars['context'])) { -unset($vars['context']); -$output = str_replace('%context%','', $output); -} -if (empty($vars['extra'])) { -unset($vars['extra']); -$output = str_replace('%extra%','', $output); -} -} -foreach ($vars as $var => $val) { -if (false !== strpos($output,'%'.$var.'%')) { -$output = str_replace('%'.$var.'%', $this->stringify($val), $output); -} -} -return $output; -} -public function formatBatch(array $records) -{ -$message =''; -foreach ($records as $record) { -$message .= $this->format($record); -} -return $message; -} -public function stringify($value) -{ -return $this->replaceNewlines($this->convertToString($value)); -} -protected function normalizeException(Exception $e) -{ -$previousText =''; -if ($previous = $e->getPrevious()) { -do { -$previousText .=', '.get_class($previous).'(code: '.$previous->getCode().'): '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine(); -} while ($previous = $previous->getPrevious()); -} -$str ='[object] ('.get_class($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')'; -if ($this->includeStacktraces) { -$str .="\n[stacktrace]\n".$e->getTraceAsString(); -} -return $str; -} -protected function convertToString($data) -{ -if (null === $data || is_bool($data)) { -return var_export($data, true); -} -if (is_scalar($data)) { -return (string) $data; -} -if (version_compare(PHP_VERSION,'5.4.0','>=')) { -return $this->toJson($data, true); -} -return str_replace('\\/','/', @json_encode($data)); -} -protected function replaceNewlines($str) -{ -if ($this->allowInlineLineBreaks) { -return $str; -} -return str_replace(array("\r\n","\r","\n"),' ', $str); -} -} -} -namespace Monolog\Handler -{ -use Monolog\Formatter\FormatterInterface; -interface HandlerInterface -{ -public function isHandling(array $record); -public function handle(array $record); -public function handleBatch(array $records); -public function pushProcessor($callback); -public function popProcessor(); -public function setFormatter(FormatterInterface $formatter); -public function getFormatter(); -} -} -namespace Monolog\Handler -{ -use Monolog\Logger; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LineFormatter; -abstract class AbstractHandler implements HandlerInterface -{ -protected $level = Logger::DEBUG; -protected $bubble = true; -protected $formatter; -protected $processors = array(); -public function __construct($level = Logger::DEBUG, $bubble = true) -{ -$this->setLevel($level); -$this->bubble = $bubble; -} -public function isHandling(array $record) -{ -return $record['level'] >= $this->level; -} -public function handleBatch(array $records) -{ -foreach ($records as $record) { -$this->handle($record); -} -} -public function close() -{ -} -public function pushProcessor($callback) -{ -if (!is_callable($callback)) { -throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); -} -array_unshift($this->processors, $callback); -return $this; -} -public function popProcessor() -{ -if (!$this->processors) { -throw new \LogicException('You tried to pop from an empty processor stack.'); -} -return array_shift($this->processors); -} -public function setFormatter(FormatterInterface $formatter) -{ -$this->formatter = $formatter; -return $this; -} -public function getFormatter() -{ -if (!$this->formatter) { -$this->formatter = $this->getDefaultFormatter(); -} -return $this->formatter; -} -public function setLevel($level) -{ -$this->level = Logger::toMonologLevel($level); -return $this; -} -public function getLevel() -{ -return $this->level; -} -public function setBubble($bubble) -{ -$this->bubble = $bubble; -return $this; -} -public function getBubble() -{ -return $this->bubble; -} -public function __destruct() -{ -try { -$this->close(); -} catch (\Exception $e) { -} -} -protected function getDefaultFormatter() -{ -return new LineFormatter(); -} -} -} -namespace Monolog\Handler -{ -abstract class AbstractProcessingHandler extends AbstractHandler -{ -public function handle(array $record) -{ -if (!$this->isHandling($record)) { -return false; -} -$record = $this->processRecord($record); -$record['formatted'] = $this->getFormatter()->format($record); -$this->write($record); -return false === $this->bubble; -} -abstract protected function write(array $record); -protected function processRecord(array $record) -{ -if ($this->processors) { -foreach ($this->processors as $processor) { -$record = call_user_func($processor, $record); -} -} -return $record; -} -} -} -namespace Monolog\Handler -{ -use Monolog\Logger; -class StreamHandler extends AbstractProcessingHandler -{ -protected $stream; -protected $url; -private $errorMessage; -protected $filePermission; -protected $useLocking; -private $dirCreated; -public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false) -{ -parent::__construct($level, $bubble); -if (is_resource($stream)) { -$this->stream = $stream; -} elseif (is_string($stream)) { -$this->url = $stream; -} else { -throw new \InvalidArgumentException('A stream must either be a resource or a string.'); -} -$this->filePermission = $filePermission; -$this->useLocking = $useLocking; -} -public function close() -{ -if (is_resource($this->stream)) { -fclose($this->stream); -} -$this->stream = null; -} -protected function write(array $record) -{ -if (!is_resource($this->stream)) { -if (!$this->url) { -throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); -} -$this->createDir(); -$this->errorMessage = null; -set_error_handler(array($this,'customErrorHandler')); -$this->stream = fopen($this->url,'a'); -if ($this->filePermission !== null) { -@chmod($this->url, $this->filePermission); -} -restore_error_handler(); -if (!is_resource($this->stream)) { -$this->stream = null; -throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url)); -} -} -if ($this->useLocking) { -flock($this->stream, LOCK_EX); -} -fwrite($this->stream, (string) $record['formatted']); -if ($this->useLocking) { -flock($this->stream, LOCK_UN); -} -} -private function customErrorHandler($code, $msg) -{ -$this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }','', $msg); -} -private function getDirFromStream($stream) -{ -$pos = strpos($stream,'://'); -if ($pos === false) { -return dirname($stream); -} -if ('file://'=== substr($stream, 0, 7)) { -return dirname(substr($stream, 7)); -} -return; -} -private function createDir() -{ -if ($this->dirCreated) { -return; -} -$dir = $this->getDirFromStream($this->url); -if (null !== $dir && !is_dir($dir)) { -$this->errorMessage = null; -set_error_handler(array($this,'customErrorHandler')); -$status = mkdir($dir, 0777, true); -restore_error_handler(); -if (false === $status) { -throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir)); -} -} -$this->dirCreated = true; -} -} -} -namespace Monolog\Handler -{ -use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; -use Monolog\Handler\FingersCrossed\ActivationStrategyInterface; -use Monolog\Logger; -class FingersCrossedHandler extends AbstractHandler -{ -protected $handler; -protected $activationStrategy; -protected $buffering = true; -protected $bufferSize; -protected $buffer = array(); -protected $stopBuffering; -protected $passthruLevel; -public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null) -{ -if (null === $activationStrategy) { -$activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING); -} -if (!$activationStrategy instanceof ActivationStrategyInterface) { -$activationStrategy = new ErrorLevelActivationStrategy($activationStrategy); -} -$this->handler = $handler; -$this->activationStrategy = $activationStrategy; -$this->bufferSize = $bufferSize; -$this->bubble = $bubble; -$this->stopBuffering = $stopBuffering; -if ($passthruLevel !== null) { -$this->passthruLevel = Logger::toMonologLevel($passthruLevel); -} -if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { -throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); -} -} -public function isHandling(array $record) -{ -return true; -} -public function handle(array $record) -{ -if ($this->processors) { -foreach ($this->processors as $processor) { -$record = call_user_func($processor, $record); -} -} -if ($this->buffering) { -$this->buffer[] = $record; -if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) { -array_shift($this->buffer); -} -if ($this->activationStrategy->isHandlerActivated($record)) { -if ($this->stopBuffering) { -$this->buffering = false; -} -if (!$this->handler instanceof HandlerInterface) { -$this->handler = call_user_func($this->handler, $record, $this); -if (!$this->handler instanceof HandlerInterface) { -throw new \RuntimeException("The factory callable should return a HandlerInterface"); -} -} -$this->handler->handleBatch($this->buffer); -$this->buffer = array(); -} -} else { -$this->handler->handle($record); -} -return false === $this->bubble; -} -public function close() -{ -if (null !== $this->passthruLevel) { -$level = $this->passthruLevel; -$this->buffer = array_filter($this->buffer, function ($record) use ($level) { -return $record['level'] >= $level; -}); -if (count($this->buffer) > 0) { -$this->handler->handleBatch($this->buffer); -$this->buffer = array(); -} -} -} -public function reset() -{ -$this->buffering = true; -} -public function clear() -{ -$this->buffer = array(); -$this->reset(); -} -} -} -namespace Monolog\Handler -{ -use Monolog\Logger; -class FilterHandler extends AbstractHandler -{ -protected $handler; -protected $acceptedLevels; -protected $bubble; -public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true) -{ -$this->handler = $handler; -$this->bubble = $bubble; -$this->setAcceptedLevels($minLevelOrList, $maxLevel); -if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { -throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); -} -} -public function getAcceptedLevels() -{ -return array_flip($this->acceptedLevels); -} -public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY) -{ -if (is_array($minLevelOrList)) { -$acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList); -} else { -$minLevelOrList = Logger::toMonologLevel($minLevelOrList); -$maxLevel = Logger::toMonologLevel($maxLevel); -$acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) { -return $level >= $minLevelOrList && $level <= $maxLevel; -})); -} -$this->acceptedLevels = array_flip($acceptedLevels); -} -public function isHandling(array $record) -{ -return isset($this->acceptedLevels[$record['level']]); -} -public function handle(array $record) -{ -if (!$this->isHandling($record)) { -return false; -} -if (!$this->handler instanceof HandlerInterface) { -$this->handler = call_user_func($this->handler, $record, $this); -if (!$this->handler instanceof HandlerInterface) { -throw new \RuntimeException("The factory callable should return a HandlerInterface"); -} -} -if ($this->processors) { -foreach ($this->processors as $processor) { -$record = call_user_func($processor, $record); -} -} -$this->handler->handle($record); -return false === $this->bubble; -} -public function handleBatch(array $records) -{ -$filtered = array(); -foreach ($records as $record) { -if ($this->isHandling($record)) { -$filtered[] = $record; -} -} -$this->handler->handleBatch($filtered); -} -} -} -namespace Monolog\Handler -{ -class TestHandler extends AbstractProcessingHandler -{ -protected $records = array(); -protected $recordsByLevel = array(); -public function getRecords() -{ -return $this->records; -} -protected function hasRecordRecords($level) -{ -return isset($this->recordsByLevel[$level]); -} -protected function hasRecord($record, $level) -{ -if (is_array($record)) { -$record = $record['message']; -} -return $this->hasRecordThatPasses(function ($rec) use ($record) { -return $rec['message'] === $record; -}, $level); -} -public function hasRecordThatContains($message, $level) -{ -return $this->hasRecordThatPasses(function ($rec) use ($message) { -return strpos($rec['message'], $message) !== false; -}, $level); -} -public function hasRecordThatMatches($regex, $level) -{ -return $this->hasRecordThatPasses(function ($rec) use ($regex) { -return preg_match($regex, $rec['message']) > 0; -}, $level); -} -public function hasRecordThatPasses($predicate, $level) -{ -if (!is_callable($predicate)) { -throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds"); -} -if (!isset($this->recordsByLevel[$level])) { -return false; -} -foreach ($this->recordsByLevel[$level] as $i => $rec) { -if (call_user_func($predicate, $rec, $i)) { -return true; -} -} -return false; -} -protected function write(array $record) -{ -$this->recordsByLevel[$record['level']][] = $record; -$this->records[] = $record; -} -public function __call($method, $args) -{ -if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { -$genericMethod = $matches[1] .'Record'. $matches[3]; -$level = constant('Monolog\Logger::'. strtoupper($matches[2])); -if (method_exists($this, $genericMethod)) { -$args[] = $level; -return call_user_func_array(array($this, $genericMethod), $args); -} -} -throw new \BadMethodCallException('Call to undefined method '. get_class($this) .'::'. $method .'()'); -} -} -} -namespace Psr\Log -{ -interface LoggerInterface -{ -public function emergency($message, array $context = array()); -public function alert($message, array $context = array()); -public function critical($message, array $context = array()); -public function error($message, array $context = array()); -public function warning($message, array $context = array()); -public function notice($message, array $context = array()); -public function info($message, array $context = array()); -public function debug($message, array $context = array()); -public function log($level, $message, array $context = array()); -} -} -namespace Monolog -{ -use Monolog\Handler\HandlerInterface; -use Monolog\Handler\StreamHandler; -use Psr\Log\LoggerInterface; -use Psr\Log\InvalidArgumentException; -class Logger implements LoggerInterface -{ -const DEBUG = 100; -const INFO = 200; -const NOTICE = 250; -const WARNING = 300; -const ERROR = 400; -const CRITICAL = 500; -const ALERT = 550; -const EMERGENCY = 600; -const API = 1; -protected static $levels = array( -100 =>'DEBUG', -200 =>'INFO', -250 =>'NOTICE', -300 =>'WARNING', -400 =>'ERROR', -500 =>'CRITICAL', -550 =>'ALERT', -600 =>'EMERGENCY', -); -protected static $timezone; -protected $name; -protected $handlers; -protected $processors; -public function __construct($name, array $handlers = array(), array $processors = array()) -{ -$this->name = $name; -$this->handlers = $handlers; -$this->processors = $processors; -} -public function getName() -{ -return $this->name; -} -public function pushHandler(HandlerInterface $handler) -{ -array_unshift($this->handlers, $handler); -return $this; -} -public function popHandler() -{ -if (!$this->handlers) { -throw new \LogicException('You tried to pop from an empty handler stack.'); -} -return array_shift($this->handlers); -} -public function setHandlers(array $handlers) -{ -$this->handlers = array(); -foreach (array_reverse($handlers) as $handler) { -$this->pushHandler($handler); -} -return $this; -} -public function getHandlers() -{ -return $this->handlers; -} -public function pushProcessor($callback) -{ -if (!is_callable($callback)) { -throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); -} -array_unshift($this->processors, $callback); -return $this; -} -public function popProcessor() -{ -if (!$this->processors) { -throw new \LogicException('You tried to pop from an empty processor stack.'); -} -return array_shift($this->processors); -} -public function getProcessors() -{ -return $this->processors; -} -public function addRecord($level, $message, array $context = array()) -{ -if (!$this->handlers) { -$this->pushHandler(new StreamHandler('php://stderr', static::DEBUG)); -} -$levelName = static::getLevelName($level); -$handlerKey = null; -foreach ($this->handlers as $key => $handler) { -if ($handler->isHandling(array('level'=> $level))) { -$handlerKey = $key; -break; -} -} -if (null === $handlerKey) { -return false; -} -if (!static::$timezone) { -static::$timezone = new \DateTimeZone(date_default_timezone_get() ?:'UTC'); -} -$record = array('message'=> (string) $message,'context'=> $context,'level'=> $level,'level_name'=> $levelName,'channel'=> $this->name,'datetime'=> \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone)->setTimezone(static::$timezone),'extra'=> array(), -); -foreach ($this->processors as $processor) { -$record = call_user_func($processor, $record); -} -while (isset($this->handlers[$handlerKey]) && -false === $this->handlers[$handlerKey]->handle($record)) { -$handlerKey++; -} -return true; -} -public function addDebug($message, array $context = array()) -{ -return $this->addRecord(static::DEBUG, $message, $context); -} -public function addInfo($message, array $context = array()) -{ -return $this->addRecord(static::INFO, $message, $context); -} -public function addNotice($message, array $context = array()) -{ -return $this->addRecord(static::NOTICE, $message, $context); -} -public function addWarning($message, array $context = array()) -{ -return $this->addRecord(static::WARNING, $message, $context); -} -public function addError($message, array $context = array()) -{ -return $this->addRecord(static::ERROR, $message, $context); -} -public function addCritical($message, array $context = array()) -{ -return $this->addRecord(static::CRITICAL, $message, $context); -} -public function addAlert($message, array $context = array()) -{ -return $this->addRecord(static::ALERT, $message, $context); -} -public function addEmergency($message, array $context = array()) -{ -return $this->addRecord(static::EMERGENCY, $message, $context); -} -public static function getLevels() -{ -return array_flip(static::$levels); -} -public static function getLevelName($level) -{ -if (!isset(static::$levels[$level])) { -throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels))); -} -return static::$levels[$level]; -} -public static function toMonologLevel($level) -{ -if (is_string($level) && defined(__CLASS__.'::'.strtoupper($level))) { -return constant(__CLASS__.'::'.strtoupper($level)); -} -return $level; -} -public function isHandling($level) -{ -$record = array('level'=> $level, -); -foreach ($this->handlers as $handler) { -if ($handler->isHandling($record)) { -return true; -} -} -return false; -} -public function log($level, $message, array $context = array()) -{ -$level = static::toMonologLevel($level); -return $this->addRecord($level, $message, $context); -} -public function debug($message, array $context = array()) -{ -return $this->addRecord(static::DEBUG, $message, $context); -} -public function info($message, array $context = array()) -{ -return $this->addRecord(static::INFO, $message, $context); -} -public function notice($message, array $context = array()) -{ -return $this->addRecord(static::NOTICE, $message, $context); -} -public function warn($message, array $context = array()) -{ -return $this->addRecord(static::WARNING, $message, $context); -} -public function warning($message, array $context = array()) -{ -return $this->addRecord(static::WARNING, $message, $context); -} -public function err($message, array $context = array()) -{ -return $this->addRecord(static::ERROR, $message, $context); -} -public function error($message, array $context = array()) -{ -return $this->addRecord(static::ERROR, $message, $context); -} -public function crit($message, array $context = array()) -{ -return $this->addRecord(static::CRITICAL, $message, $context); -} -public function critical($message, array $context = array()) -{ -return $this->addRecord(static::CRITICAL, $message, $context); -} -public function alert($message, array $context = array()) -{ -return $this->addRecord(static::ALERT, $message, $context); -} -public function emerg($message, array $context = array()) -{ -return $this->addRecord(static::EMERGENCY, $message, $context); -} -public function emergency($message, array $context = array()) -{ -return $this->addRecord(static::EMERGENCY, $message, $context); -} -public static function setTimezone(\DateTimeZone $tz) -{ -self::$timezone = $tz; -} -} -} -namespace Symfony\Component\HttpKernel\Log -{ -use Psr\Log\LoggerInterface as PsrLogger; -interface LoggerInterface extends PsrLogger -{ -public function emerg($message, array $context = array()); -public function crit($message, array $context = array()); -public function err($message, array $context = array()); -public function warn($message, array $context = array()); -} -} -namespace Symfony\Component\HttpKernel\Log -{ -interface DebugLoggerInterface -{ -public function getLogs(); -public function countErrors(); -} -} -namespace Symfony\Bridge\Monolog -{ -use Monolog\Logger as BaseLogger; -use Symfony\Component\HttpKernel\Log\LoggerInterface; -use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; -class Logger extends BaseLogger implements LoggerInterface, DebugLoggerInterface -{ -public function emerg($message, array $context = array()) -{ -@trigger_error('The '.__METHOD__.' method inherited from the Symfony\Component\HttpKernel\Log\LoggerInterface interface is deprecated since version 2.2 and will be removed in 3.0. Use the emergency() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED); -return parent::addRecord(BaseLogger::EMERGENCY, $message, $context); -} -public function crit($message, array $context = array()) -{ -@trigger_error('The '.__METHOD__.' method inherited from the Symfony\Component\HttpKernel\Log\LoggerInterface interface is deprecated since version 2.2 and will be removed in 3.0. Use the method critical() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED); -return parent::addRecord(BaseLogger::CRITICAL, $message, $context); -} -public function err($message, array $context = array()) -{ -@trigger_error('The '.__METHOD__.' method inherited from the Symfony\Component\HttpKernel\Log\LoggerInterface interface is deprecated since version 2.2 and will be removed in 3.0. Use the error() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED); -return parent::addRecord(BaseLogger::ERROR, $message, $context); -} -public function warn($message, array $context = array()) -{ -@trigger_error('The '.__METHOD__.' method inherited from the Symfony\Component\HttpKernel\Log\LoggerInterface interface is deprecated since version 2.2 and will be removed in 3.0. Use the warning() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED); -return parent::addRecord(BaseLogger::WARNING, $message, $context); -} -public function getLogs() -{ -if ($logger = $this->getDebugLogger()) { -return $logger->getLogs(); -} -return array(); -} -public function countErrors() -{ -if ($logger = $this->getDebugLogger()) { -return $logger->countErrors(); -} -return 0; -} -private function getDebugLogger() -{ -foreach ($this->handlers as $handler) { -if ($handler instanceof DebugLoggerInterface) { -return $handler; -} -} -} -} -} -namespace Symfony\Bridge\Monolog\Handler -{ -use Monolog\Logger; -use Monolog\Handler\TestHandler; -use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; -class DebugHandler extends TestHandler implements DebugLoggerInterface -{ -public function getLogs() -{ -$records = array(); -foreach ($this->records as $record) { -$records[] = array('timestamp'=> $record['datetime']->getTimestamp(),'message'=> $record['message'],'priority'=> $record['level'],'priorityName'=> $record['level_name'],'context'=> $record['context'], -); -} -return $records; -} -public function countErrors() -{ -$cnt = 0; -$levels = array(Logger::ERROR, Logger::CRITICAL, Logger::ALERT, Logger::EMERGENCY); -foreach ($levels as $level) { -if (isset($this->recordsByLevel[$level])) { -$cnt += count($this->recordsByLevel[$level]); -} -} -return $cnt; -} -} -} -namespace Monolog\Handler\FingersCrossed -{ -interface ActivationStrategyInterface -{ -public function isHandlerActivated(array $record); -} -} -namespace Monolog\Handler\FingersCrossed -{ -use Monolog\Logger; -class ErrorLevelActivationStrategy implements ActivationStrategyInterface -{ -private $actionLevel; -public function __construct($actionLevel) -{ -$this->actionLevel = Logger::toMonologLevel($actionLevel); -} -public function isHandlerActivated(array $record) -{ -return $record['level'] >= $this->actionLevel; -} -} -} -namespace Assetic -{ -interface ValueSupplierInterface -{ -public function getValues(); -} -} -namespace Symfony\Bundle\AsseticBundle -{ -use Assetic\ValueSupplierInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; -class DefaultValueSupplier implements ValueSupplierInterface -{ -protected $container; -public function __construct(ContainerInterface $container) -{ -$this->container = $container; -} -public function getValues() -{ -if (!$this->container->isScopeActive('request')) { -return array(); -} -$request = $this->container->get('request'); -return array('locale'=> $request->getLocale(),'env'=> $this->container->getParameter('kernel.environment'), -); -} -} -} -namespace Assetic\Factory -{ -use Assetic\Asset\AssetCollection; -use Assetic\Asset\AssetCollectionInterface; -use Assetic\Asset\AssetInterface; -use Assetic\Asset\AssetReference; -use Assetic\Asset\FileAsset; -use Assetic\Asset\GlobAsset; -use Assetic\Asset\HttpAsset; -use Assetic\AssetManager; -use Assetic\Factory\Worker\WorkerInterface; -use Assetic\Filter\DependencyExtractorInterface; -use Assetic\FilterManager; -class AssetFactory -{ -private $root; -private $debug; -private $output; -private $workers; -private $am; -private $fm; -public function __construct($root, $debug = false) -{ -$this->root = rtrim($root,'/'); -$this->debug = $debug; -$this->output ='assetic/*'; -$this->workers = array(); -} -public function setDebug($debug) -{ -$this->debug = $debug; -} -public function isDebug() -{ -return $this->debug; -} -public function setDefaultOutput($output) -{ -$this->output = $output; -} -public function addWorker(WorkerInterface $worker) -{ -$this->workers[] = $worker; -} -public function getAssetManager() -{ -return $this->am; -} -public function setAssetManager(AssetManager $am) -{ -$this->am = $am; -} -public function getFilterManager() -{ -return $this->fm; -} -public function setFilterManager(FilterManager $fm) -{ -$this->fm = $fm; -} -public function createAsset($inputs = array(), $filters = array(), array $options = array()) -{ -if (!is_array($inputs)) { -$inputs = array($inputs); -} -if (!is_array($filters)) { -$filters = array($filters); -} -if (!isset($options['output'])) { -$options['output'] = $this->output; -} -if (!isset($options['vars'])) { -$options['vars'] = array(); -} -if (!isset($options['debug'])) { -$options['debug'] = $this->debug; -} -if (!isset($options['root'])) { -$options['root'] = array($this->root); -} else { -if (!is_array($options['root'])) { -$options['root'] = array($options['root']); -} -$options['root'][] = $this->root; -} -if (!isset($options['name'])) { -$options['name'] = $this->generateAssetName($inputs, $filters, $options); -} -$asset = $this->createAssetCollection(array(), $options); -$extensions = array(); -foreach ($inputs as $input) { -if (is_array($input)) { -$asset->add(call_user_func_array(array($this,'createAsset'), $input)); -} else { -$asset->add($this->parseInput($input, $options)); -$extensions[pathinfo($input, PATHINFO_EXTENSION)] = true; -} -} -foreach ($filters as $filter) { -if ('?'!= $filter[0]) { -$asset->ensureFilter($this->getFilter($filter)); -} elseif (!$options['debug']) { -$asset->ensureFilter($this->getFilter(substr($filter, 1))); -} -} -if (!empty($options['vars'])) { -$toAdd = array(); -foreach ($options['vars'] as $var) { -if (false !== strpos($options['output'],'{'.$var.'}')) { -continue; -} -$toAdd[] ='{'.$var.'}'; -} -if ($toAdd) { -$options['output'] = str_replace('*','*.'.implode('.', $toAdd), $options['output']); -} -} -if (1 == count($extensions) && !pathinfo($options['output'], PATHINFO_EXTENSION) && $extension = key($extensions)) { -$options['output'] .='.'.$extension; -} -$asset->setTargetPath(str_replace('*', $options['name'], $options['output'])); -return $this->applyWorkers($asset); -} -public function generateAssetName($inputs, $filters, $options = array()) -{ -foreach (array_diff(array_keys($options), array('output','debug','root')) as $key) { -unset($options[$key]); -} -ksort($options); -return substr(sha1(serialize($inputs).serialize($filters).serialize($options)), 0, 7); -} -public function getLastModified(AssetInterface $asset) -{ -$mtime = 0; -foreach ($asset instanceof AssetCollectionInterface ? $asset : array($asset) as $leaf) { -$mtime = max($mtime, $leaf->getLastModified()); -if (!$filters = $leaf->getFilters()) { -continue; -} -$prevFilters = array(); -foreach ($filters as $filter) { -$prevFilters[] = $filter; -if (!$filter instanceof DependencyExtractorInterface) { -continue; -} -$clone = clone $leaf; -$clone->clearFilters(); -foreach (array_slice($prevFilters, 0, -1) as $prevFilter) { -$clone->ensureFilter($prevFilter); -} -$clone->load(); -foreach ($filter->getChildren($this, $clone->getContent(), $clone->getSourceDirectory()) as $child) { -$mtime = max($mtime, $this->getLastModified($child)); -} -} -} -return $mtime; -} -protected function parseInput($input, array $options = array()) -{ -if ('@'== $input[0]) { -return $this->createAssetReference(substr($input, 1)); -} -if (false !== strpos($input,'://') || 0 === strpos($input,'//')) { -return $this->createHttpAsset($input, $options['vars']); -} -if (self::isAbsolutePath($input)) { -if ($root = self::findRootDir($input, $options['root'])) { -$path = ltrim(substr($input, strlen($root)),'/'); -} else { -$path = null; -} -} else { -$root = $this->root; -$path = $input; -$input = $this->root.'/'.$path; -} -if (false !== strpos($input,'*')) { -return $this->createGlobAsset($input, $root, $options['vars']); -} -return $this->createFileAsset($input, $root, $path, $options['vars']); -} -protected function createAssetCollection(array $assets = array(), array $options = array()) -{ -return new AssetCollection($assets, array(), null, isset($options['vars']) ? $options['vars'] : array()); -} -protected function createAssetReference($name) -{ -if (!$this->am) { -throw new \LogicException('There is no asset manager.'); -} -return new AssetReference($this->am, $name); -} -protected function createHttpAsset($sourceUrl, $vars) -{ -return new HttpAsset($sourceUrl, array(), false, $vars); -} -protected function createGlobAsset($glob, $root = null, $vars) -{ -return new GlobAsset($glob, array(), $root, $vars); -} -protected function createFileAsset($source, $root = null, $path = null, $vars) -{ -return new FileAsset($source, array(), $root, $path, $vars); -} -protected function getFilter($name) -{ -if (!$this->fm) { -throw new \LogicException('There is no filter manager.'); -} -return $this->fm->get($name); -} -private function applyWorkers(AssetCollectionInterface $asset) -{ -foreach ($asset as $leaf) { -foreach ($this->workers as $worker) { -$retval = $worker->process($leaf, $this); -if ($retval instanceof AssetInterface && $leaf !== $retval) { -$asset->replaceLeaf($leaf, $retval); -} -} -} -foreach ($this->workers as $worker) { -$retval = $worker->process($asset, $this); -if ($retval instanceof AssetInterface) { -$asset = $retval; -} -} -return $asset instanceof AssetCollectionInterface ? $asset : $this->createAssetCollection(array($asset)); -} -private static function isAbsolutePath($path) -{ -return'/'== $path[0] ||'\\'== $path[0] || (3 < strlen($path) && ctype_alpha($path[0]) && $path[1] ==':'&& ('\\'== $path[2] ||'/'== $path[2])); -} -private static function findRootDir($path, array $roots) -{ -foreach ($roots as $root) { -if (0 === strpos($path, $root)) { -return $root; -} -} -} -} -} -namespace Symfony\Bundle\AsseticBundle\Factory -{ -use Assetic\Factory\AssetFactory as BaseAssetFactory; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; -use Symfony\Component\HttpKernel\KernelInterface; -class AssetFactory extends BaseAssetFactory -{ -private $kernel; -private $container; -private $parameterBag; -public function __construct(KernelInterface $kernel, ContainerInterface $container, ParameterBagInterface $parameterBag, $baseDir, $debug = false) -{ -$this->kernel = $kernel; -$this->container = $container; -$this->parameterBag = $parameterBag; -parent::__construct($baseDir, $debug); -} -protected function parseInput($input, array $options = array()) -{ -$input = $this->parameterBag->resolveValue($input); -if ('@'== $input[0] && false !== strpos($input,'/')) { -$bundle = substr($input, 1); -if (false !== $pos = strpos($bundle,'/')) { -$bundle = substr($bundle, 0, $pos); -} -$options['root'] = array($this->kernel->getBundle($bundle)->getPath()); -if (false !== $pos = strpos($input,'*')) { -list($before, $after) = explode('*', $input, 2); -$input = $this->kernel->locateResource($before).'*'.$after; -} else { -$input = $this->kernel->locateResource($input); -} -} -return parent::parseInput($input, $options); -} -protected function createAssetReference($name) -{ -if (!$this->getAssetManager()) { -$this->setAssetManager($this->container->get('assetic.asset_manager')); -} -return parent::createAssetReference($name); -} -protected function getFilter($name) -{ -if (!$this->getFilterManager()) { -$this->setFilterManager($this->container->get('assetic.filter_manager')); -} -return parent::getFilter($name); -} -} -} -namespace Doctrine\Common\Lexer -{ -abstract class AbstractLexer -{ -private $input; -private $tokens = array(); -private $position = 0; -private $peek = 0; -public $lookahead; -public $token; -public function setInput($input) -{ -$this->input = $input; -$this->tokens = array(); -$this->reset(); -$this->scan($input); -} -public function reset() -{ -$this->lookahead = null; -$this->token = null; -$this->peek = 0; -$this->position = 0; -} -public function resetPeek() -{ -$this->peek = 0; -} -public function resetPosition($position = 0) -{ -$this->position = $position; -} -public function getInputUntilPosition($position) -{ -return substr($this->input, 0, $position); -} -public function isNextToken($token) -{ -return null !== $this->lookahead && $this->lookahead['type'] === $token; -} -public function isNextTokenAny(array $tokens) -{ -return null !== $this->lookahead && in_array($this->lookahead['type'], $tokens, true); -} -public function moveNext() -{ -$this->peek = 0; -$this->token = $this->lookahead; -$this->lookahead = (isset($this->tokens[$this->position])) -? $this->tokens[$this->position++] : null; -return $this->lookahead !== null; -} -public function skipUntil($type) -{ -while ($this->lookahead !== null && $this->lookahead['type'] !== $type) { -$this->moveNext(); -} -} -public function isA($value, $token) -{ -return $this->getType($value) === $token; -} -public function peek() -{ -if (isset($this->tokens[$this->position + $this->peek])) { -return $this->tokens[$this->position + $this->peek++]; -} else { -return null; -} -} -public function glimpse() -{ -$peek = $this->peek(); -$this->peek = 0; -return $peek; -} -protected function scan($input) -{ -static $regex; -if ( ! isset($regex)) { -$regex = sprintf('/(%s)|%s/%s', -implode(')|(', $this->getCatchablePatterns()), -implode('|', $this->getNonCatchablePatterns()), -$this->getModifiers() -); -} -$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE; -$matches = preg_split($regex, $input, -1, $flags); -foreach ($matches as $match) { -$type = $this->getType($match[0]); -$this->tokens[] = array('value'=> $match[0],'type'=> $type,'position'=> $match[1], -); -} -} -public function getLiteral($token) -{ -$className = get_class($this); -$reflClass = new \ReflectionClass($className); -$constants = $reflClass->getConstants(); -foreach ($constants as $name => $value) { -if ($value === $token) { -return $className .'::'. $name; -} -} -return $token; -} -protected function getModifiers() -{ -return'i'; -} -abstract protected function getCatchablePatterns(); -abstract protected function getNonCatchablePatterns(); -abstract protected function getType(&$value); -} -} -namespace Doctrine\Common\Annotations -{ -use Doctrine\Common\Lexer\AbstractLexer; -final class DocLexer extends AbstractLexer -{ -const T_NONE = 1; -const T_INTEGER = 2; -const T_STRING = 3; -const T_FLOAT = 4; -const T_IDENTIFIER = 100; -const T_AT = 101; -const T_CLOSE_CURLY_BRACES = 102; -const T_CLOSE_PARENTHESIS = 103; -const T_COMMA = 104; -const T_EQUALS = 105; -const T_FALSE = 106; -const T_NAMESPACE_SEPARATOR = 107; -const T_OPEN_CURLY_BRACES = 108; -const T_OPEN_PARENTHESIS = 109; -const T_TRUE = 110; -const T_NULL = 111; -const T_COLON = 112; -protected $noCase = array('@'=> self::T_AT,','=> self::T_COMMA,'('=> self::T_OPEN_PARENTHESIS,')'=> self::T_CLOSE_PARENTHESIS,'{'=> self::T_OPEN_CURLY_BRACES,'}'=> self::T_CLOSE_CURLY_BRACES,'='=> self::T_EQUALS,':'=> self::T_COLON,'\\'=> self::T_NAMESPACE_SEPARATOR -); -protected $withCase = array('true'=> self::T_TRUE,'false'=> self::T_FALSE,'null'=> self::T_NULL -); -protected function getCatchablePatterns() -{ -return array('[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*','(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?','"(?:""|[^"])*+"', -); -} -protected function getNonCatchablePatterns() -{ -return array('\s+','\*+','(.)'); -} -protected function getType(&$value) -{ -$type = self::T_NONE; -if ($value[0] ==='"') { -$value = str_replace('""','"', substr($value, 1, strlen($value) - 2)); -return self::T_STRING; -} -if (isset($this->noCase[$value])) { -return $this->noCase[$value]; -} -if ($value[0] ==='_'|| $value[0] ==='\\'|| ctype_alpha($value[0])) { -return self::T_IDENTIFIER; -} -$lowerValue = strtolower($value); -if (isset($this->withCase[$lowerValue])) { -return $this->withCase[$lowerValue]; -} -if (is_numeric($value)) { -return (strpos($value,'.') !== false || stripos($value,'e') !== false) -? self::T_FLOAT : self::T_INTEGER; -} -return $type; -} -} -} -namespace Doctrine\Common\Annotations -{ -interface Reader -{ -function getClassAnnotations(\ReflectionClass $class); -function getClassAnnotation(\ReflectionClass $class, $annotationName); -function getMethodAnnotations(\ReflectionMethod $method); -function getMethodAnnotation(\ReflectionMethod $method, $annotationName); -function getPropertyAnnotations(\ReflectionProperty $property); -function getPropertyAnnotation(\ReflectionProperty $property, $annotationName); -} -} -namespace Doctrine\Common\Annotations -{ -class FileCacheReader implements Reader -{ -private $reader; -private $dir; -private $debug; -private $loadedAnnotations = array(); -private $classNameHashes = array(); -private $umask; -public function __construct(Reader $reader, $cacheDir, $debug = false, $umask = 0002) -{ -if ( ! is_int($umask)) { -throw new \InvalidArgumentException(sprintf('The parameter umask must be an integer, was: %s', -gettype($umask) -)); -} -$this->reader = $reader; -$this->umask = $umask; -if (!is_dir($cacheDir) && !@mkdir($cacheDir, 0777 & (~$this->umask), true)) { -throw new \InvalidArgumentException(sprintf('The directory "%s" does not exist and could not be created.', $cacheDir)); -} -$this->dir = rtrim($cacheDir,'\\/'); -$this->debug = $debug; -} -public function getClassAnnotations(\ReflectionClass $class) -{ -if ( ! isset($this->classNameHashes[$class->name])) { -$this->classNameHashes[$class->name] = sha1($class->name); -} -$key = $this->classNameHashes[$class->name]; -if (isset($this->loadedAnnotations[$key])) { -return $this->loadedAnnotations[$key]; -} -$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; -if (!is_file($path)) { -$annot = $this->reader->getClassAnnotations($class); -$this->saveCacheFile($path, $annot); -return $this->loadedAnnotations[$key] = $annot; -} -if ($this->debug -&& (false !== $filename = $class->getFilename()) -&& filemtime($path) < filemtime($filename)) { -@unlink($path); -$annot = $this->reader->getClassAnnotations($class); -$this->saveCacheFile($path, $annot); -return $this->loadedAnnotations[$key] = $annot; -} -return $this->loadedAnnotations[$key] = include $path; -} -public function getPropertyAnnotations(\ReflectionProperty $property) -{ -$class = $property->getDeclaringClass(); -if ( ! isset($this->classNameHashes[$class->name])) { -$this->classNameHashes[$class->name] = sha1($class->name); -} -$key = $this->classNameHashes[$class->name].'$'.$property->getName(); -if (isset($this->loadedAnnotations[$key])) { -return $this->loadedAnnotations[$key]; -} -$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; -if (!is_file($path)) { -$annot = $this->reader->getPropertyAnnotations($property); -$this->saveCacheFile($path, $annot); -return $this->loadedAnnotations[$key] = $annot; -} -if ($this->debug -&& (false !== $filename = $class->getFilename()) -&& filemtime($path) < filemtime($filename)) { -@unlink($path); -$annot = $this->reader->getPropertyAnnotations($property); -$this->saveCacheFile($path, $annot); -return $this->loadedAnnotations[$key] = $annot; -} -return $this->loadedAnnotations[$key] = include $path; -} -public function getMethodAnnotations(\ReflectionMethod $method) -{ -$class = $method->getDeclaringClass(); -if ( ! isset($this->classNameHashes[$class->name])) { -$this->classNameHashes[$class->name] = sha1($class->name); -} -$key = $this->classNameHashes[$class->name].'#'.$method->getName(); -if (isset($this->loadedAnnotations[$key])) { -return $this->loadedAnnotations[$key]; -} -$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; -if (!is_file($path)) { -$annot = $this->reader->getMethodAnnotations($method); -$this->saveCacheFile($path, $annot); -return $this->loadedAnnotations[$key] = $annot; -} -if ($this->debug -&& (false !== $filename = $class->getFilename()) -&& filemtime($path) < filemtime($filename)) { -@unlink($path); -$annot = $this->reader->getMethodAnnotations($method); -$this->saveCacheFile($path, $annot); -return $this->loadedAnnotations[$key] = $annot; -} -return $this->loadedAnnotations[$key] = include $path; -} -private function saveCacheFile($path, $data) -{ -if (!is_writable($this->dir)) { -throw new \InvalidArgumentException(sprintf('The directory "%s" is not writable. Both, the webserver and the console user need access. You can manage access rights for multiple users with "chmod +a". If your system does not support this, check out the acl package.', $this->dir)); -} -$tempfile = tempnam($this->dir, uniqid('', true)); -if (false === $tempfile) { -throw new \RuntimeException(sprintf('Unable to create tempfile in directory: %s', $this->dir)); -} -$written = file_put_contents($tempfile,'umask)); -if (false === rename($tempfile, $path)) { -@unlink($tempfile); -throw new \RuntimeException(sprintf('Unable to rename %s to %s', $tempfile, $path)); -} -} -public function getClassAnnotation(\ReflectionClass $class, $annotationName) -{ -$annotations = $this->getClassAnnotations($class); -foreach ($annotations as $annotation) { -if ($annotation instanceof $annotationName) { -return $annotation; -} -} -return null; -} -public function getMethodAnnotation(\ReflectionMethod $method, $annotationName) -{ -$annotations = $this->getMethodAnnotations($method); -foreach ($annotations as $annotation) { -if ($annotation instanceof $annotationName) { -return $annotation; -} -} -return null; -} -public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName) -{ -$annotations = $this->getPropertyAnnotations($property); -foreach ($annotations as $annotation) { -if ($annotation instanceof $annotationName) { -return $annotation; -} -} -return null; -} -public function clearLoadedAnnotations() -{ -$this->loadedAnnotations = array(); -} -} -} -namespace Doctrine\Common\Annotations -{ -use SplFileObject; -final class PhpParser -{ -public function parseClass(\ReflectionClass $class) -{ -if (method_exists($class,'getUseStatements')) { -return $class->getUseStatements(); -} -if (false === $filename = $class->getFilename()) { -return array(); -} -$content = $this->getFileContent($filename, $class->getStartLine()); -if (null === $content) { -return array(); -} -$namespace = preg_quote($class->getNamespaceName()); -$content = preg_replace('/^.*?(\bnamespace\s+'. $namespace .'\s*[;{].*)$/s','\\1', $content); -$tokenizer = new TokenParser('parseUseStatements($class->getNamespaceName()); -return $statements; -} -private function getFileContent($filename, $lineNumber) -{ -if ( ! is_file($filename)) { -return null; -} -$content =''; -$lineCnt = 0; -$file = new SplFileObject($filename); -while (!$file->eof()) { -if ($lineCnt++ == $lineNumber) { -break; -} -$content .= $file->fgets(); -} -return $content; -} -} -} -namespace Doctrine\Common -{ -use Doctrine\Common\Lexer\AbstractLexer; -abstract class Lexer extends AbstractLexer -{ -} -} -namespace Doctrine\Common\Persistence -{ -interface ConnectionRegistry -{ -public function getDefaultConnectionName(); -public function getConnection($name = null); -public function getConnections(); -public function getConnectionNames(); -} -} -namespace Doctrine\Common\Persistence -{ -interface Proxy -{ -const MARKER ='__CG__'; -const MARKER_LENGTH = 6; -public function __load(); -public function __isInitialized(); -} -} -namespace Doctrine\Common\Util -{ -use Doctrine\Common\Persistence\Proxy; -class ClassUtils -{ -public static function getRealClass($class) -{ -if (false === $pos = strrpos($class,'\\'.Proxy::MARKER.'\\')) { -return $class; -} -return substr($class, $pos + Proxy::MARKER_LENGTH + 2); -} -public static function getClass($object) -{ -return self::getRealClass(get_class($object)); -} -public static function getParentClass($className) -{ -return get_parent_class( self::getRealClass( $className ) ); -} -public static function newReflectionClass($class) -{ -return new \ReflectionClass( self::getRealClass( $class ) ); -} -public static function newReflectionObject($object) -{ -return self::newReflectionClass( self::getClass( $object ) ); -} -public static function generateProxyClassName($className, $proxyNamespace) -{ -return rtrim($proxyNamespace,'\\') .'\\'.Proxy::MARKER.'\\'. ltrim($className,'\\'); -} -} -} -namespace Doctrine\Common\Persistence -{ -interface ManagerRegistry extends ConnectionRegistry -{ -public function getDefaultManagerName(); -public function getManager($name = null); -public function getManagers(); -public function resetManager($name = null); -public function getAliasNamespace($alias); -public function getManagerNames(); -public function getRepository($persistentObject, $persistentManagerName = null); -public function getManagerForClass($class); -} -} -namespace Symfony\Bridge\Doctrine -{ -use Doctrine\Common\Persistence\ManagerRegistry as ManagerRegistryInterface; -use Doctrine\ORM\EntityManager; -interface RegistryInterface extends ManagerRegistryInterface -{ -public function getDefaultEntityManagerName(); -public function getEntityManager($name = null); -public function getEntityManagers(); -public function resetEntityManager($name = null); -public function getEntityNamespace($alias); -public function getEntityManagerNames(); -public function getEntityManagerForClass($class); -} -} -namespace Doctrine\Common\Persistence -{ -abstract class AbstractManagerRegistry implements ManagerRegistry -{ -private $name; -private $connections; -private $managers; -private $defaultConnection; -private $defaultManager; -private $proxyInterfaceName; -public function __construct($name, array $connections, array $managers, $defaultConnection, $defaultManager, $proxyInterfaceName) -{ -$this->name = $name; -$this->connections = $connections; -$this->managers = $managers; -$this->defaultConnection = $defaultConnection; -$this->defaultManager = $defaultManager; -$this->proxyInterfaceName = $proxyInterfaceName; -} -abstract protected function getService($name); -abstract protected function resetService($name); -public function getName() -{ -return $this->name; -} -public function getConnection($name = null) -{ -if (null === $name) { -$name = $this->defaultConnection; -} -if (!isset($this->connections[$name])) { -throw new \InvalidArgumentException(sprintf('Doctrine %s Connection named "%s" does not exist.', $this->name, $name)); -} -return $this->getService($this->connections[$name]); -} -public function getConnectionNames() -{ -return $this->connections; -} -public function getConnections() -{ -$connections = array(); -foreach ($this->connections as $name => $id) { -$connections[$name] = $this->getService($id); -} -return $connections; -} -public function getDefaultConnectionName() -{ -return $this->defaultConnection; -} -public function getDefaultManagerName() -{ -return $this->defaultManager; -} -public function getManager($name = null) -{ -if (null === $name) { -$name = $this->defaultManager; -} -if (!isset($this->managers[$name])) { -throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name)); -} -return $this->getService($this->managers[$name]); -} -public function getManagerForClass($class) -{ -if (strpos($class,':') !== false) { -list($namespaceAlias, $simpleClassName) = explode(':', $class, 2); -$class = $this->getAliasNamespace($namespaceAlias) .'\\'. $simpleClassName; -} -$proxyClass = new \ReflectionClass($class); -if ($proxyClass->implementsInterface($this->proxyInterfaceName)) { -$class = $proxyClass->getParentClass()->getName(); -} -foreach ($this->managers as $id) { -$manager = $this->getService($id); -if (!$manager->getMetadataFactory()->isTransient($class)) { -return $manager; -} -} -} -public function getManagerNames() -{ -return $this->managers; -} -public function getManagers() -{ -$dms = array(); -foreach ($this->managers as $name => $id) { -$dms[$name] = $this->getService($id); -} -return $dms; -} -public function getRepository($persistentObjectName, $persistentManagerName = null) -{ -return $this->getManager($persistentManagerName)->getRepository($persistentObjectName); -} -public function resetManager($name = null) -{ -if (null === $name) { -$name = $this->defaultManager; -} -if (!isset($this->managers[$name])) { -throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name)); -} -$this->resetService($this->managers[$name]); -} -} -} -namespace Symfony\Bridge\Doctrine -{ -use Symfony\Component\DependencyInjection\ContainerAwareInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Doctrine\Common\Persistence\AbstractManagerRegistry; -abstract class ManagerRegistry extends AbstractManagerRegistry implements ContainerAwareInterface -{ -protected $container; -protected function getService($name) -{ -return $this->container->get($name); -} -protected function resetService($name) -{ -$this->container->set($name, null); -} -public function setContainer(ContainerInterface $container = null) -{ -$this->container = $container; -} -} -} -namespace Doctrine\Bundle\DoctrineBundle -{ -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Bridge\Doctrine\RegistryInterface; -use Symfony\Bridge\Doctrine\ManagerRegistry; -use Doctrine\ORM\ORMException; -use Doctrine\ORM\EntityManager; -class Registry extends ManagerRegistry implements RegistryInterface -{ -public function __construct(ContainerInterface $container, array $connections, array $entityManagers, $defaultConnection, $defaultEntityManager) -{ -$this->setContainer($container); -parent::__construct('ORM', $connections, $entityManagers, $defaultConnection, $defaultEntityManager,'Doctrine\ORM\Proxy\Proxy'); -} -public function getDefaultEntityManagerName() -{ -trigger_error('getDefaultEntityManagerName is deprecated since Symfony 2.1. Use getDefaultManagerName instead', E_USER_DEPRECATED); -return $this->getDefaultManagerName(); -} -public function getEntityManager($name = null) -{ -trigger_error('getEntityManager is deprecated since Symfony 2.1. Use getManager instead', E_USER_DEPRECATED); -return $this->getManager($name); -} -public function getEntityManagers() -{ -trigger_error('getEntityManagers is deprecated since Symfony 2.1. Use getManagers instead', E_USER_DEPRECATED); -return $this->getManagers(); -} -public function resetEntityManager($name = null) -{ -trigger_error('resetEntityManager is deprecated since Symfony 2.1. Use resetManager instead', E_USER_DEPRECATED); -$this->resetManager($name); -} -public function getEntityNamespace($alias) -{ -trigger_error('getEntityNamespace is deprecated since Symfony 2.1. Use getAliasNamespace instead', E_USER_DEPRECATED); -return $this->getAliasNamespace($alias); -} -public function getAliasNamespace($alias) -{ -foreach (array_keys($this->getManagers()) as $name) { -try { -return $this->getManager($name)->getConfiguration()->getEntityNamespace($alias); -} catch (ORMException $e) { -} -} -throw ORMException::unknownEntityNamespace($alias); -} -public function getEntityManagerNames() -{ -trigger_error('getEntityManagerNames is deprecated since Symfony 2.1. Use getManagerNames instead', E_USER_DEPRECATED); -return $this->getManagerNames(); -} -public function getEntityManagerForClass($class) -{ -trigger_error('getEntityManagerForClass is deprecated since Symfony 2.1. Use getManagerForClass instead', E_USER_DEPRECATED); -return $this->getManagerForClass($class); -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\EventListener -{ -use Doctrine\Common\Annotations\Reader; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; -use Doctrine\Common\Util\ClassUtils; -class ControllerListener implements EventSubscriberInterface -{ -protected $reader; -public function __construct(Reader $reader) -{ -$this->reader = $reader; -} -public function onKernelController(FilterControllerEvent $event) -{ -if (!is_array($controller = $event->getController())) { -return; -} -$className = class_exists('Doctrine\Common\Util\ClassUtils') ? ClassUtils::getClass($controller[0]) : get_class($controller[0]); -$object = new \ReflectionClass($className); -$method = $object->getMethod($controller[1]); -$classConfigurations = $this->getConfigurations($this->reader->getClassAnnotations($object)); -$methodConfigurations = $this->getConfigurations($this->reader->getMethodAnnotations($method)); -$configurations = array(); -foreach (array_merge(array_keys($classConfigurations), array_keys($methodConfigurations)) as $key) { -if (!array_key_exists($key, $classConfigurations)) { -$configurations[$key] = $methodConfigurations[$key]; -} elseif (!array_key_exists($key, $methodConfigurations)) { -$configurations[$key] = $classConfigurations[$key]; -} else { -if (is_array($classConfigurations[$key])) { -if (!is_array($methodConfigurations[$key])) { -throw new \UnexpectedValueException('Configurations should both be an array or both not be an array'); -} -$configurations[$key] = array_merge($classConfigurations[$key], $methodConfigurations[$key]); -} else { -$configurations[$key] = $methodConfigurations[$key]; -} -} -} -$request = $event->getRequest(); -foreach ($configurations as $key => $attributes) { -$request->attributes->set($key, $attributes); -} -} -protected function getConfigurations(array $annotations) -{ -$configurations = array(); -foreach ($annotations as $configuration) { -if ($configuration instanceof ConfigurationInterface) { -if ($configuration->allowArray()) { -$configurations['_'.$configuration->getAliasName()][] = $configuration; -} elseif (!isset($configurations['_'.$configuration->getAliasName()])) { -$configurations['_'.$configuration->getAliasName()] = $configuration; -} else { -throw new \LogicException(sprintf('Multiple "%s" annotations are not allowed.', $configuration->getAliasName())); -} -} -} -return $configurations; -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::CONTROLLER =>'onKernelController', -); -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\EventListener -{ -use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; -use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -class ParamConverterListener implements EventSubscriberInterface -{ -protected $manager; -protected $autoConvert; -public function __construct(ParamConverterManager $manager, $autoConvert = true) -{ -$this->manager = $manager; -$this->autoConvert = $autoConvert; -} -public function onKernelController(FilterControllerEvent $event) -{ -$controller = $event->getController(); -$request = $event->getRequest(); -$configurations = array(); -if ($configuration = $request->attributes->get('_converters')) { -foreach (is_array($configuration) ? $configuration : array($configuration) as $configuration) { -$configurations[$configuration->getName()] = $configuration; -} -} -if (is_array($controller)) { -$r = new \ReflectionMethod($controller[0], $controller[1]); -} elseif (is_object($controller) && is_callable($controller,'__invoke')) { -$r = new \ReflectionMethod($controller,'__invoke'); -} else { -$r = new \ReflectionFunction($controller); -} -if ($this->autoConvert) { -$configurations = $this->autoConfigure($r, $request, $configurations); -} -$this->manager->apply($request, $configurations); -} -private function autoConfigure(\ReflectionFunctionAbstract $r, Request $request, $configurations) -{ -foreach ($r->getParameters() as $param) { -if (!$param->getClass() || $param->getClass()->isInstance($request)) { -continue; -} -$name = $param->getName(); -if (!isset($configurations[$name])) { -$configuration = new ParamConverter(array()); -$configuration->setName($name); -$configuration->setClass($param->getClass()->getName()); -$configurations[$name] = $configuration; -} elseif (null === $configurations[$name]->getClass()) { -$configurations[$name]->setClass($param->getClass()->getName()); -} -$configurations[$name]->setIsOptional($param->isOptional()); -} -return $configurations; -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::CONTROLLER =>'onKernelController', -); -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter -{ -use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; -use Symfony\Component\HttpFoundation\Request; -interface ParamConverterInterface -{ -public function apply(Request $request, ParamConverter $configuration); -public function supports(ParamConverter $configuration); -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter -{ -use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -use DateTime; -class DateTimeParamConverter implements ParamConverterInterface -{ -public function apply(Request $request, ParamConverter $configuration) -{ -$param = $configuration->getName(); -if (!$request->attributes->has($param)) { -return false; -} -$options = $configuration->getOptions(); -$value = $request->attributes->get($param); -if (!$value && $configuration->isOptional()) { -return false; -} -if (isset($options['format'])) { -$date = DateTime::createFromFormat($options['format'], $value); -if (!$date) { -throw new NotFoundHttpException('Invalid date given.'); -} -} else { -if (false === strtotime($value)) { -throw new NotFoundHttpException('Invalid date given.'); -} -$date = new DateTime($value); -} -$request->attributes->set($param, $date); -return true; -} -public function supports(ParamConverter $configuration) -{ -if (null === $configuration->getClass()) { -return false; -} -return'DateTime'=== $configuration->getClass(); -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter -{ -use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -use Symfony\Component\HttpFoundation\Request; -use Doctrine\Common\Persistence\ManagerRegistry; -use Doctrine\ORM\NoResultException; -class DoctrineParamConverter implements ParamConverterInterface -{ -protected $registry; -public function __construct(ManagerRegistry $registry = null) -{ -$this->registry = $registry; -} -public function apply(Request $request, ParamConverter $configuration) -{ -$name = $configuration->getName(); -$class = $configuration->getClass(); -$options = $this->getOptions($configuration); -if (null === $request->attributes->get($name, false)) { -$configuration->setIsOptional(true); -} -if (false === $object = $this->find($class, $request, $options, $name)) { -if (false === $object = $this->findOneBy($class, $request, $options)) { -if ($configuration->isOptional()) { -$object = null; -} else { -throw new \LogicException('Unable to guess how to get a Doctrine instance from the request information.'); -} -} -} -if (null === $object && false === $configuration->isOptional()) { -throw new NotFoundHttpException(sprintf('%s object not found.', $class)); -} -$request->attributes->set($name, $object); -return true; -} -protected function find($class, Request $request, $options, $name) -{ -if ($options['mapping'] || $options['exclude']) { -return false; -} -$id = $this->getIdentifier($request, $options, $name); -if (false === $id || null === $id) { -return false; -} -if (isset($options['repository_method'])) { -$method = $options['repository_method']; -} else { -$method ='find'; -} -try { -return $this->getManager($options['entity_manager'], $class)->getRepository($class)->$method($id); -} catch (NoResultException $e) { -return; -} -} -protected function getIdentifier(Request $request, $options, $name) -{ -if (isset($options['id'])) { -if (!is_array($options['id'])) { -$name = $options['id']; -} elseif (is_array($options['id'])) { -$id = array(); -foreach ($options['id'] as $field) { -$id[$field] = $request->attributes->get($field); -} -return $id; -} -} -if ($request->attributes->has($name)) { -return $request->attributes->get($name); -} -if ($request->attributes->has('id') && !isset($options['id'])) { -return $request->attributes->get('id'); -} -return false; -} -protected function findOneBy($class, Request $request, $options) -{ -if (!$options['mapping']) { -$keys = $request->attributes->keys(); -$options['mapping'] = $keys ? array_combine($keys, $keys) : array(); -} -foreach ($options['exclude'] as $exclude) { -unset($options['mapping'][$exclude]); -} -if (!$options['mapping']) { -return false; -} -if (isset($options['id']) && null === $request->attributes->get($options['id'])) { -return false; -} -$criteria = array(); -$em = $this->getManager($options['entity_manager'], $class); -$metadata = $em->getClassMetadata($class); -$mapMethodSignature = isset($options['repository_method']) -&& isset($options['map_method_signature']) -&& $options['map_method_signature'] === true; -foreach ($options['mapping'] as $attribute => $field) { -if ($metadata->hasField($field) -|| ($metadata->hasAssociation($field) && $metadata->isSingleValuedAssociation($field)) -|| $mapMethodSignature) { -$criteria[$field] = $request->attributes->get($attribute); -} -} -if ($options['strip_null']) { -$criteria = array_filter($criteria, function ($value) { return !is_null($value); }); -} -if (!$criteria) { -return false; -} -if (isset($options['repository_method'])) { -$repositoryMethod = $options['repository_method']; -} else { -$repositoryMethod ='findOneBy'; -} -try { -if ($mapMethodSignature) { -return $this->findDataByMapMethodSignature($em, $class, $repositoryMethod, $criteria); -} -return $em->getRepository($class)->$repositoryMethod($criteria); -} catch (NoResultException $e) { -return; -} -} -private function findDataByMapMethodSignature($em, $class, $repositoryMethod, $criteria) -{ -$arguments = array(); -$repository = $em->getRepository($class); -$ref = new \ReflectionMethod($repository, $repositoryMethod); -foreach ($ref->getParameters() as $parameter) { -if (array_key_exists($parameter->name, $criteria)) { -$arguments[] = $criteria[$parameter->name]; -} elseif ($parameter->isDefaultValueAvailable()) { -$arguments[] = $parameter->getDefaultValue(); -} else { -throw new \InvalidArgumentException(sprintf('Repository method "%s::%s" requires that you provide a value for the "$%s" argument.', get_class($repository), $repositoryMethod, $parameter->name)); -} -} -return $ref->invokeArgs($repository, $arguments); -} -public function supports(ParamConverter $configuration) -{ -if (null === $this->registry || !count($this->registry->getManagers())) { -return false; -} -if (null === $configuration->getClass()) { -return false; -} -$options = $this->getOptions($configuration); -$em = $this->getManager($options['entity_manager'], $configuration->getClass()); -if (null === $em) { -return false; -} -return !$em->getMetadataFactory()->isTransient($configuration->getClass()); -} -protected function getOptions(ParamConverter $configuration) -{ -return array_replace(array('entity_manager'=> null,'exclude'=> array(),'mapping'=> array(),'strip_null'=> false, -), $configuration->getOptions()); -} -private function getManager($name, $class) -{ -if (null === $name) { -return $this->registry->getManagerForClass($class); -} -return $this->registry->getManager($name); -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter -{ -use Symfony\Component\HttpFoundation\Request; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; -class ParamConverterManager -{ -protected $converters = array(); -protected $namedConverters = array(); -public function apply(Request $request, $configurations) -{ -if (is_object($configurations)) { -$configurations = array($configurations); -} -foreach ($configurations as $configuration) { -$this->applyConverter($request, $configuration); -} -} -protected function applyConverter(Request $request, ConfigurationInterface $configuration) -{ -$value = $request->attributes->get($configuration->getName()); -$className = $configuration->getClass(); -if (is_object($value) && $value instanceof $className) { -return; -} -if ($converterName = $configuration->getConverter()) { -if (!isset($this->namedConverters[$converterName])) { -throw new \RuntimeException(sprintf("No converter named '%s' found for conversion of parameter '%s'.", -$converterName, $configuration->getName() -)); -} -$converter = $this->namedConverters[$converterName]; -if (!$converter->supports($configuration)) { -throw new \RuntimeException(sprintf("Converter '%s' does not support conversion of parameter '%s'.", -$converterName, $configuration->getName() -)); -} -$converter->apply($request, $configuration); -return; -} -foreach ($this->all() as $converter) { -if ($converter->supports($configuration)) { -if ($converter->apply($request, $configuration)) { -return; -} -} -} -} -public function add(ParamConverterInterface $converter, $priority = 0, $name = null) -{ -if ($priority !== null) { -if (!isset($this->converters[$priority])) { -$this->converters[$priority] = array(); -} -$this->converters[$priority][] = $converter; -} -if (null !== $name) { -$this->namedConverters[$name] = $converter; -} -} -public function all() -{ -krsort($this->converters); -$converters = array(); -foreach ($this->converters as $all) { -$converters = array_merge($converters, $all); -} -return $converters; -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\EventListener -{ -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\StreamedResponse; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; -class TemplateListener implements EventSubscriberInterface -{ -protected $container; -public function __construct(ContainerInterface $container) -{ -$this->container = $container; -} -public function onKernelController(FilterControllerEvent $event) -{ -if (!is_array($controller = $event->getController())) { -return; -} -$request = $event->getRequest(); -if (!$configuration = $request->attributes->get('_template')) { -return; -} -if (!$configuration->getTemplate()) { -$guesser = $this->container->get('sensio_framework_extra.view.guesser'); -$configuration->setTemplate($guesser->guessTemplateName($controller, $request, $configuration->getEngine())); -} -$request->attributes->set('_template', $configuration->getTemplate()); -$request->attributes->set('_template_vars', $configuration->getVars()); -$request->attributes->set('_template_streamable', $configuration->isStreamable()); -if (!$configuration->getVars()) { -$r = new \ReflectionObject($controller[0]); -$vars = array(); -foreach ($r->getMethod($controller[1])->getParameters() as $param) { -$vars[] = $param->getName(); -} -$request->attributes->set('_template_default_vars', $vars); -} -} -public function onKernelView(GetResponseForControllerResultEvent $event) -{ -$request = $event->getRequest(); -$parameters = $event->getControllerResult(); -if (null === $parameters) { -if (!$vars = $request->attributes->get('_template_vars')) { -if (!$vars = $request->attributes->get('_template_default_vars')) { -return; -} -} -$parameters = array(); -foreach ($vars as $var) { -$parameters[$var] = $request->attributes->get($var); -} -} -if (!is_array($parameters)) { -return $parameters; -} -if (!$template = $request->attributes->get('_template')) { -return $parameters; -} -$templating = $this->container->get('templating'); -if (!$request->attributes->get('_template_streamable')) { -$event->setResponse($templating->renderResponse($template, $parameters)); -} else { -$callback = function () use ($templating, $template, $parameters) { -return $templating->stream($template, $parameters); -}; -$event->setResponse(new StreamedResponse($callback)); -} -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::CONTROLLER => array('onKernelController', -128), -KernelEvents::VIEW =>'onKernelView', -); -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\EventListener -{ -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\ExpressionLanguage\ExpressionLanguage; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; -class HttpCacheListener implements EventSubscriberInterface -{ -private $lastModifiedDates; -private $etags; -private $expressionLanguage; -public function __construct() -{ -$this->lastModifiedDates = new \SplObjectStorage(); -$this->etags = new \SplObjectStorage(); -} -public function onKernelController(FilterControllerEvent $event) -{ -$request = $event->getRequest(); -if (!$configuration = $request->attributes->get('_cache')) { -return; -} -$response = new Response(); -$lastModifiedDate =''; -if ($configuration->getLastModified()) { -$lastModifiedDate = $this->getExpressionLanguage()->evaluate($configuration->getLastModified(), $request->attributes->all()); -$response->setLastModified($lastModifiedDate); -} -$etag =''; -if ($configuration->getETag()) { -$etag = hash('sha256', $this->getExpressionLanguage()->evaluate($configuration->getETag(), $request->attributes->all())); -$response->setETag($etag); -} -if ($response->isNotModified($request)) { -$event->setController(function () use ($response) { -return $response; -}); -} else { -if ($etag) { -$this->etags[$request] = $etag; -} -if ($lastModifiedDate) { -$this->lastModifiedDates[$request] = $lastModifiedDate; -} -} -} -public function onKernelResponse(FilterResponseEvent $event) -{ -$request = $event->getRequest(); -if (!$configuration = $request->attributes->get('_cache')) { -return; -} -$response = $event->getResponse(); -if (!in_array($response->getStatusCode(), array(200, 203, 300, 301, 302, 304, 404, 410))) { -return; -} -if (null !== $age = $configuration->getSMaxAge()) { -if (!is_numeric($age)) { -$now = microtime(true); -$age = ceil(strtotime($configuration->getSMaxAge(), $now) - $now); -} -$response->setSharedMaxAge($age); -} -if (null !== $age = $configuration->getMaxAge()) { -if (!is_numeric($age)) { -$now = microtime(true); -$age = ceil(strtotime($configuration->getMaxAge(), $now) - $now); -} -$response->setMaxAge($age); -} -if (null !== $configuration->getExpires()) { -$date = \DateTime::createFromFormat('U', strtotime($configuration->getExpires()), new \DateTimeZone('UTC')); -$response->setExpires($date); -} -if (null !== $configuration->getVary()) { -$response->setVary($configuration->getVary()); -} -if ($configuration->isPublic()) { -$response->setPublic(); -} -if ($configuration->isPrivate()) { -$response->setPrivate(); -} -if (isset($this->lastModifiedDates[$request])) { -$response->setLastModified($this->lastModifiedDates[$request]); -unset($this->lastModifiedDates[$request]); -} -if (isset($this->etags[$request])) { -$response->setETag($this->etags[$request]); -unset($this->etags[$request]); -} -$event->setResponse($response); -} -public static function getSubscribedEvents() -{ -return array( -KernelEvents::CONTROLLER =>'onKernelController', -KernelEvents::RESPONSE =>'onKernelResponse', -); -} -private function getExpressionLanguage() -{ -if (null === $this->expressionLanguage) { -if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { -throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); -} -$this->expressionLanguage = new ExpressionLanguage(); -} -return $this->expressionLanguage; -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\EventListener -{ -use Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface; -use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; -use Symfony\Component\Security\Core\SecurityContextInterface; -use Symfony\Component\Security\Core\Exception\AccessDeniedException; -use Symfony\Component\Security\Core\Role\RoleHierarchyInterface; -class SecurityListener implements EventSubscriberInterface -{ -private $tokenStorage; -private $authChecker; -private $language; -private $trustResolver; -private $roleHierarchy; -public function __construct(SecurityContextInterface $securityContext = null, ExpressionLanguage $language = null, AuthenticationTrustResolverInterface $trustResolver = null, RoleHierarchyInterface $roleHierarchy = null, TokenStorageInterface $tokenStorage = null, AuthorizationCheckerInterface $authChecker = null) -{ -$this->tokenStorage = $tokenStorage ?: $securityContext; -$this->authChecker = $authChecker ?: $securityContext; -$this->language = $language; -$this->trustResolver = $trustResolver; -$this->roleHierarchy = $roleHierarchy; -} -public function onKernelController(FilterControllerEvent $event) -{ -$request = $event->getRequest(); -if (!$configuration = $request->attributes->get('_security')) { -return; -} -if (null === $this->tokenStorage || null === $this->trustResolver) { -throw new \LogicException('To use the @Security tag, you need to install the Symfony Security bundle.'); -} -if (null === $this->tokenStorage->getToken()) { -throw new \LogicException('To use the @Security tag, your controller needs to be behind a firewall.'); -} -if (null === $this->language) { -throw new \LogicException('To use the @Security tag, you need to use the Security component 2.4 or newer and to install the ExpressionLanguage component.'); -} -if (!$this->language->evaluate($configuration->getExpression(), $this->getVariables($request))) { -throw new AccessDeniedException(sprintf('Expression "%s" denied access.', $configuration->getExpression())); -} -} -private function getVariables(Request $request) -{ -$token = $this->tokenStorage->getToken(); -if (null !== $this->roleHierarchy) { -$roles = $this->roleHierarchy->getReachableRoles($token->getRoles()); -} else { -$roles = $token->getRoles(); -} -$variables = array('token'=> $token,'user'=> $token->getUser(),'object'=> $request,'request'=> $request,'roles'=> array_map(function ($role) { return $role->getRole(); }, $roles),'trust_resolver'=> $this->trustResolver,'auth_checker'=> $this->authChecker, -); -return array_merge($request->attributes->all(), $variables); -} -public static function getSubscribedEvents() -{ -return array(KernelEvents::CONTROLLER =>'onKernelController'); -} -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\Configuration -{ -interface ConfigurationInterface -{ -public function getAliasName(); -public function allowArray(); -} -} -namespace Sensio\Bundle\FrameworkExtraBundle\Configuration -{ -abstract class ConfigurationAnnotation implements ConfigurationInterface -{ -public function __construct(array $values) -{ -foreach ($values as $k => $v) { -if (!method_exists($this, $name ='set'.$k)) { -throw new \RuntimeException(sprintf('Unknown key "%s" for annotation "@%s".', $k, get_class($this))); -} -$this->$name($v); -} -} -} -} \ No newline at end of file diff --git a/app/cache/dev/classes.php.meta b/app/cache/dev/classes.php.meta deleted file mode 100644 index da9dae6..0000000 --- a/app/cache/dev/classes.php.meta +++ /dev/null @@ -1 +0,0 @@ -a:2:{i:0;a:128:{i:0;s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php";i:1;s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SessionListener.php";i:2;s:121:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/SessionListener.php";i:3;s:133:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/SessionStorageInterface.php";i:4;s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php";i:5;s:133:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/PhpBridgeSessionStorage.php";i:6;s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSessionHandler.php";i:7;s:142:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php";i:8;s:129:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/AbstractProxy.php";i:9;s:135:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/SessionHandlerProxy.php";i:10;s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/SessionInterface.php";i:11;s:109:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Session.php";i:12;s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/GlobalVariables.php";i:13;s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateReferenceInterface.php";i:14;s:107:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateReference.php";i:15;s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateReference.php";i:16;s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateNameParserInterface.php";i:17;s:108:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateNameParser.php";i:18;s:121:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateNameParser.php";i:19;s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocatorInterface.php";i:20;s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/Loader/TemplateLocator.php";i:21;s:115:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/RequestContextAwareInterface.php";i:22;s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php";i:23;s:130:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/ConfigurableRequirementsInterface.php";i:24;s:109:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/UrlGenerator.php";i:25;s:101:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/RequestContext.php";i:26;s:114:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php";i:27;s:102:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/RouterInterface.php";i:28;s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RequestMatcherInterface.php";i:29;s:93:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Router.php";i:30;s:126:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RedirectableUrlMatcherInterface.php";i:31;s:105:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/UrlMatcher.php";i:32;s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php";i:33;s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/RedirectableUrlMatcher.php";i:34;s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php";i:35;s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php";i:36;s:97:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocator.php";i:37;s:100:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Event.php";i:38;s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcherInterface.php";i:39;s:110:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php";i:40;s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php";i:41;s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php";i:42;s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php";i:43;s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php";i:44;s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php";i:45;s:107:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/KernelEvent.php";i:46;s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/FilterControllerEvent.php";i:47;s:115:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/FilterResponseEvent.php";i:48;s:112:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseEvent.php";i:49;s:131:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseForControllerResultEvent.php";i:50;s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.php";i:51;s:102:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/KernelEvents.php";i:52;s:108:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Config/FileLocator.php";i:53;s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerNameParser.php";i:54;s:121:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php";i:55;s:101:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall.php";i:56;s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/User/UserProviderInterface.php";i:57;s:138:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/AuthenticationManagerInterface.php";i:58;s:137:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/AuthenticationProviderManager.php";i:59;s:143:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/Storage/TokenStorageInterface.php";i:60;s:134:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/Storage/TokenStorage.php";i:61;s:137:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AccessDecisionManagerInterface.php";i:62;s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AccessDecisionManager.php";i:63;s:136:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationCheckerInterface.php";i:64;s:127:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationChecker.php";i:65;s:127:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/Voter/VoterInterface.php";i:66;s:113:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/FirewallMapInterface.php";i:67;s:111:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallMap.php";i:68;s:115:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php";i:69;s:117:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/RequestMatcherInterface.php";i:70;s:108:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/RequestMatcher.php";i:71;s:71:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Environment.php";i:72;s:78:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/ExtensionInterface.php";i:73;s:69:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Extension.php";i:74;s:74:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Extension/Core.php";i:75;s:77:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Extension/Escaper.php";i:76;s:79:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Extension/Optimizer.php";i:77;s:75:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/LoaderInterface.php";i:78;s:66:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Markup.php";i:79;s:77:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/TemplateInterface.php";i:80;s:68:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Template.php";i:81;s:97:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php";i:82;s:98:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php";i:83;s:92:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php";i:84;s:93:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php";i:85;s:92:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php";i:86;s:102:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php";i:87;s:90:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php";i:88;s:98:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php";i:89;s:90:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php";i:90;s:88:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php";i:91;s:72:"/var/www/html/portfolio-photo/vendor/psr/log/Psr/Log/LoggerInterface.php";i:92;s:75:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Logger.php";i:93;s:109:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Log/LoggerInterface.php";i:94;s:114:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php";i:95;s:90:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Logger.php";i:96;s:104:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/DebugHandler.php";i:97;s:119:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php";i:98;s:120:"/var/www/html/portfolio-photo/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php";i:99;s:97:"/var/www/html/portfolio-photo/vendor/kriswallsmith/assetic/src/Assetic/ValueSupplierInterface.php";i:100;s:84:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/DefaultValueSupplier.php";i:101;s:95:"/var/www/html/portfolio-photo/vendor/kriswallsmith/assetic/src/Assetic/Factory/AssetFactory.php";i:102;s:84:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/Factory/AssetFactory.php";i:103;s:95:"/var/www/html/portfolio-photo/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php";i:104;s:102:"/var/www/html/portfolio-photo/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php";i:105;s:100:"/var/www/html/portfolio-photo/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php";i:106;s:109:"/var/www/html/portfolio-photo/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php";i:107;s:103:"/var/www/html/portfolio-photo/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php";i:108;s:82:"/var/www/html/portfolio-photo/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php";i:109;s:107:"/var/www/html/portfolio-photo/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php";i:110;s:94:"/var/www/html/portfolio-photo/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php";i:111;s:92:"/var/www/html/portfolio-photo/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php";i:112;s:104:"/var/www/html/portfolio-photo/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php";i:113;s:102:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/RegistryInterface.php";i:114;s:112:"/var/www/html/portfolio-photo/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php";i:115;s:100:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ManagerRegistry.php";i:116;s:74:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle/Registry.php";i:117;s:103:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/ControllerListener.php";i:118;s:107:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/ParamConverterListener.php";i:119;s:117:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Request/ParamConverter/ParamConverterInterface.php";i:120;s:116:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DateTimeParamConverter.php";i:121;s:116:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DoctrineParamConverter.php";i:122;s:115:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Request/ParamConverter/ParamConverterManager.php";i:123;s:101:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/TemplateListener.php";i:124;s:102:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/HttpCacheListener.php";i:125;s:101:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/SecurityListener.php";i:126;s:107:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Configuration/ConfigurationInterface.php";i:127;s:108:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/Configuration/ConfigurationAnnotation.php";}i:1;a:86:{i:0;s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";i:1;s:69:"Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage";i:2;s:72:"Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage";i:3;s:81:"Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler";i:4;s:68:"Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy";i:5;s:74:"Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy";i:6;s:48:"Symfony\Component\HttpFoundation\Session\Session";i:8;s:57:"Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables";i:9;s:59:"Symfony\Bundle\FrameworkBundle\Templating\TemplateReference";i:10;s:60:"Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser";i:11;s:64:"Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator";i:12;s:48:"Symfony\Component\Routing\Generator\UrlGenerator";i:13;s:40:"Symfony\Component\Routing\RequestContext";i:14;s:32:"Symfony\Component\Routing\Router";i:15;s:61:"Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher";i:16;s:45:"Symfony\Bundle\FrameworkBundle\Routing\Router";i:17;s:36:"Symfony\Component\Config\FileLocator";i:18;s:36:"Symfony\Component\Debug\ErrorHandler";i:19;s:39:"Symfony\Component\EventDispatcher\Event";i:20;s:63:"Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher";i:21;s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";i:22;s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";i:23;s:58:"Symfony\Component\HttpKernel\Controller\ControllerResolver";i:24;s:46:"Symfony\Component\HttpKernel\Event\KernelEvent";i:25;s:56:"Symfony\Component\HttpKernel\Event\FilterControllerEvent";i:26;s:54:"Symfony\Component\HttpKernel\Event\FilterResponseEvent";i:27;s:51:"Symfony\Component\HttpKernel\Event\GetResponseEvent";i:28;s:70:"Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent";i:29;s:63:"Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent";i:30;s:41:"Symfony\Component\HttpKernel\KernelEvents";i:31;s:47:"Symfony\Component\HttpKernel\Config\FileLocator";i:32;s:62:"Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser";i:33;s:60:"Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver";i:34;s:40:"Symfony\Component\Security\Http\Firewall";i:35;s:58:"Symfony\Component\Security\Core\User\UserProviderInterface";i:36;s:76:"Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager";i:37;s:73:"Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage";i:38;s:67:"Symfony\Component\Security\Core\Authorization\AccessDecisionManager";i:39;s:66:"Symfony\Component\Security\Core\Authorization\AuthorizationChecker";i:40;s:66:"Symfony\Component\Security\Core\Authorization\Voter\VoterInterface";i:41;s:50:"Symfony\Bundle\SecurityBundle\Security\FirewallMap";i:42;s:54:"Symfony\Bundle\SecurityBundle\Security\FirewallContext";i:43;s:47:"Symfony\Component\HttpFoundation\RequestMatcher";i:44;s:16:"Twig_Environment";i:45;s:14:"Twig_Extension";i:46;s:19:"Twig_Extension_Core";i:47;s:22:"Twig_Extension_Escaper";i:48;s:24:"Twig_Extension_Optimizer";i:49;s:20:"Twig_LoaderInterface";i:50;s:11:"Twig_Markup";i:51;s:13:"Twig_Template";i:52;s:36:"Monolog\Formatter\FormatterInterface";i:53;s:31:"Monolog\Formatter\LineFormatter";i:54;s:32:"Monolog\Handler\HandlerInterface";i:55;s:31:"Monolog\Handler\AbstractHandler";i:56;s:41:"Monolog\Handler\AbstractProcessingHandler";i:57;s:29:"Monolog\Handler\StreamHandler";i:58;s:37:"Monolog\Handler\FingersCrossedHandler";i:59;s:29:"Monolog\Handler\FilterHandler";i:60;s:27:"Monolog\Handler\TestHandler";i:61;s:14:"Monolog\Logger";i:62;s:29:"Symfony\Bridge\Monolog\Logger";i:63;s:43:"Symfony\Bridge\Monolog\Handler\DebugHandler";i:64;s:58:"Monolog\Handler\FingersCrossed\ActivationStrategyInterface";i:65;s:59:"Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy";i:66;s:49:"Symfony\Bundle\AsseticBundle\DefaultValueSupplier";i:67;s:49:"Symfony\Bundle\AsseticBundle\Factory\AssetFactory";i:68;s:36:"Doctrine\Common\Annotations\DocLexer";i:69;s:43:"Doctrine\Common\Annotations\FileCacheReader";i:70;s:37:"Doctrine\Common\Annotations\PhpParser";i:71;s:34:"Doctrine\Common\Annotations\Reader";i:72;s:21:"Doctrine\Common\Lexer";i:73;s:46:"Doctrine\Common\Persistence\ConnectionRegistry";i:74;s:33:"Doctrine\Common\Persistence\Proxy";i:75;s:31:"Doctrine\Common\Util\ClassUtils";i:76;s:39:"Doctrine\Bundle\DoctrineBundle\Registry";i:77;s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";i:78;s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";i:79;s:80:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter";i:80;s:80:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter";i:81;s:81:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface";i:82;s:79:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager";i:83;s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";i:84;s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";i:85;s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";i:86;s:72:"Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationAnnotation";}} \ No newline at end of file diff --git a/app/cache/dev/profiler/10/6a/7f6a10 b/app/cache/dev/profiler/10/6a/7f6a10 deleted file mode 100644 index 5dcee03..0000000 --- a/app/cache/dev/profiler/10/6a/7f6a10 +++ /dev/null @@ -1 +0,0 @@ -a:8:{s:5:"token";s:6:"7f6a10";s:6:"parent";N;s:8:"children";a:0:{}s:4:"data";a:15:{s:6:"config";C:62:"Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector":1896:{a:17:{s:8:"app_name";N;s:11:"app_version";N;s:5:"token";s:6:"7f6a10";s:15:"symfony_version";s:5:"2.7.5";s:13:"symfony_state";s:6:"stable";s:4:"name";s:3:"app";s:3:"env";s:3:"dev";s:5:"debug";b:1;s:11:"php_version";s:6:"5.5.26";s:14:"xdebug_enabled";b:0;s:14:"eaccel_enabled";b:0;s:11:"apc_enabled";b:0;s:14:"xcache_enabled";b:0;s:16:"wincache_enabled";b:0;s:20:"zend_opcache_enabled";b:0;s:7:"bundles";a:14:{s:15:"FrameworkBundle";s:87:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";s:14:"SecurityBundle";s:86:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";s:10:"TwigBundle";s:82:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";s:13:"MonologBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle";s:17:"SwiftmailerBundle";s:63:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle";s:13:"AsseticBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle";s:14:"DoctrineBundle";s:61:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle";s:26:"SensioFrameworkExtraBundle";s:66:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle";s:9:"AppBundle";s:43:"/var/www/html/portfolio-photo/src/AppBundle";s:13:"XavSiteBundle";s:48:"/var/www/html/portfolio-photo/src/Xav/SiteBundle";s:11:"DebugBundle";s:83:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";s:17:"WebProfilerBundle";s:89:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";s:24:"SensioDistributionBundle";s:96:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle";s:21:"SensioGeneratorBundle";s:90:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle";}s:9:"sapi_name";s:10:"cli-server";}}s:7:"request";C:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector":2871:{a:18:{s:6:"format";s:4:"html";s:7:"content";s:0:"";s:12:"content_type";s:24:"text/html; charset=UTF-8";s:11:"status_text";s:2:"OK";s:11:"status_code";i:200;s:13:"request_query";a:0:{}s:15:"request_request";a:0:{}s:15:"request_headers";a:7:{s:4:"host";a:1:{i:0;s:14:"127.0.0.1:8000";}s:10:"user-agent";a:1:{i:0;s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";}s:6:"accept";a:1:{i:0;s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";}s:15:"accept-language";a:1:{i:0;s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";}s:15:"accept-encoding";a:1:{i:0;s:13:"gzip, deflate";}s:10:"connection";a:1:{i:0;s:10:"keep-alive";}s:14:"x-php-ob-level";a:1:{i:0;i:1;}}s:14:"request_server";a:21:{s:13:"DOCUMENT_ROOT";s:33:"/var/www/html/portfolio-photo/web";s:11:"REMOTE_ADDR";s:9:"127.0.0.1";s:11:"REMOTE_PORT";s:5:"53511";s:15:"SERVER_SOFTWARE";s:29:"PHP 5.5.26 Development Server";s:15:"SERVER_PROTOCOL";s:8:"HTTP/1.1";s:11:"SERVER_NAME";s:9:"127.0.0.1";s:11:"SERVER_PORT";s:4:"8000";s:11:"REQUEST_URI";s:25:"/app_dev.php/hello/xavier";s:14:"REQUEST_METHOD";s:3:"GET";s:11:"SCRIPT_NAME";s:12:"/app_dev.php";s:15:"SCRIPT_FILENAME";s:45:"/var/www/html/portfolio-photo/web/app_dev.php";s:9:"PATH_INFO";s:13:"/hello/xavier";s:8:"PHP_SELF";s:25:"/app_dev.php/hello/xavier";s:9:"HTTP_HOST";s:14:"127.0.0.1:8000";s:15:"HTTP_USER_AGENT";s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";s:11:"HTTP_ACCEPT";s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";s:20:"HTTP_ACCEPT_LANGUAGE";s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";s:20:"HTTP_ACCEPT_ENCODING";s:13:"gzip, deflate";s:15:"HTTP_CONNECTION";s:10:"keep-alive";s:18:"REQUEST_TIME_FLOAT";d:1444222600.591486;s:12:"REQUEST_TIME";i:1444222600;}s:15:"request_cookies";a:0:{}s:18:"request_attributes";a:8:{s:11:"_controller";s:56:"Xav\SiteBundle\Controller\DefaultController::indexAction";s:4:"name";s:6:"xavier";s:6:"_route";s:22:"xav_site_default_index";s:13:"_route_params";a:1:{s:4:"name";s:6:"xavier";}s:9:"_template";s:67:"Object(Symfony\Bundle\FrameworkBundle\Templating\TemplateReference)";s:14:"_template_vars";s:2:"[]";s:20:"_template_streamable";s:5:"false";s:22:"_template_default_vars";s:11:"[0 => name]";}s:16:"response_headers";a:4:{s:13:"cache-control";a:1:{i:0;s:8:"no-cache";}s:4:"date";a:1:{i:0;s:29:"Wed, 07 Oct 2015 12:56:41 GMT";}s:12:"content-type";a:1:{i:0;s:24:"text/html; charset=UTF-8";}s:13:"x-debug-token";a:1:{i:0;s:6:"7f6a10";}}s:16:"session_metadata";a:0:{}s:18:"session_attributes";a:0:{}s:7:"flashes";a:0:{}s:9:"path_info";s:13:"/hello/xavier";s:10:"controller";a:4:{s:5:"class";s:43:"Xav\SiteBundle\Controller\DefaultController";s:6:"method";s:11:"indexAction";s:4:"file";s:81:"/var/www/html/portfolio-photo/src/Xav/SiteBundle/Controller/DefaultController.php";s:4:"line";i:15;}s:6:"locale";s:2:"en";}}s:4:"ajax";C:62:"Symfony\Bundle\FrameworkBundle\DataCollector\AjaxDataCollector":6:{a:0:{}}s:9:"exception";C:65:"Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector":6:{a:0:{}}s:6:"events";C:61:"Symfony\Component\HttpKernel\DataCollector\EventDataCollector":18566:{a:2:{s:16:"called_listeners";a:29:{s:90:"kernel.request.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:85;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";}s:81:"kernel.request.Symfony\Component\HttpKernel\EventListener\DumpListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";s:6:"method";s:9:"configure";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DumpListener.php";s:4:"line";i:40;s:6:"pretty";s:66:"Symfony\Component\HttpKernel\EventListener\DumpListener::configure";}s:92:"kernel.request.Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:16;s:6:"pretty";s:77:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/FragmentListener.php";s:4:"line";i:56;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2029;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:71;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";}s:93:"kernel.request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:38;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";}s:72:"kernel.request.Symfony\Component\Security\Http\Firewall::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2527;s:6:"pretty";s:57:"Symfony\Component\Security\Http\Firewall::onKernelRequest";}s:90:"kernel.request.Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:93:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/EventListener/RequestListener.php";s:4:"line";i:23;s:6:"pretty";s:75:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";}s:102:"kernel.controller.Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RouterDataCollector.php";s:4:"line";i:66;s:6:"pretty";s:84:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";}s:101:"kernel.controller.Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php";s:4:"line";i:288;s:6:"pretty";s:83:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";}s:105:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7053;s:6:"pretty";s:87:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";}s:109:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7126;s:6:"pretty";s:91:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";}s:104:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7568;s:6:"pretty";s:86:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7692;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7484;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";}s:91:"kernel.view.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";a:7:{s:5:"event";s:11:"kernel.view";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:12:"onKernelView";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7509;s:6:"pretty";s:79:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:1952;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/RememberMe/ResponseListener.php";s:4:"line";i:28;s:6:"pretty";s:77:"Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";}s:100:"kernel.response.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7598;s:6:"pretty";s:84:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:97;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";}s:104:"kernel.response.Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:131:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php";s:4:"line";i:59;s:6:"pretty";s:88:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";}s:96:"kernel.response.Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SaveSessionListener.php";s:4:"line";i:47;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";}s:101:"kernel.response.Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/StreamedResponseListener.php";s:4:"line";i:32;s:6:"pretty";s:85:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:80;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";}s:106:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:43;s:6:"pretty";s:84:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2023;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";}s:85:"kernel.finish_request.Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2544;s:6:"pretty";s:63:"Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";}}s:20:"not_called_listeners";a:7:{s:82:"kernel.terminate.Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";a:7:{s:5:"event";s:16:"kernel.terminate";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\EventDispatcher\Debug\WrappedListener";s:6:"method";s:8:"__invoke";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/WrappedListener.php";s:4:"line";i:55;s:6:"pretty";s:65:"Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";}s:95:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:73;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";}s:96:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Component\HttpKernel\EventListener\ExceptionListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:121:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php";s:4:"line";i:40;s:6:"pretty";s:79:"Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";}s:91:"console.command.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:72:"console.command.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:9:"onCommand";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:121;s:6:"pretty";s:56:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";}s:97:"console.terminate.Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";s:6:"method";s:11:"onTerminate";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/EventListener/EmailSenderListener.php";s:4:"line";i:46;s:6:"pretty";s:79:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";}s:76:"console.terminate.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:11:"onTerminate";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:136;s:6:"pretty";s:58:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";}}}}s:6:"logger";C:62:"Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector":9193:{a:5:{s:11:"error_count";i:0;s:17:"deprecation_count";i:0;s:12:"scream_count";i:1;s:10:"priorities";a:2:{i:100;a:2:{s:5:"count";i:31;s:4:"name";s:5:"DEBUG";}i:200;a:2:{s:5:"count";i:2;s:4:"name";s:4:"INFO";}}s:4:"logs";a:33:{i:0;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:39:"Matched route "xav_site_default_index".";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:2:{s:16:"route_parameters";a:3:{s:11:"_controller";s:56:"Xav\SiteBundle\Controller\DefaultController::indexAction";s:4:"name";s:6:"xavier";s:6:"_route";s:22:"xav_site_default_index";}s:11:"request_uri";s:46:"http://127.0.0.1:8000/app_dev.php/hello/xavier";}}i:1;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:51:"Populated the TokenStorage with an anonymous Token.";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:0:{}}i:2;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:3;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:4;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:113:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:5;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:124:"Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:6;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:7;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:8;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:9;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:125:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:10;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:104:"Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:11;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:12;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:134:"Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:13;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:133:"Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:14;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:137:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:15;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:141:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:16;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:136:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:17;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:18;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:19;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:150:"filemtime(): stat failed for /var/www/html/portfolio-photo/app/cache/dev/twig/5/0/50767134623071033c70967e6377ae4d4f20a237bbc550e28adb66a77713b5ac.php";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:5:{s:4:"type";i:2;s:4:"file";s:76:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Cache/Filesystem.php";s:4:"line";i:90;s:5:"level";i:28928;s:6:"scream";b:1;}}i:20;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:123:"Notified event "kernel.view" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:21;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:138:"Listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView" stopped propagation of the event "kernel.view".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:22;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:23;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:24;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:132:"Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:25;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:26;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:136:"Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:27;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:128:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:28;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:133:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:29;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:30;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:138:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:31;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:32;a:5:{s:9:"timestamp";i:1444222601;s:7:"message";s:117:"Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}}}}s:4:"time";C:60:"Symfony\Component\HttpKernel\DataCollector\TimeDataCollector":24136:{a:2:{s:10:"start_time";d:1444222600602.5239;s:6:"events";a:35:{s:11:"__section__";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:108;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24641536;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:113;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:114;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24903680;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:14:"kernel.request";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:65;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:18874368;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:3:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:18874368;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:98;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:102;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24379392;}i:2;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:113;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:114;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24903680;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:18874368;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:2;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:19136512;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:2;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:2;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:19136512;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:2;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:60;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:21757952;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:60;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:60;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:21757952;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:60;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:60;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:21757952;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:40:"Symfony\Component\Security\Http\Firewall";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:60;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:65;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:31:"security.authentication.success";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:65;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:65;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:65;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:65;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:23:"controller.get_callable";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:68;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:68;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:17:"kernel.controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:98;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:98;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24117248;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:71;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:97;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24117248;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:10:"controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:71;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:24:"controller.get_arguments";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:71;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:71;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:11:"kernel.view";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:71;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:97;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24117248;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:37:"XavSiteBundle:Default:index.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:97;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:97;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24117248;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:15:"kernel.response";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:98;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:108;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24641536;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:56:"Symfony\Component\Security\Http\Firewall\ContextListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:98;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:98;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24117248;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:98;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:98;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24117248;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:98;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:98;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24117248;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:102;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:107;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24641536;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:107;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:108;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24641536;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:108;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:108;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24641536;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:16:"kernel.terminate";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:113;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:114;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24903680;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:113;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:113;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:24641536;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222601142.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}}}}s:6:"memory";C:62:"Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector":62:{a:2:{s:6:"memory";i:24903680;s:12:"memory_limit";i:134217728;}}s:6:"router";C:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector":51:{a:3:{s:8:"redirect";b:0;s:3:"url";N;s:5:"route";N;}}s:4:"form";C:64:"Symfony\Component\Form\Extension\DataCollector\FormDataCollector":71:{a:3:{s:5:"forms";a:0:{}s:13:"forms_by_hash";a:0:{}s:9:"nb_errors";i:0;}}s:4:"twig";C:51:"Symfony\Bridge\Twig\DataCollector\TwigDataCollector":620:{a:1:{s:7:"profile";s:591:"C:21:"Twig_Profiler_Profile":556:{a:6:{i:0;s:4:"main";i:1;s:4:"main";i:2;s:4:"ROOT";i:3;a:3:{s:2:"wt";d:1444222601.1373119;s:2:"mu";i:18081744;s:3:"pmu";i:18119256;}i:4;a:3:{s:2:"wt";d:1444222601.239614;s:2:"mu";i:23667352;s:3:"pmu";i:23723784;}i:5;a:1:{i:0;C:21:"Twig_Profiler_Profile":295:{a:6:{i:0;s:37:"XavSiteBundle:Default:index.html.twig";i:1;s:37:"XavSiteBundle:Default:index.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222601.2395229;s:2:"mu";i:23659112;s:3:"pmu";i:23723784;}i:4;a:3:{s:2:"wt";d:1444222601.2396049;s:2:"mu";i:23666792;s:3:"pmu";i:23723784;}i:5;a:0:{}}}}}}";}}s:8:"security";C:65:"Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector":248:{a:7:{s:7:"enabled";b:1;s:13:"authenticated";b:1;s:11:"token_class";s:67:"Symfony\Component\Security\Core\Authentication\Token\AnonymousToken";s:4:"user";s:5:"anon.";s:5:"roles";a:0:{}s:15:"inherited_roles";a:0:{}s:23:"supports_role_hierarchy";b:1;}}s:11:"swiftmailer";C:67:"Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector":77:{a:3:{s:6:"mailer";a:0:{}s:12:"messageCount";i:0;s:13:"defaultMailer";s:0:"";}}s:2:"db";C:66:"Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector":462:{a:6:{s:7:"queries";a:1:{s:7:"default";a:0:{}}s:11:"connections";a:1:{s:7:"default";s:32:"doctrine.dbal.default_connection";}s:8:"managers";a:1:{s:7:"default";s:35:"doctrine.orm.default_entity_manager";}s:8:"entities";a:1:{s:7:"default";a:0:{}}s:6:"errors";a:0:{}s:6:"caches";a:4:{s:7:"enabled";b:0;s:11:"log_enabled";b:0;s:6:"counts";a:3:{s:4:"puts";i:0;s:4:"hits";i:0;s:6:"misses";i:0;}s:7:"regions";a:3:{s:4:"puts";a:0:{}s:4:"hits";a:0:{}s:6:"misses";a:0:{}}}}}s:4:"dump";C:60:"Symfony\Component\HttpKernel\DataCollector\DumpDataCollector":6:{a:0:{}}}s:2:"ip";s:9:"127.0.0.1";s:6:"method";s:3:"GET";s:3:"url";s:46:"http://127.0.0.1:8000/app_dev.php/hello/xavier";s:4:"time";i:1444222601;} \ No newline at end of file diff --git a/app/cache/dev/profiler/34/1b/8c1b34 b/app/cache/dev/profiler/34/1b/8c1b34 deleted file mode 100644 index 97e94c5..0000000 --- a/app/cache/dev/profiler/34/1b/8c1b34 +++ /dev/null @@ -1 +0,0 @@ -a:8:{s:5:"token";s:6:"8c1b34";s:6:"parent";N;s:8:"children";a:0:{}s:4:"data";a:15:{s:6:"config";C:62:"Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector":1819:{a:17:{s:8:"app_name";N;s:11:"app_version";N;s:5:"token";s:6:"8c1b34";s:15:"symfony_version";s:5:"2.7.5";s:13:"symfony_state";s:6:"stable";s:4:"name";s:3:"app";s:3:"env";s:3:"dev";s:5:"debug";b:1;s:11:"php_version";s:6:"5.5.26";s:14:"xdebug_enabled";b:0;s:14:"eaccel_enabled";b:0;s:11:"apc_enabled";b:0;s:14:"xcache_enabled";b:0;s:16:"wincache_enabled";b:0;s:20:"zend_opcache_enabled";b:0;s:7:"bundles";a:13:{s:15:"FrameworkBundle";s:87:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";s:14:"SecurityBundle";s:86:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";s:10:"TwigBundle";s:82:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";s:13:"MonologBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle";s:17:"SwiftmailerBundle";s:63:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle";s:13:"AsseticBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle";s:14:"DoctrineBundle";s:61:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle";s:26:"SensioFrameworkExtraBundle";s:66:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle";s:9:"AppBundle";s:43:"/var/www/html/portfolio-photo/src/AppBundle";s:11:"DebugBundle";s:83:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";s:17:"WebProfilerBundle";s:89:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";s:24:"SensioDistributionBundle";s:96:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle";s:21:"SensioGeneratorBundle";s:90:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle";}s:9:"sapi_name";s:10:"cli-server";}}s:7:"request";C:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector":2506:{a:18:{s:6:"format";s:4:"html";s:7:"content";s:0:"";s:12:"content_type";s:24:"text/html; charset=UTF-8";s:11:"status_text";s:2:"OK";s:11:"status_code";i:200;s:13:"request_query";a:0:{}s:15:"request_request";a:0:{}s:15:"request_headers";a:7:{s:4:"host";a:1:{i:0;s:14:"127.0.0.1:8000";}s:10:"user-agent";a:1:{i:0;s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";}s:6:"accept";a:1:{i:0;s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";}s:15:"accept-language";a:1:{i:0;s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";}s:15:"accept-encoding";a:1:{i:0;s:13:"gzip, deflate";}s:10:"connection";a:1:{i:0;s:10:"keep-alive";}s:14:"x-php-ob-level";a:1:{i:0;i:1;}}s:14:"request_server";a:20:{s:13:"DOCUMENT_ROOT";s:33:"/var/www/html/portfolio-photo/web";s:11:"REMOTE_ADDR";s:9:"127.0.0.1";s:11:"REMOTE_PORT";s:5:"53494";s:15:"SERVER_SOFTWARE";s:29:"PHP 5.5.26 Development Server";s:15:"SERVER_PROTOCOL";s:8:"HTTP/1.1";s:11:"SERVER_NAME";s:9:"127.0.0.1";s:11:"SERVER_PORT";s:4:"8000";s:11:"REQUEST_URI";s:12:"/app_dev.php";s:14:"REQUEST_METHOD";s:3:"GET";s:11:"SCRIPT_NAME";s:12:"/app_dev.php";s:15:"SCRIPT_FILENAME";s:45:"/var/www/html/portfolio-photo/web/app_dev.php";s:8:"PHP_SELF";s:12:"/app_dev.php";s:9:"HTTP_HOST";s:14:"127.0.0.1:8000";s:15:"HTTP_USER_AGENT";s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";s:11:"HTTP_ACCEPT";s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";s:20:"HTTP_ACCEPT_LANGUAGE";s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";s:20:"HTTP_ACCEPT_ENCODING";s:13:"gzip, deflate";s:15:"HTTP_CONNECTION";s:10:"keep-alive";s:18:"REQUEST_TIME_FLOAT";d:1444222060.216773;s:12:"REQUEST_TIME";i:1444222060;}s:15:"request_cookies";a:0:{}s:18:"request_attributes";a:3:{s:11:"_controller";s:51:"AppBundle\Controller\DefaultController::indexAction";s:6:"_route";s:8:"homepage";s:13:"_route_params";a:0:{}}s:16:"response_headers";a:4:{s:13:"cache-control";a:1:{i:0;s:8:"no-cache";}s:4:"date";a:1:{i:0;s:29:"Wed, 07 Oct 2015 12:47:40 GMT";}s:12:"content-type";a:1:{i:0;s:24:"text/html; charset=UTF-8";}s:13:"x-debug-token";a:1:{i:0;s:6:"8c1b34";}}s:16:"session_metadata";a:0:{}s:18:"session_attributes";a:0:{}s:7:"flashes";a:0:{}s:9:"path_info";s:1:"/";s:10:"controller";a:4:{s:5:"class";s:38:"AppBundle\Controller\DefaultController";s:6:"method";s:11:"indexAction";s:4:"file";s:76:"/var/www/html/portfolio-photo/src/AppBundle/Controller/DefaultController.php";s:4:"line";i:14;}s:6:"locale";s:2:"en";}}s:4:"ajax";C:62:"Symfony\Bundle\FrameworkBundle\DataCollector\AjaxDataCollector":6:{a:0:{}}s:9:"exception";C:65:"Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector":6:{a:0:{}}s:6:"events";C:61:"Symfony\Component\HttpKernel\DataCollector\EventDataCollector":18566:{a:2:{s:16:"called_listeners";a:28:{s:90:"kernel.request.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:85;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";}s:81:"kernel.request.Symfony\Component\HttpKernel\EventListener\DumpListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";s:6:"method";s:9:"configure";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DumpListener.php";s:4:"line";i:40;s:6:"pretty";s:66:"Symfony\Component\HttpKernel\EventListener\DumpListener::configure";}s:92:"kernel.request.Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:16;s:6:"pretty";s:77:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/FragmentListener.php";s:4:"line";i:56;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2029;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:71;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";}s:93:"kernel.request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:38;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";}s:72:"kernel.request.Symfony\Component\Security\Http\Firewall::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2527;s:6:"pretty";s:57:"Symfony\Component\Security\Http\Firewall::onKernelRequest";}s:90:"kernel.request.Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:93:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/EventListener/RequestListener.php";s:4:"line";i:23;s:6:"pretty";s:75:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";}s:102:"kernel.controller.Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RouterDataCollector.php";s:4:"line";i:66;s:6:"pretty";s:84:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";}s:101:"kernel.controller.Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php";s:4:"line";i:288;s:6:"pretty";s:83:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";}s:105:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7053;s:6:"pretty";s:87:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";}s:109:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7126;s:6:"pretty";s:91:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";}s:104:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7568;s:6:"pretty";s:86:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7692;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7484;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:1952;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/RememberMe/ResponseListener.php";s:4:"line";i:28;s:6:"pretty";s:77:"Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";}s:100:"kernel.response.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7598;s:6:"pretty";s:84:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:97;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";}s:104:"kernel.response.Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:131:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php";s:4:"line";i:59;s:6:"pretty";s:88:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";}s:96:"kernel.response.Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SaveSessionListener.php";s:4:"line";i:47;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";}s:101:"kernel.response.Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/StreamedResponseListener.php";s:4:"line";i:32;s:6:"pretty";s:85:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:80;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";}s:106:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:43;s:6:"pretty";s:84:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2023;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";}s:85:"kernel.finish_request.Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2544;s:6:"pretty";s:63:"Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";}}s:20:"not_called_listeners";a:8:{s:82:"kernel.terminate.Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";a:7:{s:5:"event";s:16:"kernel.terminate";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\EventDispatcher\Debug\WrappedListener";s:6:"method";s:8:"__invoke";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/WrappedListener.php";s:4:"line";i:55;s:6:"pretty";s:65:"Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";}s:95:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:73;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";}s:96:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Component\HttpKernel\EventListener\ExceptionListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:121:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php";s:4:"line";i:40;s:6:"pretty";s:79:"Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";}s:91:"console.command.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:72:"console.command.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:9:"onCommand";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:121;s:6:"pretty";s:56:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";}s:97:"console.terminate.Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";s:6:"method";s:11:"onTerminate";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/EventListener/EmailSenderListener.php";s:4:"line";i:46;s:6:"pretty";s:79:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";}s:76:"console.terminate.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:11:"onTerminate";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:136;s:6:"pretty";s:58:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";}s:91:"kernel.view.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";a:7:{s:5:"event";s:11:"kernel.view";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:12:"onKernelView";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7509;s:6:"pretty";s:79:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";}}}}s:6:"logger";C:62:"Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector":8141:{a:5:{s:11:"error_count";i:0;s:17:"deprecation_count";i:0;s:12:"scream_count";i:0;s:10:"priorities";a:2:{i:100;a:2:{s:5:"count";i:28;s:4:"name";s:5:"DEBUG";}i:200;a:2:{s:5:"count";i:2;s:4:"name";s:4:"INFO";}}s:4:"logs";a:30:{i:0;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:25:"Matched route "homepage".";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:2:{s:16:"route_parameters";a:2:{s:11:"_controller";s:51:"AppBundle\Controller\DefaultController::indexAction";s:6:"_route";s:8:"homepage";}s:11:"request_uri";s:34:"http://127.0.0.1:8000/app_dev.php/";}}i:1;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:51:"Populated the TokenStorage with an anonymous Token.";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:0:{}}i:2;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:3;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:4;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:113:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:5;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:124:"Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:6;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:7;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:8;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:9;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:125:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:10;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:104:"Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:11;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:12;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:134:"Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:13;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:133:"Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:14;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:137:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:15;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:141:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:16;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:136:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:17;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:18;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:19;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:20;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:21;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:132:"Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:22;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:23;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:136:"Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:24;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:128:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:25;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:133:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:26;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:27;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:138:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:28;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:29;a:5:{s:9:"timestamp";i:1444222060;s:7:"message";s:117:"Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}}}}s:4:"time";C:60:"Symfony\Component\HttpKernel\DataCollector\TimeDataCollector":25100:{a:2:{s:10:"start_time";d:1444222060226.8801;s:6:"events";a:37:{s:11:"__section__";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:58;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:59;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:14:"kernel.request";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:11;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7602176;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:6815744;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:3:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:6815744;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:36;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:53;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11534336;}i:2;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:58;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:59;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:6815744;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:1;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:6815744;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:1;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:1;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:6815744;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:1;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:4;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7077888;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:5;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:5;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7077888;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:5;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:5;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7077888;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:40:"Symfony\Component\Security\Http\Firewall";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:5;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:11;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7602176;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:31:"security.authentication.success";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:11;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:11;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7602176;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:11;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:11;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7602176;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:23:"controller.get_callable";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:14;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:15;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7602176;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:17:"kernel.controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:19;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:20;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:19;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:19;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:19;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:19;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:19;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:19;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:19;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:19;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:19;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:19;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:36;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:36;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:9175040;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:19;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:20;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:20;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:20;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:10:"controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:20;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:35;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:9175040;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:24:"controller.get_arguments";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:21;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:21;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:8126464;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:23:"default/index.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:35;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:35;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:9175040;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:14:"base.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:35;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:35;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:9175040;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:15:"kernel.response";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:35;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:56:"Symfony\Component\Security\Http\Firewall\ContextListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:35;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:35;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:9175040;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:35;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:35;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:9175040;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:35;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:36;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:9175040;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:53;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:54;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:39:"@WebProfiler/Profiler/base_js.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:55;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:55;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:55;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:16:"kernel.terminate";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:58;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:59;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:58;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:58;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:11796480;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222060275.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}}}}s:6:"memory";C:62:"Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector":62:{a:2:{s:6:"memory";i:11796480;s:12:"memory_limit";i:134217728;}}s:6:"router";C:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector":51:{a:3:{s:8:"redirect";b:0;s:3:"url";N;s:5:"route";N;}}s:4:"form";C:64:"Symfony\Component\Form\Extension\DataCollector\FormDataCollector":71:{a:3:{s:5:"forms";a:0:{}s:13:"forms_by_hash";a:0:{}s:9:"nb_errors";i:0;}}s:4:"twig";C:51:"Symfony\Bridge\Twig\DataCollector\TwigDataCollector":2666:{a:1:{s:7:"profile";s:2636:"C:21:"Twig_Profiler_Profile":2600:{a:6:{i:0;s:4:"main";i:1;s:4:"main";i:2;s:4:"ROOT";i:3;a:3:{s:2:"wt";d:1444222060.267678;s:2:"mu";i:6219080;s:3:"pmu";i:6243248;}i:4;a:3:{s:2:"wt";d:1444222060.330899;s:2:"mu";i:11591080;s:3:"pmu";i:11688600;}i:5;a:2:{i:0;C:21:"Twig_Profiler_Profile":1661:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:23:"default/index.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222060.3103819;s:2:"mu";i:9063376;s:3:"pmu";i:9096392;}i:4;a:3:{s:2:"wt";d:1444222060.3106599;s:2:"mu";i:9083760;s:3:"pmu";i:9108496;}i:5;a:1:{i:0;C:21:"Twig_Profiler_Profile":1358:{a:6:{i:0;s:14:"base.html.twig";i:1;s:14:"base.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222060.3104341;s:2:"mu";i:9067544;s:3:"pmu";i:9097208;}i:4;a:3:{s:2:"wt";d:1444222060.3106401;s:2:"mu";i:9083896;s:3:"pmu";i:9107744;}i:5;a:4:{i:0;C:21:"Twig_Profiler_Profile":231:{a:6:{i:0;s:14:"base.html.twig";i:1;s:5:"title";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222060.310457;s:2:"mu";i:9070288;s:3:"pmu";i:9099024;}i:4;a:3:{s:2:"wt";d:1444222060.3104639;s:2:"mu";i:9071608;s:3:"pmu";i:9099824;}i:5;a:0:{}}}i:1;C:21:"Twig_Profiler_Profile":247:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:11:"stylesheets";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222060.310509;s:2:"mu";i:9072712;s:3:"pmu";i:9100888;}i:4;a:3:{s:2:"wt";d:1444222060.3105171;s:2:"mu";i:9073536;s:3:"pmu";i:9101448;}i:5;a:0:{}}}i:2;C:21:"Twig_Profiler_Profile":240:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:4:"body";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222060.3105869;s:2:"mu";i:9080608;s:3:"pmu";i:9104920;}i:4;a:3:{s:2:"wt";d:1444222060.3106201;s:2:"mu";i:9081624;s:3:"pmu";i:9105800;}i:5;a:0:{}}}i:3;C:21:"Twig_Profiler_Profile":239:{a:6:{i:0;s:14:"base.html.twig";i:1;s:11:"javascripts";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222060.3106301;s:2:"mu";i:9082720;s:3:"pmu";i:9106544;}i:4;a:3:{s:2:"wt";d:1444222060.3106351;s:2:"mu";i:9083544;s:3:"pmu";i:9107280;}i:5;a:0:{}}}}}}}}}i:1;C:21:"Twig_Profiler_Profile":641:{a:6:{i:0;s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";i:1;s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222060.3300691;s:2:"mu";i:11525936;s:3:"pmu";i:11560488;}i:4;a:3:{s:2:"wt";d:1444222060.330888;s:2:"mu";i:11590520;s:3:"pmu";i:11688600;}i:5;a:1:{i:0;C:21:"Twig_Profiler_Profile":298:{a:6:{i:0;s:39:"@WebProfiler/Profiler/base_js.html.twig";i:1;s:39:"@WebProfiler/Profiler/base_js.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222060.330435;s:2:"mu";i:11572312;s:3:"pmu";i:11585928;}i:4;a:3:{s:2:"wt";d:1444222060.3306651;s:2:"mu";i:11589840;s:3:"pmu";i:11619096;}i:5;a:0:{}}}}}}}}}";}}s:8:"security";C:65:"Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector":248:{a:7:{s:7:"enabled";b:1;s:13:"authenticated";b:1;s:11:"token_class";s:67:"Symfony\Component\Security\Core\Authentication\Token\AnonymousToken";s:4:"user";s:5:"anon.";s:5:"roles";a:0:{}s:15:"inherited_roles";a:0:{}s:23:"supports_role_hierarchy";b:1;}}s:11:"swiftmailer";C:67:"Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector":77:{a:3:{s:6:"mailer";a:0:{}s:12:"messageCount";i:0;s:13:"defaultMailer";s:0:"";}}s:2:"db";C:66:"Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector":462:{a:6:{s:7:"queries";a:1:{s:7:"default";a:0:{}}s:11:"connections";a:1:{s:7:"default";s:32:"doctrine.dbal.default_connection";}s:8:"managers";a:1:{s:7:"default";s:35:"doctrine.orm.default_entity_manager";}s:8:"entities";a:1:{s:7:"default";a:0:{}}s:6:"errors";a:0:{}s:6:"caches";a:4:{s:7:"enabled";b:0;s:11:"log_enabled";b:0;s:6:"counts";a:3:{s:4:"puts";i:0;s:4:"hits";i:0;s:6:"misses";i:0;}s:7:"regions";a:3:{s:4:"puts";a:0:{}s:4:"hits";a:0:{}s:6:"misses";a:0:{}}}}}s:4:"dump";C:60:"Symfony\Component\HttpKernel\DataCollector\DumpDataCollector":6:{a:0:{}}}s:2:"ip";s:9:"127.0.0.1";s:6:"method";s:3:"GET";s:3:"url";s:34:"http://127.0.0.1:8000/app_dev.php/";s:4:"time";i:1444222060;} \ No newline at end of file diff --git a/app/cache/dev/profiler/65/2a/002a65 b/app/cache/dev/profiler/65/2a/002a65 deleted file mode 100644 index 007e90974c3c3139a81c97b1577a09d40808d6c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121363 zcmeHwX>;2~)^2`^N}p!l8;jT%y6&y(vE?K+vE?f}Z|(o! z#@1*w76PCEnVL)`B9=y(CEpd_KEduI9LT{?Z#O<3In}jg9g7+}nF}K{aV$3^ohai{$9_nTmifp31^?>GPSw`+fO^9Jv}4pu9Fwhy*=gkH>CJ0Gi#>W=@!@HP#P zNqC#hWbNJi=P%!5R;n6a`Rs3Z%K$T@i-pi(j_12@LX+eT_PlmsUoZrydiuz2@9ps& z1{MCEuGkO29DaW{#$L9X@0jQXc)o8ApyAA(kpv$~4FEoqZ zR59{b_Qu3t)7R$orV`!pz1hrPj^x4~vzI^#Iy4&BcMw?)}Uj(aV z@M3cp?1Rx~d??tCB66hv-Off4&y2$1Mv~zPRUiG?!*;p<#(fm9b@kEw=qj-D>C5t# z`yTkatM6q;CN6vztb_b{M>yw!i#A_7ObN4k6)IH{k^wb`P&o}3m-fTlynq+ zd<^qyxAXVQSvvN?^Y+3K_;Eq+H^FSbU9SCfU<=G&Ytr-R)lvKhH?#((`RK19JrX{< z{JP(I+-GXD6&q%>h?m0)p9bQ-1p>a>Y|@d9O04g&95Szvz*anL%zc`2TVzSQj>s$H(jjeDZ%bVp6be}%#A>UJ=-2;g-=SGPrG78Baiy8TM zG~hdY?k9ikZ#^g~ZW0g)wHR<0a>i{ugnS0MFF?Zr&pU6kj8q=vEj~G0Enn>XEi~Bq z%fIjph_vYu{BSun@z%dw^~ zEeOCOI46L1`z^IYNDIZc5>&)S3V-v?_vSDa=uKu&5HJDZ4WN$yTqfF9)$9ue|EOa} zQ52v##QX!${=x$pvv1fy(7WJ2%hk#onHS30-~PXxvp<57rl<=3ub#bKZv92@bwoGW_b?`@{7v>#MBN0HKf?N0EoUAr zjnP-4%K!R$zsg>{U%mYI|5h&CAOCCgU+gbfa|8`A77qVn<*jcY08|DEI_@vFKQ6W} z-d=~V{phb>{PvOkZQ^hChc1rguR*ir8a5A)P|W%EKg-RJXLEnCVm4KTPw>ea#vilX z_!q!RfB639g|}LM#=PihQ0gm8hs}#%`eNmO_Q8P38%x+%v=Hc_m<{3u;(>dZp@K=g zxqAKEyUX{VCf8S2pNQ9VTr6L}U;Jszl-HN2=4a0o+`NLUg2A;hk$b!v1IPC0Ww8TSVMelyN zzWQ|a`s!DD7uN94pFVvUsTXQIf#|9CuimlIWpj)NislHEg)ENGU{zjU{=eTYKYp70 zcKr(*lMn%tbxmwLOFf_SkQP71dDm-(=YEXCvShfdIb#3v4{;r(=^30 zE)2`nT?5Ehp&j_ANhzey#qum(`m-STV;MRrp_@t{i*I`S(3%ME8%#8SUniupw&aUK zse+jyefKc-FVf2w{#TO5kX7T|UGU{qB(|6!NN&-)Ccbtx{TJlg-|~8x8CW-$@lZE! zArGNIlM8>R5%6(X{@6HW_; zP8?Pz^Y~sw;BvB+iJ5iqg577L7^?qWr0QYw_dswvS4NX8>rGc$|_%K-$&%wo!h#^6orzEKz>Vx*MJ z>9vTw0O&4&e-E7Cds%)0e#zQqH^~4mmxc9h`*e<@bUvem^U`avoX12~aJXo(nGVqp zaIb=y7tRe!l0rd5Dm>`@%lj(Ed?MT=epU24V`|>K!i$+J=lIN@q3wpDK{IY~!MY`# zQ9q`XKqq`cwJl9!1}+JJ>_@J~CTNoXNY&Csu!>n4`p# z77y!0pQX>mV#vZffP)SHM<1S47R0yB}0N~tO0 z)&N#2N509vUjy%C^D)F<$FYrL;a_vKkhU=|O7R~slP<=;0hHu{rrgF`64%Tnze#4! zNTU~#Mw9Bah%^Nx0YlIOp^1q1lZCGXZTX4CbWYzH5(PBHARUA$9hU+|5d{n>(zs03 zCCse-uZSU11h0T36nzNs%Rk7|#)LY^)28S%H~GQp5Dgy;)?tDz;XiKWkXphpp6bcd&Ibcv%;bVX1o#3wMK zR}+dRPDt|-L*ZhqT2#_j<+`PY)t_WsM*`3zhLh3nTPRI`9`mY1F1POUKb4oQc!yqF|Ak#35a&??_e@k3F+qAQ6nm4)dv5Zcoppu|= zADfdgrN(j`>qJzK!a8X=dW9ZsIXbxvC0e@W=wx^vZ* z=SoG)k>&APTyiWghOup7pt-%jKm}bz7!w@_iZ|C)IAvqjQ2fPAWKwppw1kzk{xk^o zpqsZLs$WD&QZB->9P5fJn5F|Ieqrcc1CsLONW)e{K1qm#Y^v--Se0pa-3Em)&1%PdZi%9q%(x|Lly(qw7Ylx;w3 z$U;>AP{OQ9{X}AA&=!$AFH>TTvffE`5HhtP3f>2MmcLEz5FKbATa#IY74EO2B6gD% zu{SLa;!5_y0yio`Yci=g$<$R%N7H%4>o_a~q1i~FNfif2E3stqhtPyTGVeVVsWs&p z81YffO=2TRO{=4X%A-Mng_u6w1syfT6qamNt<7^foRuUce87itvMS}fOotbG6-QzH z=X7{pLGf~ruRO_>gh;YbS=CGXd~)R=rg?Dhx zPj{KjLYJx^LD!wiSD(}2M%5ysWh{?x_JfAfBB2+bmm09_sDVPK0 zY~M-;Vf5#8I9e}A@&23+mt$s->G0yZNNKQJSbY=|lI6RwawSjlCg3qkn2Ix*&*|{O z4pfX@vTAi=+rnze_U^)SHaw{+mu66Fxe3QCg(xg?Y?y6%PKHyK6NM3Qt>p0z>AtB0 zlHr9VPEUklMTxS`>QJ6wF1)ZF={XlZ?usv-VlKSvQYEatG^x!SY|puH)>SMF7(Z@a z;5io_r{BBEg%_&ckoUP1Yn%qBJj4-F;f6xhH-kxqw~V{C&45Sw+0IhnR5$^F=2PMb zc}(<7krqL4Ii^f=l$+3p|l55m+rCYqy z#XQR3aU{X5q^8TF0+9@dIKW@bAx%*uCn94SNTeLq5~fMO;%dN!Ug1$^gAACuyL)#j%Ow%4Waw0OGfy|Qd4C}0WBeE#h!a3Au zahn6KJzIQ9{>jey27)SVB;0DU&3LD!g#*Tm%k^x<)N^F-1~fSx80k^`+5zc5c<9Ux zeS*fxXq@x7fH0_Bl0#-BF|Q9p-~0DdfBVj_^_9nnK4guoWB7@M@)E3-iGn`VwTtJA~eG@LyXB5HvG6%Ql@FBe;sl2v1yXE=T_9uRjl{`Hq<~AUsxs^$mjdZGgiwq44H?Cl6iEHL zSOF($KML&R&WI8|h5M{o;V0~=pL!DCK9+i2TL3nfRBJcaM(m=)?{2L$!g-H!I2Kr@ z0LK!}F==mhhI1UQcR@Qe6)+K<2NwB=IUcHEnSJy=`ya!@CgLR``%t%5M&ev3oFi28m@(YFd2CrxrLmh0v2ZW6VqPV`g) zAfL0!tOp#^Lr16NndU7UG0JF3^%EUJ7zwxR=ZT=T{M5tvCp*&|*U)rgFIAX)##L1* z75W&glbx@GVH|eE37-K!P{?Gzkg|yYJ`*yjCdv})5MDu7v-J*ft3YDP2;Y?Gq}KdW zSuv93?EGw-^9+vVc@&<>&soAZMn2a?9#VZllmALN?{pz&!j%70kTcntHs+b`LSmYt zaPk%KZZ<@SMJLvHUv_dti@Nx3z2X7m4i@- zTZ&|)l=I`0{3Jwc;23komJ%9L-Ce{n$#)6WwM>A+Le--0o}(z8Ocxsg+^n+(K*ur7 z6rqCcD9%kq%*wWVE~lPi{%A#5UYP$G;t*){=?D zb8N^ST|_Su(iOWFx#>#ygPlN>krwu0D<=05IfH;hXjQBO9M&c&p~ZP`sGv>F02Hd+ zFV{$5N?3>)VR6rTf7`5vHs#jjQ?*5k)aj}zEuL@{EtSupdUl6~pg3{%{vK^? zCG<|kpAh|Iq0gUL@7wJzUXtT6MqDg!AE=q2Oqqas!Z+&@p0ArtmS3^sE1h1B1F+h- z2@84zbA1d)QaV$Ku(0yVM7kDQPz-Xyh8PeilyHS`1aL%rs%|7Eihhy=0)2>`x@G}t z=@=`FT62-no10yh-U_5rYkG&%8bzlhk0PAV*|!{uB*axU+NhdQ1(_3nvxhI&z&sfR zu$E#{CUQ0dTwf)sHtrfiymeJH`4gz!eLtdTbXB9gQx60L0DwS*n&au|m} znSgIY`S$C(ipae#an{5(yTmzfpq4-*;mQ$!7CHDfa?d_5{V#`CG87j|{Wr#wFYoL( zYcFgP--lKuiqp%lYbdPPCk$ttS=imhX>3!;r5M>-Z3|LrvxoB!w_bu#R>AEpofnDS zbO17ziBjVyvnd5pe|j-<4cqBV8w~@ooeuvBd&&6QZLpopaCYoIK4O+U?75FkTQhc= zYpPYZbtd2^g5x0`b=!L%V4|QFa2;+9vvU0qWN&Nc@LCNK4V6w8PJh1L`~d# zbNP?oeqtwY8uEAYuUuYVUtQCY1dQ6i6#K53H1=RX!o1rradh?GyWcPf(SjWv2^5QJ z3;`*3`nl>Npz+&!<~`ir?aw~^{NXI|tbPlkx3{GX%}C8pJF~jBf|!i!`}Z2R`AAbPbIMD$B`zs>@e^ZJCOKq zZ7}k8qFUHv<6t5Y2LjE@#nPXj`Lx;eES7#za_szU9{?TUp}A+0MN`XFP^{QGf5*Wk$S=%9UpN~%A>BCM%Lq_phFBjKFVro zWL267z)=IJdy01b?eF6=ItA=(L0O&o*&^5;6j$1RS>BFj^v`T&FHC1*TcB$94N;@}c-Ht@+<(NSXb%?P3K6Fj#St~f z)uN6BVLbFaI!hB_tw#27_XJc&^N~7NRMpUwnWg)NY0Wj;b*!1@Xg-K%f_%QUa2E^9 z^X-M=y3SOctEyu9Gu=|B_#LC-qzI@rGW5GApbi4+^Qnn&wPw1erJJVVm>`d;*@mS$ zisejpgD3zrsFxbwy+JuR8+$= zTwgOmEl-^)&fK1vwElGDB&MdL8FPQ(*tnq?wl=dAe?C7^0yc_~cTd2@$QmsyeX5$4 zYgo{6wr|WdZQ(o9xnWsTeX*EXmT76`bT(6!h3gno&zdbPcVVmU)X}F4?=)9nBge3N z0xBbQq^OFo+qw-Q>S($$o6cNIF>Df|zF}#Wr5l>>>DGKPb!OUPuHf(K!k+oQ3ggC_ zo+besIkMdoP#rBs>cVqDH^uW+OVxBso9VW#EDY7NE&5}j>!6r3ReZyq*>lyNEv5?< zCXKJdlCkyEBw!<_yL$rq(1E_=d$y;mJ}eSdpZn%)X25(=jfL-8?p&R!IxHE8OU*VR zTXoGb(f8NUEN$uuu+uY7zETuzCJh1sc9MNT$?JkXKThnTVQFK%4}xMr!&=_ zTGmWa+y&^R*&4i#sSZWB(EWw(o+tqu#Wl3zFi*UByt2Tdu>QBk7V?f`U2u{cBoDek zLLAC!(j};CBs7W$=w+2IVb>y&6AlfMmxMoKR_QuIt~YY7yI_dIRZ+af>S#!4XZgq_ZY^rYHbQn;h@g!wsiem1iYn+8Vb`qv5VOp_!feT{@)b z*U~^(9CcL`tB#|sie}bjafw!i12%Mr6nk=;Fh#MoU4f4p_CzlZDcWQjXy)!2Ylm!I56cq?DL{p{{0`HRIzF%=reM8*0K_22qo<70F9oJ|B^EXN9c z82(nRAwIB|&&N9ZGGMRwJx-ZWxTZdE})ATPIaL>3WfNSQk%E+;zo@)Z^i43Ht6J*G?94{bV6GP8M?W zWFfas7IOP!A$Lv|a`!|bAC}ifUKVrhC#$H>RX4_UHyw7LV+tqi?;VRZTc3*f_*@xv zB0N zx`Se_Kk(bY2gRM@sat)hj^47T!%!Wkkv~;YEPAR@+crWlRPo=Tl18+k(`E%4_GzUI z#u8E9_V$5FJJAc}lrm9P8-I;nZozE>_1C~`owi;vUi-*G2$<2i}oJ5m0#+oa~7`L8bj(Rub#{@ZW8nZN6o`Fe|i+EhT) zGzO}M2QD}7hNkL{t6S6#t)D1p2tZTtb>lnTh}^loL1!Wruf3j^9$Iep)BDY7vkM*v zfVcCvQ2m0#j!hK6^tARE08Q6kr{MR|1TF+%5a9RG32s2(_t6fnCHOdjtW~T9C%IZK z&NHXA-$ze4e7}v^fr90h;HPFsAC2LV{cHt(YwD-q_t70rHCs{NYFUlU8=ZZ$h*KE= zjU~U`A@%#{6Q?o&8iVh2xb|UzAi6Itj4cfOv~F;&G6)*O->J*hNAst4K3BIcXD@~y zqu?;;-;3qvs%?}Xd%H!NiI@IrFQ#8B__fw^RF%ZZOuO({yywKt(Em3 zzTFZ1Aq5`a{%Z-pO&Ri5@VkblDGsfFtq=Q8V-Pf!e{Ng&lOuire;@Xr#vo`8KRZjP zMaqSTzYqIQW2YfCgDR&zZ{7=#D z>(b@y$M7Qvn){qx!rzbOHyrr;G5v-Ee?PY0aNzI9_!|!V{aAm)fxjQ~Z#eMxWB&~X z{$9%6+Qys-dmV+`dntDt68tA_|7lOr{_C>buOIubRmnkjIVY4m^<)1H2mXHSzu~~& zkNr0s`1`T{1_J+gUUH-&=Nuhzwe@#6sAP9qr>KREuo}mioVJ_Fld|ez@mbfsQcV|) z%yVt>xMPIGlO#h{JjoX3Em^WV(`Q&Ld8{txa@LHS=-&{J-dy|l{{7V7zVq?tGi##i z@Q3_rF6@2qgTJ1izg&*L+oprZVoe*pFJnAMCj4_i0z< z^e<*WN{VVNn6ig(=YH#Z_x}8})jVUeXQ${<&e8dcjyJ}x3s{)J_S^Z(*W*fonmJze z<{f)6bM2hQ_|qHXUzxFK?>-udSge(p3b`GAbh29BFZX1ksk))5wyj~Ge>kfx8oc{k zHY*%=5ig|1#}rde2J_NsUa%s!{(QOhXZZAVOnphwQ|n>7I)C||vNyO*AE#e58GL>b zZ12UXq#EZf?%rH}-Lvzu);Af1+|bR;mGd!H!-~FWeXNn&q7mOl_C*TmOc3bqO<~OTvsa1E;Ffq%gDH z7=mjPntIf|ANLHP;58^1ZW5csc3}L+IX$D;^u87Lre#RG_m*o$S`2~#;-9RQ;Q0Ld z>gp4-%>g;13Yg*x=rJFwhJlU`8hXB5m}tHe?ms7%d7$SlO|um=!eKPq#MeyK!VyPk z5n+@K=W4p5Dzv308BR4-8(*TV9S|Rlr#gnMFkYl~lZ=}Q+vOt!6mr*(r=C zpf=iCT8>)Hh6(v6$6eLuL4=sB^IQ|ev130nh(nhefrk!395OvTA%HmBV*3t@c@k@; znkQj{@MvqqSVU7W{u2OWVyA?G@# z6*gz8LaF7_lIJn%nxY~X6)&WIrI0f$!Sp!b;EWKP2fc7GDpeR5g3Y0#qaAwsW!Imk zXsW4H8!@(KXsjhIhe}O#s6}9AJv+K%(jte@qxB5CvKp6~i>El=tbYzdgvruP-2Ax- z;Tk`PCpC1U5)i4W2AQ5&z%|{}qh8^qJZTxaVXDG1haDMqyXHi#qnQqTml%_ERf)?y zp~NB{6fOKPkt)-w>;nEU~81#*{S?|PZR8}dOA+x1H2g2mI$aL6|t8&mQ zP-&=Eo-M8X0#9kfD{Q?&VGo)u4M;((W=^z`+7U%1w;-!fsadRrOlCk=5!DzsAdgC; z3Y7zvmWH9Lf}M;23ly#(EjiH3acSXYQxqAts^$C?-L_Pf9g)Q2(tN_Wv}|3~bD(Rw z=)^cF=;gR{OlW#hX4nXUQG}kC8Ce}3YaZ(f;}W2|b`EsI5Zw{Ze5t^t<(PuQ1V+bK z1pA5`kmpOg3YP=c;&6o3oEEpOFv==tqjFq=GAshmi%Zu)K&}>BI!_ptu7e1uxWrw= z9|bR&>j+Ei zA})_Ey2I7t2tyb!)B$G(b{8$t3t=zEC6X|%E{Ie z5SdFvX_~H<#K)>Q)5){C2LGy9pQWrxtn-v{=_>5_m&~dp=LMYFz`(Q-cajWfVQmTn zVl}|G6hm&65|d@t2N`k$=*X@L3tY1;F|XsKke9QiWjU5$U}_rjhN3bvbR65-;2dKm5C6z#UR>7blI z43xmARCD1r!$RR0JGO_%WMzzKxRxa#cPu-{L^e_kqMk@VFXc)HMkzcTkt{1j2uKzfp;E)10$H7s9Vq8O4 zbTd~(mGV(JW1?yeR#8@H=n9G%im8(#llBjkMlMyw)UvDm&|`!`lpg-p;h1$zF;=Fd zII=_umm(Gg!j_mPH(cAPU{WBfx|$VdU1!r2r6ra8xi}Gn9`O9ZcytYfF$I3IjWQ#< z0*@+!_1WEFTC?0I%Rj#mq&Pk?6@+ZKM*I$7ENk zC(mO<-P))099~-u7D5Uphe>S2YiM55fJUAtQ5aIbv|}f-LiK3wfETyLYAHCo+AzRW z4ZU$75=9`n#cfk^tj^-Dw9^N?xRJ)q0q#If76M+ixSd=^9Ce3Iu9il=xGSyn0kfp5 z3R>Gh8n#3|R3XxJ#L@zT`iT__3tmcAB_SloS@E{8NEP6^dIF zx+eC)7t0DBkB25D28BmUEZH^S=H$xq>thm>5oLvmxLvWV;4xX5lo;;PMy0)&k}ymg zfw!hYQqAvtG?67P9*;+4WkzDih;)Q%3Im1e&1IyD4hAAeB3f5dMjo7x7}DZ~RLnt+ z{9rB*Ue_pBb!?3UKl3J)h3d9?JXxKO7%)@ny14Iz(yA@wq%OumYWUm0Pgr63g#8;; zck{~;TNaCXs7iNZgS4o-u}`Q(V5EYwR=uhjcG9U?%=Wl}AmGw)C2O*A44oos?A$eO zjbnFsRoJ&?wd#NuIPAw97hzv~vE5R|mdIZUqS96*B}0kqO}UZ+U!?)xA$#2_;-(_p zs-#{hfx8NiR&IkHT5w3}g^~ezL{|cbdJYkWe{k%3mZjdqRMtmrMZMe)p{N`IR>QZZqAZ)k&!Oup(<1w8tE!tf4N4P{>t!Vm1{HL z%&a6X>4GJTS*Q|`P%k1T?J^CP!Q>NmZZy=~<{)>mZPp>xIc#`59DJ`8Pve-f*u4tA)(T{LaJLW{|}!9*!wZ zRAZLNixiWH@CyH{jILRzgXHtxR2KPvxl>n0aog?DK0IP&@~>UCqayLq;ct;jKBP?5 zWv#ihJZqwLGF?!%D z4bU0J9#S@=@L2O)IMuQX?f|-@yT}?9l1Jp*bJkcMOtJH458LHFJRATi#-zFY!+O5* zZ{oA6qOSazrt-QT2ul<}kt=I7@2|b-%158%DQkUB-S54J{hhzwFK6C9yg`6fb6H;`%!^tz= ztuJ6BEcV5QsPMFe=mW`F0K^mFd#{6sH9IJQAp_H%`wQ=3wSO1A5@CSmiM|y!`8b E0GdBmo&W#< diff --git a/app/cache/dev/profiler/81/5a/8f5a81 b/app/cache/dev/profiler/81/5a/8f5a81 deleted file mode 100644 index 7deb9f0..0000000 --- a/app/cache/dev/profiler/81/5a/8f5a81 +++ /dev/null @@ -1 +0,0 @@ -a:8:{s:5:"token";s:6:"8f5a81";s:6:"parent";N;s:8:"children";a:0:{}s:4:"data";a:15:{s:6:"config";C:62:"Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector":1819:{a:17:{s:8:"app_name";N;s:11:"app_version";N;s:5:"token";s:6:"8f5a81";s:15:"symfony_version";s:5:"2.7.5";s:13:"symfony_state";s:6:"stable";s:4:"name";s:3:"app";s:3:"env";s:3:"dev";s:5:"debug";b:1;s:11:"php_version";s:6:"5.5.26";s:14:"xdebug_enabled";b:0;s:14:"eaccel_enabled";b:0;s:11:"apc_enabled";b:0;s:14:"xcache_enabled";b:0;s:16:"wincache_enabled";b:0;s:20:"zend_opcache_enabled";b:0;s:7:"bundles";a:13:{s:15:"FrameworkBundle";s:87:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";s:14:"SecurityBundle";s:86:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";s:10:"TwigBundle";s:82:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";s:13:"MonologBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle";s:17:"SwiftmailerBundle";s:63:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle";s:13:"AsseticBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle";s:14:"DoctrineBundle";s:61:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle";s:26:"SensioFrameworkExtraBundle";s:66:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle";s:9:"AppBundle";s:43:"/var/www/html/portfolio-photo/src/AppBundle";s:11:"DebugBundle";s:83:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";s:17:"WebProfilerBundle";s:89:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";s:24:"SensioDistributionBundle";s:96:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle";s:21:"SensioGeneratorBundle";s:90:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle";}s:9:"sapi_name";s:10:"cli-server";}}s:7:"request";C:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector":2470:{a:18:{s:6:"format";s:4:"html";s:7:"content";s:0:"";s:12:"content_type";s:24:"text/html; charset=UTF-8";s:11:"status_text";s:2:"OK";s:11:"status_code";i:200;s:13:"request_query";a:0:{}s:15:"request_request";a:0:{}s:15:"request_headers";a:7:{s:4:"host";a:1:{i:0;s:14:"127.0.0.1:8000";}s:10:"user-agent";a:1:{i:0;s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";}s:6:"accept";a:1:{i:0;s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";}s:15:"accept-language";a:1:{i:0;s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";}s:15:"accept-encoding";a:1:{i:0;s:13:"gzip, deflate";}s:10:"connection";a:1:{i:0;s:10:"keep-alive";}s:14:"x-php-ob-level";a:1:{i:0;i:1;}}s:14:"request_server";a:20:{s:13:"DOCUMENT_ROOT";s:33:"/var/www/html/portfolio-photo/web";s:11:"REMOTE_ADDR";s:9:"127.0.0.1";s:11:"REMOTE_PORT";s:5:"53474";s:15:"SERVER_SOFTWARE";s:29:"PHP 5.5.26 Development Server";s:15:"SERVER_PROTOCOL";s:8:"HTTP/1.1";s:11:"SERVER_NAME";s:9:"127.0.0.1";s:11:"SERVER_PORT";s:4:"8000";s:11:"REQUEST_URI";s:1:"/";s:14:"REQUEST_METHOD";s:3:"GET";s:11:"SCRIPT_NAME";s:1:"/";s:15:"SCRIPT_FILENAME";s:45:"/var/www/html/portfolio-photo/web/app_dev.php";s:8:"PHP_SELF";s:1:"/";s:9:"HTTP_HOST";s:14:"127.0.0.1:8000";s:15:"HTTP_USER_AGENT";s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";s:11:"HTTP_ACCEPT";s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";s:20:"HTTP_ACCEPT_LANGUAGE";s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";s:20:"HTTP_ACCEPT_ENCODING";s:13:"gzip, deflate";s:15:"HTTP_CONNECTION";s:10:"keep-alive";s:18:"REQUEST_TIME_FLOAT";d:1444222041.859098;s:12:"REQUEST_TIME";i:1444222041;}s:15:"request_cookies";a:0:{}s:18:"request_attributes";a:3:{s:11:"_controller";s:51:"AppBundle\Controller\DefaultController::indexAction";s:6:"_route";s:8:"homepage";s:13:"_route_params";a:0:{}}s:16:"response_headers";a:4:{s:13:"cache-control";a:1:{i:0;s:8:"no-cache";}s:4:"date";a:1:{i:0;s:29:"Wed, 07 Oct 2015 12:47:22 GMT";}s:12:"content-type";a:1:{i:0;s:24:"text/html; charset=UTF-8";}s:13:"x-debug-token";a:1:{i:0;s:6:"8f5a81";}}s:16:"session_metadata";a:0:{}s:18:"session_attributes";a:0:{}s:7:"flashes";a:0:{}s:9:"path_info";s:1:"/";s:10:"controller";a:4:{s:5:"class";s:38:"AppBundle\Controller\DefaultController";s:6:"method";s:11:"indexAction";s:4:"file";s:76:"/var/www/html/portfolio-photo/src/AppBundle/Controller/DefaultController.php";s:4:"line";i:14;}s:6:"locale";s:2:"en";}}s:4:"ajax";C:62:"Symfony\Bundle\FrameworkBundle\DataCollector\AjaxDataCollector":6:{a:0:{}}s:9:"exception";C:65:"Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector":6:{a:0:{}}s:6:"events";C:61:"Symfony\Component\HttpKernel\DataCollector\EventDataCollector":19236:{a:2:{s:16:"called_listeners";a:28:{s:90:"kernel.request.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:85;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";}s:81:"kernel.request.Symfony\Component\HttpKernel\EventListener\DumpListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";s:6:"method";s:9:"configure";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DumpListener.php";s:4:"line";i:40;s:6:"pretty";s:66:"Symfony\Component\HttpKernel\EventListener\DumpListener::configure";}s:92:"kernel.request.Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:119:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SessionListener.php";s:4:"line";i:25;s:6:"pretty";s:77:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/FragmentListener.php";s:4:"line";i:56;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php";s:4:"line";i:116;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:71;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";}s:93:"kernel.request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:38;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";}s:72:"kernel.request.Symfony\Component\Security\Http\Firewall::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall.php";s:4:"line";i:54;s:6:"pretty";s:57:"Symfony\Component\Security\Http\Firewall::onKernelRequest";}s:90:"kernel.request.Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:93:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/EventListener/RequestListener.php";s:4:"line";i:23;s:6:"pretty";s:75:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";}s:102:"kernel.controller.Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RouterDataCollector.php";s:4:"line";i:66;s:6:"pretty";s:84:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";}s:101:"kernel.controller.Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php";s:4:"line";i:288;s:6:"pretty";s:83:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";}s:105:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:103:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/ControllerListener.php";s:4:"line";i:51;s:6:"pretty";s:87:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";}s:109:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:107:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/ParamConverterListener.php";s:4:"line";i:52;s:6:"pretty";s:91:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";}s:104:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:102:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/HttpCacheListener.php";s:4:"line";i:44;s:6:"pretty";s:86:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/SecurityListener.php";s:4:"line";i:48;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/TemplateListener.php";s:4:"line";i:50;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php";s:4:"line";i:37;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/RememberMe/ResponseListener.php";s:4:"line";i:28;s:6:"pretty";s:77:"Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";}s:100:"kernel.response.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:102:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/HttpCacheListener.php";s:4:"line";i:82;s:6:"pretty";s:84:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:97;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";}s:104:"kernel.response.Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:131:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php";s:4:"line";i:59;s:6:"pretty";s:88:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";}s:96:"kernel.response.Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SaveSessionListener.php";s:4:"line";i:47;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";}s:101:"kernel.response.Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/StreamedResponseListener.php";s:4:"line";i:32;s:6:"pretty";s:85:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:80;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";}s:106:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:43;s:6:"pretty";s:84:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php";s:4:"line";i:107;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";}s:85:"kernel.finish_request.Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall.php";s:4:"line";i:77;s:6:"pretty";s:63:"Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";}}s:20:"not_called_listeners";a:8:{s:82:"kernel.terminate.Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";a:7:{s:5:"event";s:16:"kernel.terminate";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\EventDispatcher\Debug\WrappedListener";s:6:"method";s:8:"__invoke";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/WrappedListener.php";s:4:"line";i:55;s:6:"pretty";s:65:"Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";}s:95:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:73;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";}s:96:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Component\HttpKernel\EventListener\ExceptionListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:121:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php";s:4:"line";i:40;s:6:"pretty";s:79:"Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";}s:91:"console.command.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:72:"console.command.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:9:"onCommand";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:121;s:6:"pretty";s:56:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";}s:97:"console.terminate.Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";s:6:"method";s:11:"onTerminate";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/EventListener/EmailSenderListener.php";s:4:"line";i:46;s:6:"pretty";s:79:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";}s:76:"console.terminate.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:11:"onTerminate";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:136;s:6:"pretty";s:58:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";}s:91:"kernel.view.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";a:7:{s:5:"event";s:11:"kernel.view";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:12:"onKernelView";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle/EventListener/TemplateListener.php";s:4:"line";i:90;s:6:"pretty";s:79:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";}}}}s:6:"logger";C:62:"Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector":9925:{a:5:{s:11:"error_count";i:0;s:17:"deprecation_count";i:0;s:12:"scream_count";i:4;s:10:"priorities";a:2:{i:100;a:2:{s:5:"count";i:32;s:4:"name";s:5:"DEBUG";}i:200;a:2:{s:5:"count";i:2;s:4:"name";s:4:"INFO";}}s:4:"logs";a:34:{i:0;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:25:"Matched route "homepage".";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:2:{s:16:"route_parameters";a:2:{s:11:"_controller";s:51:"AppBundle\Controller\DefaultController::indexAction";s:6:"_route";s:8:"homepage";}s:11:"request_uri";s:22:"http://127.0.0.1:8000/";}}i:1;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:51:"Populated the TokenStorage with an anonymous Token.";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:0:{}}i:2;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:3;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:4;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:113:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:5;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:124:"Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:6;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:7;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:8;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:9;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:125:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:10;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:104:"Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:11;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:12;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:134:"Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:13;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:133:"Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:14;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:137:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:15;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:141:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:16;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:136:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:17;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:18;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:19;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:150:"filemtime(): stat failed for /var/www/html/portfolio-photo/app/cache/dev/twig/2/8/28200a2d4b76278f8a74a5c9bc4f9011c771747635b8cb6ad665e32a8edaa0aa.php";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:5:{s:4:"type";i:2;s:4:"file";s:76:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Cache/Filesystem.php";s:4:"line";i:90;s:5:"level";i:28928;s:6:"scream";b:1;}}i:20;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:150:"filemtime(): stat failed for /var/www/html/portfolio-photo/app/cache/dev/twig/9/f/9fc56123c8775ccf30f41f988abfc30fb4c22110ec7d77f25a5682a36add9591.php";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:5:{s:4:"type";i:2;s:4:"file";s:76:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Cache/Filesystem.php";s:4:"line";i:90;s:5:"level";i:28928;s:6:"scream";b:1;}}i:21;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:150:"filemtime(): stat failed for /var/www/html/portfolio-photo/app/cache/dev/twig/d/8/d8a5f99e38b836e16f4fcdf74e16bb4e7ec2cc19a7f6938427b31339efc622f9.php";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:5:{s:4:"type";i:2;s:4:"file";s:76:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Cache/Filesystem.php";s:4:"line";i:90;s:5:"level";i:28928;s:6:"scream";b:1;}}i:22;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:150:"filemtime(): stat failed for /var/www/html/portfolio-photo/app/cache/dev/twig/b/6/b62421e45ef303451c3b24dff861f2b03fa5a741a390349ef3397d5bed8e9b4e.php";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:5:{s:4:"type";i:2;s:4:"file";s:76:"/var/www/html/portfolio-photo/vendor/twig/twig/lib/Twig/Cache/Filesystem.php";s:4:"line";i:90;s:5:"level";i:28928;s:6:"scream";b:1;}}i:23;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:24;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:25;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:132:"Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:26;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:27;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:136:"Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:28;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:128:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:29;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:133:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:30;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:31;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:138:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:32;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:33;a:5:{s:9:"timestamp";i:1444222042;s:7:"message";s:117:"Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}}}}s:4:"time";C:60:"Symfony\Component\HttpKernel\DataCollector\TimeDataCollector":25055:{a:2:{s:10:"start_time";d:1444222041867.9832;s:6:"events";a:37:{s:11:"__section__";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:134;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:137;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:137;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:16252928;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:14:"kernel.request";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:89;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7077888;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:3:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7077888;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:104;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:119;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15466496;}i:2;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:137;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:137;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:16252928;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7077888;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:1;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7340032;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:1;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:1;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:7340032;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:1;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:87;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:87;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:87;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:87;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:87;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:40:"Symfony\Component\Security\Http\Firewall";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:87;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:89;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:31:"security.authentication.success";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:89;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:89;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:89;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:89;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:23:"controller.get_callable";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:91;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:91;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:17:"kernel.controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:104;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:104;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:92;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:10:"controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:92;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:103;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:24:"controller.get_arguments";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:94;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:94;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:23:"default/index.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:102;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:103;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:14:"base.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:102;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:103;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:15:"kernel.response";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:103;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:134;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:56:"Symfony\Component\Security\Http\Firewall\ContextListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:103;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:103;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:103;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:103;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:103;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:104;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:13107200;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:119;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:133;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:127;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:133;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:39:"@WebProfiler/Profiler/base_js.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:133;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:133;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:133;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:133;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:133;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:134;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:16:"kernel.terminate";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:137;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:137;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:16252928;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:137;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:137;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:15990784;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222042049.2;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}}}}s:6:"memory";C:62:"Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector":62:{a:2:{s:6:"memory";i:16777216;s:12:"memory_limit";i:134217728;}}s:6:"router";C:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector":51:{a:3:{s:8:"redirect";b:0;s:3:"url";N;s:5:"route";N;}}s:4:"form";C:64:"Symfony\Component\Form\Extension\DataCollector\FormDataCollector":71:{a:3:{s:5:"forms";a:0:{}s:13:"forms_by_hash";a:0:{}s:9:"nb_errors";i:0;}}s:4:"twig";C:51:"Symfony\Bridge\Twig\DataCollector\TwigDataCollector":2690:{a:1:{s:7:"profile";s:2660:"C:21:"Twig_Profiler_Profile":2624:{a:6:{i:0;s:4:"main";i:1;s:4:"main";i:2;s:4:"ROOT";i:3;a:3:{s:2:"wt";d:1444222042.046443;s:2:"mu";i:6535704;s:3:"pmu";i:10162192;}i:4;a:3:{s:2:"wt";d:1444222042.1830211;s:2:"mu";i:15856984;s:3:"pmu";i:16734488;}i:5;a:2:{i:0;C:21:"Twig_Profiler_Profile":1681:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:23:"default/index.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222042.152055;s:2:"mu";i:12979576;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.1522789;s:2:"mu";i:12999928;s:3:"pmu";i:16734488;}i:5;a:1:{i:0;C:21:"Twig_Profiler_Profile":1375:{a:6:{i:0;s:14:"base.html.twig";i:1;s:14:"base.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222042.1521039;s:2:"mu";i:12983744;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.152261;s:2:"mu";i:13000064;s:3:"pmu";i:16734488;}i:5;a:4:{i:0;C:21:"Twig_Profiler_Profile":235:{a:6:{i:0;s:14:"base.html.twig";i:1;s:5:"title";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222042.1521249;s:2:"mu";i:12986488;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.152133;s:2:"mu";i:12987808;s:3:"pmu";i:16734488;}i:5;a:0:{}}}i:1;C:21:"Twig_Profiler_Profile":252:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:11:"stylesheets";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222042.1521461;s:2:"mu";i:12988912;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.1521521;s:2:"mu";i:12989736;s:3:"pmu";i:16734488;}i:5;a:0:{}}}i:2;C:21:"Twig_Profiler_Profile":243:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:4:"body";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222042.152211;s:2:"mu";i:12996776;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.1522419;s:2:"mu";i:12997792;s:3:"pmu";i:16734488;}i:5;a:0:{}}}i:3;C:21:"Twig_Profiler_Profile":241:{a:6:{i:0;s:14:"base.html.twig";i:1;s:11:"javascripts";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222042.152251;s:2:"mu";i:12998888;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.152256;s:2:"mu";i:12999712;s:3:"pmu";i:16734488;}i:5;a:0:{}}}}}}}}}i:1;C:21:"Twig_Profiler_Profile":643:{a:6:{i:0;s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";i:1;s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222042.1764729;s:2:"mu";i:15614448;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.1830151;s:2:"mu";i:15856424;s:3:"pmu";i:16734488;}i:5;a:1:{i:0;C:21:"Twig_Profiler_Profile":299:{a:6:{i:0;s:39:"@WebProfiler/Profiler/base_js.html.twig";i:1;s:39:"@WebProfiler/Profiler/base_js.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222042.1824801;s:2:"mu";i:15838248;s:3:"pmu";i:16734488;}i:4;a:3:{s:2:"wt";d:1444222042.1827991;s:2:"mu";i:15855744;s:3:"pmu";i:16734488;}i:5;a:0:{}}}}}}}}}";}}s:8:"security";C:65:"Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector":248:{a:7:{s:7:"enabled";b:1;s:13:"authenticated";b:1;s:11:"token_class";s:67:"Symfony\Component\Security\Core\Authentication\Token\AnonymousToken";s:4:"user";s:5:"anon.";s:5:"roles";a:0:{}s:15:"inherited_roles";a:0:{}s:23:"supports_role_hierarchy";b:1;}}s:11:"swiftmailer";C:67:"Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector":77:{a:3:{s:6:"mailer";a:0:{}s:12:"messageCount";i:0;s:13:"defaultMailer";s:0:"";}}s:2:"db";C:66:"Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector":462:{a:6:{s:7:"queries";a:1:{s:7:"default";a:0:{}}s:11:"connections";a:1:{s:7:"default";s:32:"doctrine.dbal.default_connection";}s:8:"managers";a:1:{s:7:"default";s:35:"doctrine.orm.default_entity_manager";}s:8:"entities";a:1:{s:7:"default";a:0:{}}s:6:"errors";a:0:{}s:6:"caches";a:4:{s:7:"enabled";b:0;s:11:"log_enabled";b:0;s:6:"counts";a:3:{s:4:"puts";i:0;s:4:"hits";i:0;s:6:"misses";i:0;}s:7:"regions";a:3:{s:4:"puts";a:0:{}s:4:"hits";a:0:{}s:6:"misses";a:0:{}}}}}s:4:"dump";C:60:"Symfony\Component\HttpKernel\DataCollector\DumpDataCollector":6:{a:0:{}}}s:2:"ip";s:9:"127.0.0.1";s:6:"method";s:3:"GET";s:3:"url";s:22:"http://127.0.0.1:8000/";s:4:"time";i:1444222042;} \ No newline at end of file diff --git a/app/cache/dev/profiler/83/1c/101c83 b/app/cache/dev/profiler/83/1c/101c83 deleted file mode 100644 index 5784c70..0000000 --- a/app/cache/dev/profiler/83/1c/101c83 +++ /dev/null @@ -1 +0,0 @@ -a:8:{s:5:"token";s:6:"101c83";s:6:"parent";N;s:8:"children";a:0:{}s:4:"data";a:15:{s:6:"config";C:62:"Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector":1896:{a:17:{s:8:"app_name";N;s:11:"app_version";N;s:5:"token";s:6:"101c83";s:15:"symfony_version";s:5:"2.7.5";s:13:"symfony_state";s:6:"stable";s:4:"name";s:3:"app";s:3:"env";s:3:"dev";s:5:"debug";b:1;s:11:"php_version";s:6:"5.5.26";s:14:"xdebug_enabled";b:0;s:14:"eaccel_enabled";b:0;s:11:"apc_enabled";b:0;s:14:"xcache_enabled";b:0;s:16:"wincache_enabled";b:0;s:20:"zend_opcache_enabled";b:0;s:7:"bundles";a:14:{s:15:"FrameworkBundle";s:87:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";s:14:"SecurityBundle";s:86:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";s:10:"TwigBundle";s:82:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";s:13:"MonologBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/monolog-bundle";s:17:"SwiftmailerBundle";s:63:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle";s:13:"AsseticBundle";s:59:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle";s:14:"DoctrineBundle";s:61:"/var/www/html/portfolio-photo/vendor/doctrine/doctrine-bundle";s:26:"SensioFrameworkExtraBundle";s:66:"/var/www/html/portfolio-photo/vendor/sensio/framework-extra-bundle";s:9:"AppBundle";s:43:"/var/www/html/portfolio-photo/src/AppBundle";s:13:"XavSiteBundle";s:48:"/var/www/html/portfolio-photo/src/Xav/SiteBundle";s:11:"DebugBundle";s:83:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";s:17:"WebProfilerBundle";s:89:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";s:24:"SensioDistributionBundle";s:96:"/var/www/html/portfolio-photo/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle";s:21:"SensioGeneratorBundle";s:90:"/var/www/html/portfolio-photo/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle";}s:9:"sapi_name";s:10:"cli-server";}}s:7:"request";C:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector":2596:{a:18:{s:6:"format";s:4:"html";s:7:"content";s:0:"";s:12:"content_type";s:24:"text/html; charset=UTF-8";s:11:"status_text";s:2:"OK";s:11:"status_code";i:200;s:13:"request_query";a:0:{}s:15:"request_request";a:0:{}s:15:"request_headers";a:8:{s:4:"host";a:1:{i:0;s:14:"127.0.0.1:8000";}s:10:"user-agent";a:1:{i:0;s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";}s:6:"accept";a:1:{i:0;s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";}s:15:"accept-language";a:1:{i:0;s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";}s:15:"accept-encoding";a:1:{i:0;s:13:"gzip, deflate";}s:10:"connection";a:1:{i:0;s:10:"keep-alive";}s:13:"cache-control";a:1:{i:0;s:9:"max-age=0";}s:14:"x-php-ob-level";a:1:{i:0;i:1;}}s:14:"request_server";a:21:{s:13:"DOCUMENT_ROOT";s:33:"/var/www/html/portfolio-photo/web";s:11:"REMOTE_ADDR";s:9:"127.0.0.1";s:11:"REMOTE_PORT";s:5:"53508";s:15:"SERVER_SOFTWARE";s:29:"PHP 5.5.26 Development Server";s:15:"SERVER_PROTOCOL";s:8:"HTTP/1.1";s:11:"SERVER_NAME";s:9:"127.0.0.1";s:11:"SERVER_PORT";s:4:"8000";s:11:"REQUEST_URI";s:12:"/app_dev.php";s:14:"REQUEST_METHOD";s:3:"GET";s:11:"SCRIPT_NAME";s:12:"/app_dev.php";s:15:"SCRIPT_FILENAME";s:45:"/var/www/html/portfolio-photo/web/app_dev.php";s:8:"PHP_SELF";s:12:"/app_dev.php";s:9:"HTTP_HOST";s:14:"127.0.0.1:8000";s:15:"HTTP_USER_AGENT";s:76:"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0";s:11:"HTTP_ACCEPT";s:63:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";s:20:"HTTP_ACCEPT_LANGUAGE";s:35:"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3";s:20:"HTTP_ACCEPT_ENCODING";s:13:"gzip, deflate";s:15:"HTTP_CONNECTION";s:10:"keep-alive";s:18:"HTTP_CACHE_CONTROL";s:9:"max-age=0";s:18:"REQUEST_TIME_FLOAT";d:1444222365.6154759;s:12:"REQUEST_TIME";i:1444222365;}s:15:"request_cookies";a:0:{}s:18:"request_attributes";a:3:{s:11:"_controller";s:51:"AppBundle\Controller\DefaultController::indexAction";s:6:"_route";s:8:"homepage";s:13:"_route_params";a:0:{}}s:16:"response_headers";a:4:{s:13:"cache-control";a:1:{i:0;s:8:"no-cache";}s:4:"date";a:1:{i:0;s:29:"Wed, 07 Oct 2015 12:52:46 GMT";}s:12:"content-type";a:1:{i:0;s:24:"text/html; charset=UTF-8";}s:13:"x-debug-token";a:1:{i:0;s:6:"101c83";}}s:16:"session_metadata";a:0:{}s:18:"session_attributes";a:0:{}s:7:"flashes";a:0:{}s:9:"path_info";s:1:"/";s:10:"controller";a:4:{s:5:"class";s:38:"AppBundle\Controller\DefaultController";s:6:"method";s:11:"indexAction";s:4:"file";s:76:"/var/www/html/portfolio-photo/src/AppBundle/Controller/DefaultController.php";s:4:"line";i:14;}s:6:"locale";s:2:"en";}}s:4:"ajax";C:62:"Symfony\Bundle\FrameworkBundle\DataCollector\AjaxDataCollector":6:{a:0:{}}s:9:"exception";C:65:"Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector":6:{a:0:{}}s:6:"events";C:61:"Symfony\Component\HttpKernel\DataCollector\EventDataCollector":18566:{a:2:{s:16:"called_listeners";a:28:{s:90:"kernel.request.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:85;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest";}s:81:"kernel.request.Symfony\Component\HttpKernel\EventListener\DumpListener::configure";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";s:6:"method";s:9:"configure";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DumpListener.php";s:4:"line";i:40;s:6:"pretty";s:66:"Symfony\Component\HttpKernel\EventListener\DumpListener::configure";}s:92:"kernel.request.Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:16;s:6:"pretty";s:77:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest";}s:91:"kernel.request.Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/FragmentListener.php";s:4:"line";i:56;s:6:"pretty";s:76:"Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2029;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest";}s:89:"kernel.request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:71;s:6:"pretty";s:74:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest";}s:93:"kernel.request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:38;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest";}s:72:"kernel.request.Symfony\Component\Security\Http\Firewall::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2527;s:6:"pretty";s:57:"Symfony\Component\Security\Http\Firewall::onKernelRequest";}s:90:"kernel.request.Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";a:7:{s:5:"event";s:14:"kernel.request";s:4:"type";s:6:"Method";s:5:"class";s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";s:6:"method";s:15:"onKernelRequest";s:4:"file";s:93:"/var/www/html/portfolio-photo/vendor/symfony/assetic-bundle/EventListener/RequestListener.php";s:4:"line";i:23;s:6:"pretty";s:75:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest";}s:102:"kernel.controller.Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RouterDataCollector.php";s:4:"line";i:66;s:6:"pretty";s:84:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController";}s:101:"kernel.controller.Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";s:6:"method";s:18:"onKernelController";s:4:"file";s:124:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php";s:4:"line";i:288;s:6:"pretty";s:83:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController";}s:105:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7053;s:6:"pretty";s:87:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController";}s:109:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7126;s:6:"pretty";s:91:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController";}s:104:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7568;s:6:"pretty";s:86:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7692;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController";}s:103:"kernel.controller.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";a:7:{s:5:"event";s:17:"kernel.controller";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:18:"onKernelController";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7484;s:6:"pretty";s:85:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:1952;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Security/Http/RememberMe/ResponseListener.php";s:4:"line";i:28;s:6:"pretty";s:77:"Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse";}s:100:"kernel.response.Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7598;s:6:"pretty";s:84:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse";}s:93:"kernel.response.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:97;s:6:"pretty";s:77:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse";}s:104:"kernel.response.Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:131:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php";s:4:"line";i:59;s:6:"pretty";s:88:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse";}s:96:"kernel.response.Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:123:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SaveSessionListener.php";s:4:"line";i:47;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse";}s:101:"kernel.response.Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";a:7:{s:5:"event";s:15:"kernel.response";s:4:"type";s:6:"Method";s:5:"class";s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";s:6:"method";s:16:"onKernelResponse";s:4:"file";s:128:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/StreamedResponseListener.php";s:4:"line";i:32;s:6:"pretty";s:85:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:118:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php";s:4:"line";i:80;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest";}s:106:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:122:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php";s:4:"line";i:43;s:6:"pretty";s:84:"Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest";}s:102:"kernel.finish_request.Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2023;s:6:"pretty";s:80:"Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest";}s:85:"kernel.finish_request.Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";a:7:{s:5:"event";s:21:"kernel.finish_request";s:4:"type";s:6:"Method";s:5:"class";s:40:"Symfony\Component\Security\Http\Firewall";s:6:"method";s:21:"onKernelFinishRequest";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:2544;s:6:"pretty";s:63:"Symfony\Component\Security\Http\Firewall::onKernelFinishRequest";}}s:20:"not_called_listeners";a:8:{s:82:"kernel.terminate.Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";a:7:{s:5:"event";s:16:"kernel.terminate";s:4:"type";s:6:"Method";s:5:"class";s:55:"Symfony\Component\EventDispatcher\Debug\WrappedListener";s:6:"method";s:8:"__invoke";s:4:"file";s:116:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/WrappedListener.php";s:4:"line";i:55;s:6:"pretty";s:65:"Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke";}s:95:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:120:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php";s:4:"line";i:73;s:6:"pretty";s:78:"Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException";}s:96:"kernel.exception.Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";a:7:{s:5:"event";s:16:"kernel.exception";s:4:"type";s:6:"Method";s:5:"class";s:60:"Symfony\Component\HttpKernel\EventListener\ExceptionListener";s:6:"method";s:17:"onKernelException";s:4:"file";s:121:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php";s:4:"line";i:40;s:6:"pretty";s:79:"Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException";}s:91:"console.command.Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";s:6:"method";s:9:"configure";s:4:"file";s:125:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php";s:4:"line";i:63;s:6:"pretty";s:75:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure";}s:72:"console.command.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";a:7:{s:5:"event";s:15:"console.command";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:9:"onCommand";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:121;s:6:"pretty";s:56:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand";}s:97:"console.terminate.Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";s:6:"method";s:11:"onTerminate";s:4:"file";s:101:"/var/www/html/portfolio-photo/vendor/symfony/swiftmailer-bundle/EventListener/EmailSenderListener.php";s:4:"line";i:46;s:6:"pretty";s:79:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate";}s:76:"console.terminate.Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";a:7:{s:5:"event";s:17:"console.terminate";s:4:"type";s:6:"Method";s:5:"class";s:45:"Symfony\Bridge\Monolog\Handler\ConsoleHandler";s:6:"method";s:11:"onTerminate";s:4:"file";s:106:"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php";s:4:"line";i:136;s:6:"pretty";s:58:"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate";}s:91:"kernel.view.Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";a:7:{s:5:"event";s:11:"kernel.view";s:4:"type";s:6:"Method";s:5:"class";s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";s:6:"method";s:12:"onKernelView";s:4:"file";s:55:"/var/www/html/portfolio-photo/app/cache/dev/classes.php";s:4:"line";i:7509;s:6:"pretty";s:79:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView";}}}}s:6:"logger";C:62:"Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector":8141:{a:5:{s:11:"error_count";i:0;s:17:"deprecation_count";i:0;s:12:"scream_count";i:0;s:10:"priorities";a:2:{i:100;a:2:{s:5:"count";i:28;s:4:"name";s:5:"DEBUG";}i:200;a:2:{s:5:"count";i:2;s:4:"name";s:4:"INFO";}}s:4:"logs";a:30:{i:0;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:25:"Matched route "homepage".";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:2:{s:16:"route_parameters";a:2:{s:11:"_controller";s:51:"AppBundle\Controller\DefaultController::indexAction";s:6:"_route";s:8:"homepage";}s:11:"request_uri";s:34:"http://127.0.0.1:8000/app_dev.php/";}}i:1;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:51:"Populated the TokenStorage with an anonymous Token.";s:8:"priority";i:200;s:12:"priorityName";s:4:"INFO";s:7:"context";a:0:{}}i:2;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:3;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:4;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:113:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:5;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:124:"Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:6;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:123:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:7;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:8;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:121:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:9;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:125:"Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:10;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:104:"Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:11;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:122:"Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:12;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:134:"Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:13;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:133:"Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:14;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:137:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:15;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:141:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:16;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:136:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:17;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:18;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:135:"Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:19;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:20;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:21;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:132:"Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:22;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:125:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:23;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:136:"Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:24;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:128:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:25;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:133:"Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:26;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:27;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:138:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:28;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:134:"Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}i:29;a:5:{s:9:"timestamp";i:1444222366;s:7:"message";s:117:"Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest".";s:8:"priority";i:100;s:12:"priorityName";s:5:"DEBUG";s:7:"context";a:0:{}}}}}s:4:"time";C:60:"Symfony\Component\HttpKernel\DataCollector\TimeDataCollector":25134:{a:2:{s:10:"start_time";d:1444222365629.467;s:6:"events";a:37:{s:11:"__section__";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:76;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:78;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22806528;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:14:"kernel.request";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:53;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:18874368;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ProfilerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:3:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:18874368;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:61;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:63;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}i:2;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:76;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:78;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22806528;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:55:"Symfony\Component\HttpKernel\EventListener\DumpListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:0;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:18874368;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:0;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:2;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:19136512;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\FragmentListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:2;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:2;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:19136512;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:2;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:48;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:21757952;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:57:"Symfony\Component\HttpKernel\EventListener\LocaleListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:48;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:48;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:21757952;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:61:"Symfony\Component\HttpKernel\EventListener\TranslatorListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:48;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:48;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:21757952;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:40:"Symfony\Component\Security\Http\Firewall";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:48;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:53;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:31:"security.authentication.success";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:53;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:53;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:58:"Symfony\Bundle\AsseticBundle\EventListener\RequestListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:53;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:53;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:23:"controller.get_callable";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:55;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:55;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:17:"kernel.controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:55;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:55;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:63:"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:56;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:56;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:56;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:2:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:56;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}i:1;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:61;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:61;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:56;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:56;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:56;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:10:"controller";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:56;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:60;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:24:"controller.get_arguments";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:57;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:57;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22020096;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"default";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:23:"default/index.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:59;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:60;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:14:"base.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:59;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:60;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:15:"kernel.response";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:60;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:56:"Symfony\Component\Security\Http\Firewall\ContextListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:60;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:61;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:61;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:61;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:59:"Symfony\Component\Security\Http\RememberMe\ResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:61;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:61;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22282240;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:70:"Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:63;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:67;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:39:"@WebProfiler/Profiler/base_js.html.twig";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:68;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:68;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:8:"template";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:62:"Symfony\Component\HttpKernel\EventListener\SaveSessionListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:67:"Symfony\Component\HttpKernel\EventListener\StreamedResponseListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:69;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:69;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:16:"kernel.terminate";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:76;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:78;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22806528;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:7:"section";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}s:66:"Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener";O:42:"Symfony\Component\Stopwatch\StopwatchEvent":4:{s:51:"Symfony\Component\Stopwatch\StopwatchEventperiods";a:1:{i:0;O:43:"Symfony\Component\Stopwatch\StopwatchPeriod":3:{s:50:"Symfony\Component\Stopwatch\StopwatchPeriodstart";i:76;s:48:"Symfony\Component\Stopwatch\StopwatchPeriodend";i:76;s:51:"Symfony\Component\Stopwatch\StopwatchPeriodmemory";i:22544384;}}s:50:"Symfony\Component\Stopwatch\StopwatchEventorigin";d:1444222366115.3999;s:52:"Symfony\Component\Stopwatch\StopwatchEventcategory";s:14:"event_listener";s:51:"Symfony\Component\Stopwatch\StopwatchEventstarted";a:0:{}}}}}s:6:"memory";C:62:"Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector":62:{a:2:{s:6:"memory";i:22806528;s:12:"memory_limit";i:134217728;}}s:6:"router";C:64:"Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector":51:{a:3:{s:8:"redirect";b:0;s:3:"url";N;s:5:"route";N;}}s:4:"form";C:64:"Symfony\Component\Form\Extension\DataCollector\FormDataCollector":71:{a:3:{s:5:"forms";a:0:{}s:13:"forms_by_hash";a:0:{}s:9:"nb_errors";i:0;}}s:4:"twig";C:51:"Symfony\Bridge\Twig\DataCollector\TwigDataCollector":2691:{a:1:{s:7:"profile";s:2661:"C:21:"Twig_Profiler_Profile":2625:{a:6:{i:0;s:4:"main";i:1;s:4:"main";i:2;s:4:"ROOT";i:3;a:3:{s:2:"wt";d:1444222366.1101911;s:2:"mu";i:18082712;s:3:"pmu";i:18119416;}i:4;a:3:{s:2:"wt";d:1444222366.1844809;s:2:"mu";i:22167160;s:3:"pmu";i:22299024;}i:5;a:2:{i:0;C:21:"Twig_Profiler_Profile":1681:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:23:"default/index.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222366.174942;s:2:"mu";i:21764384;s:3:"pmu";i:21823800;}i:4;a:3:{s:2:"wt";d:1444222366.175462;s:2:"mu";i:21784768;s:3:"pmu";i:21832224;}i:5;a:1:{i:0;C:21:"Twig_Profiler_Profile":1376:{a:6:{i:0;s:14:"base.html.twig";i:1;s:14:"base.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222366.175113;s:2:"mu";i:21768552;s:3:"pmu";i:21823928;}i:4;a:3:{s:2:"wt";d:1444222366.175432;s:2:"mu";i:21784904;s:3:"pmu";i:21831720;}i:5;a:4:{i:0;C:21:"Twig_Profiler_Profile":236:{a:6:{i:0;s:14:"base.html.twig";i:1;s:5:"title";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222366.1751771;s:2:"mu";i:21771296;s:3:"pmu";i:21825520;}i:4;a:3:{s:2:"wt";d:1444222366.1751909;s:2:"mu";i:21772616;s:3:"pmu";i:21826032;}i:5;a:0:{}}}i:1;C:21:"Twig_Profiler_Profile":251:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:11:"stylesheets";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222366.1752141;s:2:"mu";i:21773720;s:3:"pmu";i:21826744;}i:4;a:3:{s:2:"wt";d:1444222366.175225;s:2:"mu";i:21774544;s:3:"pmu";i:21827016;}i:5;a:0:{}}}i:2;C:21:"Twig_Profiler_Profile":243:{a:6:{i:0;s:23:"default/index.html.twig";i:1;s:4:"body";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222366.1753371;s:2:"mu";i:21781616;s:3:"pmu";i:21829960;}i:4;a:3:{s:2:"wt";d:1444222366.175395;s:2:"mu";i:21782632;s:3:"pmu";i:21830552;}i:5;a:0:{}}}i:3;C:21:"Twig_Profiler_Profile":243:{a:6:{i:0;s:14:"base.html.twig";i:1;s:11:"javascripts";i:2;s:5:"block";i:3;a:3:{s:2:"wt";d:1444222366.1754129;s:2:"mu";i:21783728;s:3:"pmu";i:21831008;}i:4;a:3:{s:2:"wt";d:1444222366.1754229;s:2:"mu";i:21784552;s:3:"pmu";i:21831544;}i:5;a:0:{}}}}}}}}}i:1;C:21:"Twig_Profiler_Profile":642:{a:6:{i:0;s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";i:1;s:42:"@WebProfiler/Profiler/toolbar_js.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222366.1831541;s:2:"mu";i:22101992;s:3:"pmu";i:22175568;}i:4;a:3:{s:2:"wt";d:1444222366.1844721;s:2:"mu";i:22166600;s:3:"pmu";i:22299024;}i:5;a:1:{i:0;C:21:"Twig_Profiler_Profile":298:{a:6:{i:0;s:39:"@WebProfiler/Profiler/base_js.html.twig";i:1;s:39:"@WebProfiler/Profiler/base_js.html.twig";i:2;s:8:"template";i:3;a:3:{s:2:"wt";d:1444222366.183984;s:2:"mu";i:22148392;s:3:"pmu";i:22199552;}i:4;a:3:{s:2:"wt";d:1444222366.1842511;s:2:"mu";i:22165920;s:3:"pmu";i:22229520;}i:5;a:0:{}}}}}}}}}";}}s:8:"security";C:65:"Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector":248:{a:7:{s:7:"enabled";b:1;s:13:"authenticated";b:1;s:11:"token_class";s:67:"Symfony\Component\Security\Core\Authentication\Token\AnonymousToken";s:4:"user";s:5:"anon.";s:5:"roles";a:0:{}s:15:"inherited_roles";a:0:{}s:23:"supports_role_hierarchy";b:1;}}s:11:"swiftmailer";C:67:"Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector":77:{a:3:{s:6:"mailer";a:0:{}s:12:"messageCount";i:0;s:13:"defaultMailer";s:0:"";}}s:2:"db";C:66:"Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector":462:{a:6:{s:7:"queries";a:1:{s:7:"default";a:0:{}}s:11:"connections";a:1:{s:7:"default";s:32:"doctrine.dbal.default_connection";}s:8:"managers";a:1:{s:7:"default";s:35:"doctrine.orm.default_entity_manager";}s:8:"entities";a:1:{s:7:"default";a:0:{}}s:6:"errors";a:0:{}s:6:"caches";a:4:{s:7:"enabled";b:0;s:11:"log_enabled";b:0;s:6:"counts";a:3:{s:4:"puts";i:0;s:4:"hits";i:0;s:6:"misses";i:0;}s:7:"regions";a:3:{s:4:"puts";a:0:{}s:4:"hits";a:0:{}s:6:"misses";a:0:{}}}}}s:4:"dump";C:60:"Symfony\Component\HttpKernel\DataCollector\DumpDataCollector":6:{a:0:{}}}s:2:"ip";s:9:"127.0.0.1";s:6:"method";s:3:"GET";s:3:"url";s:34:"http://127.0.0.1:8000/app_dev.php/";s:4:"time";i:1444222366;} \ No newline at end of file diff --git a/app/cache/dev/profiler/98/fe/0ffe98 b/app/cache/dev/profiler/98/fe/0ffe98 deleted file mode 100644 index f62ec0aa9c26b58846191c8aaa2a65ef5024274d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96201 zcmeHQX>;4inVz4*(x)Ul5^*1NWosQ-_Dt>A@=Ee%Kd6cYlAy(yA{dae?6~sZ_jwz4 zcjF`|QI=*>6ADM8`@OGz+Z#EfADfXmI@$(b{MFH`&Bz)ZDf7ASI`JQCFZ5U2qgNkr z&lw#}Zx+iLt{lDcM(XItVx+|HD4J)PN3Z_985yIanYZ=W6DAFhA*aD=zW99f>U3mj zqod33xAS22{rWVxT?Z=+fBoBbyZ&!KT=~oEH+c6nST6nPHVE+uy;!(*G*TVa9sR%r zY#JW3^49C|%DeTWX{u^;<*OfV76GP8b1z+^iaVQVLgVxe_PlmtpI}Lwk*a5pY_{GO z-(jo5@5z$=fi*|p-;D4qrbAEQm%sWN|C;&i7d|%gCwBnFWTev2nCtpxo&PexWuBNP zn#Deik-xDw#{P=FHlsHQ=qm2`-gN3Og*$BhQ{gfVHT9-9zHkShykD%O_cUd6^e=xk z8wYFYeS35?xm(Sa{)Qo3CyWqC--f`)eGq>68@o$uaq#T$s}~OM@9&2<+uP-E9faF? zuv`Sk>ziO348P(-K{$-jk^O%-9mX^>jD{OZh9`hr`qR5`vHhO=DAv~3N5#=qKGkbhtOb9 z!gvNq3jKfH`5WkNXkCy)EJ2%S-HYf=PVH)%r7*S2j0V7Z9)!0Z#%DU81Umi1hoSAa z%xKt*Ff*pcAQj`Q(p-jTb^l{Pok-+hb;Y5LJ`5z1xiGF&YL7 z{}5~kZvzM~Hf;9DG?-!3#mG<$JV>%KUj7(B2)~nZ!sG!MQclUO6hg9_H@-K61wn5z zI|I|b2?(4y%ZGH1s@W$B{#8egqA1J+B81!l8^<27TYSR?+};QOS}d2|&^%EFfBHXF zeKmONL+^R727fG8ci#rz9BXVDuLj}Qk&dzdJb33%zXU@~Q5F189lTwH{yg|Lq?_z} z7?Ui4b@5Y#^c29q!YElTrXF$3@EalPKfc{Ai&t-#um1U0<;4Bzp#!4%2^6m$Okuf_V; z!OWj8nW;rHAOa6oE7*k0pv%92TVH&Cee5k4UokIw8c6vDi(-8oOpcfSS08klzOjJW zMf^bzC1jBBjW>d|^8@!Vi8tq`pWdH+xEf!apI;HJ>9|#4G^>L`4sL2H4FMN3Yo{f&dg*nELBy$AF zA`-`Ezi73&H4?|eIEZsBq4x#z~f3==uZ!Rgmfit?4Qn_Yc(A}3*su#!;pI*v z*#=&qIH4B>8$nqVD%-5t?aV_UQ~n0=pz#zu4_u^oz%BeGFl*vP#P9;K&F@yRd6>S6 z=g3E8e2?GNmI6$dArsC+*e^t(Ft9#_%lF9JT2U-NNGuOiWyF0~3Y@enW@gTpYXb5UY)+R5N27)4sFC18m~N5 zl`};AwtpbxMFFQ0l#o{(!8iY49ycb`fry*3&s>XxH9;Ca7_6dvP)dI}&LOpgVInyk z|B*l)35ZD9I+L_oy0x_dx->E z{v~cY(1?}OiHx=@(x;RGVv|8&5_T{tCNf_!F|&*=Vg)G?iSeC0cH>Jq9K}~Sg+g=! zBYHWeDA$-YFA)?jCaOgxZB?yX8U&!z1mTcd^pL@1`1cS>)1M`@Dp5=pDH_ZxArC_! z4=mpcLk|(c0(L7gwi^%BlaY-68J5YksGy`B2%D$TMubi3pkg|`5VloD*t&Fhj!>={ zp_EBGz?mZoDgDT`WT+e?mDy(CtTEi#uSmcbczcA-y+AmTJ=5jkZIWI9yvbQar7EJy5s2NGE`{k9Y-g_bAO|g_TS&=q)YZUItiKmjqdJo z^dyRvpM4{Pu!c=Ks}q_KEtpjvK!z3~h)-B%!}voHicDau6j7;`*gZHavw;Is@C7a}QfsdORok7A10ol{9=NX7aS zK^a`K2xa@i7YZDTf>*S+1-EcN_=-|9sZoF^7(~a?_mDy-j8jE>6s0On6BspYh;Yps zHQ*=>`~LfiauqCPE@e#;#>IF+#(0E^Jfqsu#8LLV?6b7>AQz0t9&X6W`=$#GwJ%SN zE=rRZ9eEuvjSnv1zBq8fjqBMg=(h{*NItHNjmt^*2LQUSY@3Fl3p zxP~l5^$#V?y3|jkRtD{85NVkbYn1g)OLvf|jX;13X_miD?+_kn+f|oYL!=}aZs*WE-C=)TJ)17naIYjH*f1}I=apy;p3-seu+#7B=bH{ zeP36afe|0q+@v;w)U?`5s5~ANP)P98U(iugOpayiYHeQ9;jAPnrGwOJ6KutwG96y( zRqTcIU((^Cg38OieC3Hy5+aG+7gaB9X%Namo@+Y1)U}caBe+!3OFF!4+c^W&gVp@> zm&q)3sUAnr^{4XHmvs23IxpBC5tVv~PdK&mk`CWv^06k*Cyl;HRgqXU1#_U9>`BCk z=0@|;U((^|6d;BBOFCQ*nS)G+m)Au~gWVi|P)tac?*ea0p2XEO9JS99rt(bYOFF!? zVG_fa%yK2NEv=T^-CcOehNo5K(hMr+#3C*x*&49VQi#$b$Bx;Smt;6)IZ+q^*Ge=% zDBdC6H`O8;URvVxL@-vCDC?~bIi0;j?W2sED( zN62HMXNt54B9~(-G)K9PeAs*^S#&lr6bspKR<8`_7sJyIR)02L#(Sb!!W6yzexQE> z=&We1pNJM8=O{vxy;!*>dU zG3cTrPdqOC?rfIq^GOQ-Q1Q8ZX1*$ zyip6FXrFt52uGtNX-SoYNiQN94M0r@pQj~)HfqTrUuWKRrVO0uRFTpH^^B5DzDOEc zZAEf}dai7XcgD=a0vv}D*h*@;EGiHwP>2KgB^1&XG;$;|qJcybu$B@{x~yCcIM>=b z?rcz4tNe4l(~LAin8ClnM7xp59hm9PGjAkISBs9Ys z!Cvzun(H_m>9eHG0jo@ok3y27)T;d%M$QyV1^$77hq6Dc7?VQy0+Q&(h?0 zV5mp&YY(XZ=%JA`^a=X>qH)f{qTePPtSzm|C;aFnplX7;aQjf~agw0m57#9r>muiv3vn}rcF!!r3QfgZ}H)`6rDR^lZ|y_V_;iWmm46W=kLbHQ`$&y-VLQ($VF zOu5?jZV7-JK^z8LGrT53k9mC<`qsal_~CoM(N`VRnDd1A8ssee)r9k!# zF4V$*LxwRX1v0-bQNXF%j{`fxkw)C7aGy0RyuzOPi6`;x6RFp?1z_irYP-#~6S?T{ zyLVO^(Y%KOj5(4ifw6>gOxl}Wpd2UHyI?mkl@JjfUlsd^0u42=%r3pJ{$+I7Lc$`l z5A|zh)E?(p6o8UBcA}a6r5+0N9ZKdap%p`rGL%1TVS`FOBSRe%G+ElA6On8~AKmw7 zi7a_QN@-`7UzSX?8@YgWcNQ@z3o>&w((jyjDVwx}W^}=CaVQwk+;1uSRw?0RNzVCV zwbmm=Sxu6lhQcXL3$eAeR{}kj* zai*PVroWJwrf4F@+nFQ9HC17obe2@AO9VwR(n4og-lP7ibo7151bOAYd}4=yN|Uwt zDtICCO~3Lbl){!G85!pMMK~Hfk-MNHWKcwOz;5|$i|Fe1A7-BB|^nKA+PxNkN^e7Ev#33GY`bA1R$QaV$Ku&_jBBISi0Fa|kcLkw^jN~z*+;bQjLzkVOAf@Sde zIz~QKHxd!Wf06_Oeu$jcnD{}B<|4y)Zgxd{E09V%<2#zxFb2^uhRLu9A_;O; zjW((lQ~_=AXtmk`%3Bf8iZw~vd&4LVY#}hV9&OVetPJ(ztC~M4{05M8- zM-p*1;95ZrO?f*9L79Nx1@pV}cO8-eg2!WV*2ESw$hO3oId7nmKqD5#|AXnnro$o=T_81n3Y$_8^`{pL*RY+=w9%Lm+v)J1sF#c%hCw)< z;;8TRh*|QmXFe!&%1)EbZc;FtPRHF$DIb+xCy-E|iFLRL!o_wGo&C=GYp7^G9B*jwE2%2Bg?#Kr?OZ!4?VgZo9zI z)m!g&&05~01v@$tC>GTiVx_s$&s7%zjZdqoclY^bJNWq9$3f~_4Jsj@K6WkLz&aW< zJyd<*Z3orDsr1CJ0qv9+(4I~LD1=Ik4R%H*fi%Kha`i(7`52508c+^f{~Jib8?il= zfS#X3ni$(*;B$5$@t<~q$e#&oQICz*NFoXZm>2VfKO6Y8*>sRdzc@K|G}s0JM|5cJ zK*BVQT*cfb&=UzriLy&U8WS@Q(zyRI?Pq_6%cc%-&v4n)y6zb+o7z)8!(~&4w`aI) zYFYLSmrdQep5d~o<<&D>wo10_b6hvIJ!-vf9maHtokmt>+*?6zs>Lynx7au9-v{BB z`0s)@6ZfPqT+7_3)9e#HTW{>}v-Z%y7Nf4vXyENN?n}@&Fgh7^I{dEIz-a4YXB3cS zCXygQcJHWffOInV3`A4*4iNdS?gwF+PR5{)@WNc)#f{*Mz_hV@wKG? zh)dBPFyImqrzOP^HOJNBjs#IW^e8?{6Jf1R_Hq9RREM*nI#X2D(3GjA`-W-FG~0Eo zspe=tkY@sYzBPB}bIbGXx#GIcM4hRsV)|3vQYZL30mZXIpw`LI?;n9W5U9^4Cc@R4 z>6(^qnucQnJ*s9Kmg>x>y5hK=J=ZngolK3HZD@0EZmFJ$1N1CYbsYP7BCwOk(mw*t zp))ic&#|?+Z5XDa8lK_$nh9)q>O^s7_S7W)(~*;yn2u)5{JCS}hGy8>)KdJ}?3p64 zQ;fWS1kQ)naBk@n)wEp0f{wF&W2$L$-RO6nlMwX{OS3H9(0os~X7hia5;8*B1B5!lI*?H_^aa6VM$o(sGwp08S}rd!%nw{2x^sGe=nkGZY` zW6nhJ4SQXnr=8I~~ zeb;hl>O|FH$v|9cwh7s)YmSM&zm8^U6W4IfXUc({q6GUupg#2VnPE;$%TQ<9M6o?v zGv?YHtYs?GsWqESReNGtQ$=y-z?Wug@H!?s6yaR==eqk$5!flNp_PYulFj3_1rDY4 zzYVsK_Z;hjliVSB&<7BbP*#^NL45 zAWFHSe2dlIfY8Z7t%!)%h=w?UCbU}NHguG+jLCpwK(HO?2Yx{@_s3)Z+n&qLT|!k#{ckMc`#;^WF8$x-#@l8lCKUy_`k*f=2UR z1ARlJlY#sI^wDfDe&5jOWNlKhcZuj|NgqXXtFBc*-;3{NWtJ~Kt9q7Ks5DR@>ZlgG}a=&b07sK@xUMpO|&TU6U%kLk_L8urH^_}5%9DQMigHn@i&4%rq7*?`R zoo$ef4oPJ#o~S#*c)ana+eNS%kB?rRj|^CK;^Z#jt=xOt>CJWei^WHe(Dm&HN+B`M zFU{ZjW$j~g_$->p=*MED(1+n~H5%e0d--UjvoB-q&AuGH_6q|Pm26T8CmrD4>TR?= zp?7uGmA?6^<8R~iiy&lMuvHWFLWXO-V*8#Se(}*3@UF`@6gtawr{%k@V&h;R;ta}B zH$ws=xnIy#;PYa2^eRv0re>b7Ie~iHjD@BK{%3|0wmTaIci!C+8{XTjE}9jiE1z{Z zVjH`$8yp40aU+goEBYhw7dGxcJ^uP>2`m=1{Sa6`4bUE5HW~<&L`G9JW0Zed3sW^FOsCzD-UmiP@A)^1_-^ogZW`Aw(a2H zXc%AGBdlC^$yDjOb{$sZPODc%DgH47(Nv1g4!{L{d30H_N67{$C^BRpyJUi10?Ody3Dc!S@db?6%Z?4q=nSA^5E_yiW_(e`O zj6+3q{j+K0eNkq+^LC#V5t6#?ZWjKG%6eZ!h*OHPO1ik!#dC5%b}bkn2WBUMmlUfW zkSgvw`qDBDl2c@k;iQ1&faq~wvQJKzjW>@zGnZwz!m1a#EZOD}?V2c5 zw_Dik+4}58p~2J(dETxY`zxZ|C6|)GQQR?Mo16fqvkgxvgI~>l!J8=)(*nhsfU(C0+bc9?OU*QT8=^jEtGe3Nm zQSn{La>qS8Sxb?hJ}S-{>LC7@^iw$N(595SP$ zTMLqCDn1i^6kFzR7ibiMz0)`^NVRR8Y(RVa@n#s@K`ygKKiFWO?Bgie?pBzC>=5H4 z%G_aItlJHIz|fy9LNx550|tp=&^6~S#2JJiD90Cnoc@Y?4&kiFTYf58ce%H?dwuq8 z%MJ=yT^A=qHw#yeMs_w8e2d0rJ$$I)34nvCuuJ2~_wkLlxj90|r|1?u&DCV=hhY%n z1=?vJPcMpWoU-g>3aM~0`|MxSS&ZC_=n^+0%}{Kd1?i12GuFZd{Z#4TOLCEM&j1Ea zfx*!cy*o}KEXj`}dPcG7ee^?$djbK)9`%=@ZSlzPXMe_LOkSLyU$G`YSRTU)h~ggj z$oHc;F*Q}uS=%KdnLB#k(llF9DZU0kt&?k}YH4T-u^3U`$~gFweHMGyeF1h0r@M`@+`DD6c%p5HB(`QTIxtS&DS zSPQ`o+Lm4c3)59Bg}|7BLd6x$iP<3rt*WXx4vJcC)WKH4(O*T-YKDVD__*;n(8fD4 zszIySumXSNsEfKQ=RiAJdfy=~L`XJyt_$Ey@*@j?GjOz0k%rm;PNSqmHXZu za+0V7nF~>-nnfIdC0*C$aKN!-BUz>z4rnn?V#u-OWSK-wh;ohU3ER9w^KPRYEJepz zavVr49CIuPIoB~Qg(=E9kXkOWd|t@8IJ~u5$i)qXDuo>SG8PF?hZiRW&NlR>ejynY z>DyK>v<9UL1B0_UR0rk~PfR$EST&V;MT=wNG@Hu8bD-2zoSe;3yQ4cMF?npmz^-hd zFkC#9qfI&-sT`CdUAB3?H6S(3h2>XVIF8|t9LAg=qcgZ+chp)emZ2La&J`~}5_TlE zBjZ|bKnG`>!gom^*;JLdFdGjQmgrn$s5~rjW~*SWWlOK*Z@?1g_41%J?1rGMQ!?%W zlOU;B^++lf%1^a($H1TPDX$Q3YS+CO<`%_Wwf6zN=qF0Echw9ZK*2ji@GrB~CXV?xvObZH|5#>$PpAas0%*W%fLdAhXgV0pk=9F8#DHl8J|D9V~QV6vrG!xET5JLw{ey9WB8m*OT5 zO6LiK(sd94=d$?L0OE+MsW1WSyyA~g%%{hD3utXBZ)j9F2!5eKzmykA< z&bW5K)}^f>ipHBnI8@ycqW?{KT+ml7jS+D1Jg#_ zNiv`X-sA=ZH^8^#LvFPalV#S^By^i_B(1W|^Mw31A$2Sr*;Txh)8t5HTYO%}$yQ!X zmX_sMoPnun$Q$xjk)b0wA_Om=aFoclEZ4FGs)Xkv5>c}BYEY6b$w$;tc7Tv?k;)Ms zHDM^l5%t6yf5K5Bq*7JUB+@mtV(E3D)GWci)OEy48o{zQN_4p1IA96enqzPsT0)@8 zl#1#==^Da-Cem`v$npsXi73O5e>hm0nvi~UGLEc)rL73wIC>%>ms1jjW8zVYgXB;bcEL$KV8z}}} zwxvt2q)G=yDLfpWDp8vu3|J^fOJMnggG5+57B4K_6@x^Xdr|{S%~H7n0}Tak4MABS zBsyFUcXUmNYFNnq2x=lFqH0JQP}W?*kfvFhP_V#Nza&&yA0j$n7B}GB2wt2--x5 z97l6qKCYoFx+xS<=Dx9N&5#X^AoCKYDF%mUL57+f}8Qy z|0XHYZ~s<%$hsyUE5p%!Vxp!YU{N4!@p*E?wVfIw1+Z#M_6^hKs#z;bFgGV#fOLyp zCRB<~sIHD-7N2hoN7q0YlcOiws4}uE3Di|o1nZ0A85Tku)&5VzQdStG`E*Yiju?dtP@xlsfn0Me%9SQF;1wbKunxsk>d z7Vbb!mM*-GBpo3mj=DofsHMqhJkQ*R!)0w$+Vd$1xDW`ubrq7Txbx9OmbiSpJRoZ`5{C>( zhpVPAP^jKrMyeW03xR~Z9e`+ELmAmRA8|;`4XG%s9Qnb{M!BkEYa|a!RJS#w$@+Z6 z0TZRJ^ZQOHt-6Dp)cH6_1AiOvi7G6guz#bXR9B!OY*{R)p*r1-4br^s#y+76fsqNy zM)j&@)JdmdF<+IB`!=jrJzxfh{U}fo_QjXm zEp=px{3RzUZM4TIC-aOd8jdQ? zyEv$>R<^E%uqEpNHcU4g;x3v+(Oi@2c*MO}lFO0c}Zjp_CwN z!$1ej*^VuUNE@v!x|@@(&PPLRO_$PYr8}4vvFv zK;;ykhvO3t0%;1Xj?O!Fj)pckU`~0mr522W2k+o)sAloq+91&3GB%3Lc$Mv#N_Po~ zs&yfnhR8*QpvV(sZ4Bse1Lf#g!xu{w`cC%-o1vaMp?oGA*Z|I!Nl4kWO?_h0!eK@RVaf*kmkN zk}fjRo$Vj=4UhbdT=$eH($b7+C+k?%b z^1t?PkxFh;rs^WGWpO=8OeA#C)3>7sgs$8Q7qz6W+*N4~f;5=Awww|Xy8=*Koz@i> zRJJ+bD{7D25}Z-&AtN&ik9E(5Q!P8^4xl@_i>y&8dU(1$VvXgoij6d>V#FVQullBZhM1M ziWYP*2fIO*j*8~<+u)188c&zr2JP>uQ$IQe-)-oSfDQUPAF=b?sCWO;&-c^Ev=^%z zAItD(WA3Jg&u#A3>mb~2*uC-1!VkT0dV?j?jHtmreR`9f+QDFvJKQK+VnY-=^B_7FBy0E|9hAV{I}Pqu?4Se&3`~3G&%L|l_B}gEB!vLY z7lbsMuvwyX_)Rd~hKrSdo!}_`JNeVwdZ)p1iK7sL@H%;zn{Y(zn-jb*wA=zySQZy Q>Cv7JHNT{kUj6(30cDQ~OaK4? diff --git a/app/cache/dev/profiler/index.csv b/app/cache/dev/profiler/index.csv deleted file mode 100644 index 9361821..0000000 --- a/app/cache/dev/profiler/index.csv +++ /dev/null @@ -1,6 +0,0 @@ -8f5a81,127.0.0.1,GET,http://127.0.0.1:8000/,1444222042,,200 -8c1b34,127.0.0.1,GET,http://127.0.0.1:8000/app_dev.php/,1444222060,,200 -002a65,127.0.0.1,GET,http://127.0.0.1:8000/app_ddev.php,1444222064,0ffe98,200 -0ffe98,127.0.0.1,GET,http://127.0.0.1:8000/app_ddev.php,1444222064,,404 -101c83,127.0.0.1,GET,http://127.0.0.1:8000/app_dev.php/,1444222366,,200 -7f6a10,127.0.0.1,GET,http://127.0.0.1:8000/app_dev.php/hello/xavier,1444222601,,200 diff --git a/app/cache/dev/twig/0/1/010e37370258230cbc960471274e46266342ea36dfb8c2fd0a36bf7cee1afa6b.php b/app/cache/dev/twig/0/1/010e37370258230cbc960471274e46266342ea36dfb8c2fd0a36bf7cee1afa6b.php deleted file mode 100644 index d7e973b..0000000 --- a/app/cache/dev/twig/0/1/010e37370258230cbc960471274e46266342ea36dfb8c2fd0a36bf7cee1afa6b.php +++ /dev/null @@ -1,78 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_d6521d25eba3d008194403367d935f178f3b93f2d1bfa55b0a9dbcc542e1b3c3 = $this->env->getExtension("native_profiler"); - $__internal_d6521d25eba3d008194403367d935f178f3b93f2d1bfa55b0a9dbcc542e1b3c3->enter($__internal_d6521d25eba3d008194403367d935f178f3b93f2d1bfa55b0a9dbcc542e1b3c3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:logs.html.twig")); - - // line 1 - echo "
    - "; - // line 2 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable((isset($context["logs"]) ? $context["logs"] : $this->getContext($context, "logs"))); - foreach ($context['_seq'] as $context["_key"] => $context["log"]) { - // line 3 - echo " getAttribute($context["log"], "priority", array()) >= 400)) { - echo " class=\"error\""; - } elseif (($this->getAttribute($context["log"], "priority", array()) >= 300)) { - echo " class=\"warning\""; - } - echo "> - "; - // line 4 - echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "priorityName", array()), "html", null, true); - echo " - "; - echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "message", array()), "html", null, true); - echo " - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 7 - echo "
-"; - - $__internal_d6521d25eba3d008194403367d935f178f3b93f2d1bfa55b0a9dbcc542e1b3c3->leave($__internal_d6521d25eba3d008194403367d935f178f3b93f2d1bfa55b0a9dbcc542e1b3c3_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:logs.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 49 => 7, 38 => 4, 29 => 3, 25 => 2, 22 => 1,); - } -} -/*
    */ -/* {% for log in logs %}*/ -/* = 400 %} class="error"{% elseif log.priority >= 300 %} class="warning"{% endif %}>*/ -/* {{ log.priorityName }} - {{ log.message }}*/ -/* */ -/* {% endfor %}*/ -/*
*/ -/* */ diff --git a/app/cache/dev/twig/1/d/1d011420c63e456d27986c282e72353c6e6f9ff6ae7f0998b1d1105ec361b998.php b/app/cache/dev/twig/1/d/1d011420c63e456d27986c282e72353c6e6f9ff6ae7f0998b1d1105ec361b998.php deleted file mode 100644 index 6f3afb4..0000000 --- a/app/cache/dev/twig/1/d/1d011420c63e456d27986c282e72353c6e6f9ff6ae7f0998b1d1105ec361b998.php +++ /dev/null @@ -1,185 +0,0 @@ -parent = false; - - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'head' => array($this, 'block_head'), - 'body' => array($this, 'block_body'), - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_79eb8d8832915e1f5041e613a039a7483dcba9184cda313b60f66abb02b19c81 = $this->env->getExtension("native_profiler"); - $__internal_79eb8d8832915e1f5041e613a039a7483dcba9184cda313b60f66abb02b19c81->enter($__internal_79eb8d8832915e1f5041e613a039a7483dcba9184cda313b60f66abb02b19c81_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle::layout.html.twig")); - - // line 1 - echo " - - - env, $this->env->getCharset(), "html", null, true); - echo "\" /> - - "; - // line 6 - $this->displayBlock('title', $context, $blocks); - echo " - env, $this->env->getExtension('request')->generateAbsoluteUrl($this->env->getExtension('asset')->getAssetUrl("bundles/framework/css/structure.css")), "html", null, true); - echo "\" rel=\"stylesheet\" /> - env, $this->env->getExtension('request')->generateAbsoluteUrl($this->env->getExtension('asset')->getAssetUrl("bundles/framework/css/body.css")), "html", null, true); - echo "\" rel=\"stylesheet\" /> - "; - // line 9 - $this->displayBlock('head', $context, $blocks); - // line 10 - echo " - -
-
-
- \"Symfony\" -
- -
-
-
- - - - - -
-
-
-
- -
- "; - // line 40 - $this->displayBlock('body', $context, $blocks); - // line 41 - echo "
-
- - -"; - - $__internal_79eb8d8832915e1f5041e613a039a7483dcba9184cda313b60f66abb02b19c81->leave($__internal_79eb8d8832915e1f5041e613a039a7483dcba9184cda313b60f66abb02b19c81_prof); - - } - - // line 6 - public function block_title($context, array $blocks = array()) - { - $__internal_c6331c4ba55b6f1045ff86ab1e53c93faf90084b1c6bb814b6b56605271357a9 = $this->env->getExtension("native_profiler"); - $__internal_c6331c4ba55b6f1045ff86ab1e53c93faf90084b1c6bb814b6b56605271357a9->enter($__internal_c6331c4ba55b6f1045ff86ab1e53c93faf90084b1c6bb814b6b56605271357a9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); - - - $__internal_c6331c4ba55b6f1045ff86ab1e53c93faf90084b1c6bb814b6b56605271357a9->leave($__internal_c6331c4ba55b6f1045ff86ab1e53c93faf90084b1c6bb814b6b56605271357a9_prof); - - } - - // line 9 - public function block_head($context, array $blocks = array()) - { - $__internal_103b42045e9c9eef2a0ac5ccfd8cf51543a20fd3363a9499361a538cf903d219 = $this->env->getExtension("native_profiler"); - $__internal_103b42045e9c9eef2a0ac5ccfd8cf51543a20fd3363a9499361a538cf903d219->enter($__internal_103b42045e9c9eef2a0ac5ccfd8cf51543a20fd3363a9499361a538cf903d219_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); - - - $__internal_103b42045e9c9eef2a0ac5ccfd8cf51543a20fd3363a9499361a538cf903d219->leave($__internal_103b42045e9c9eef2a0ac5ccfd8cf51543a20fd3363a9499361a538cf903d219_prof); - - } - - // line 40 - public function block_body($context, array $blocks = array()) - { - $__internal_92b4cc62709276af7b293515de8fc05f5af4c0b980fd1aa117335302b5ea3ff1 = $this->env->getExtension("native_profiler"); - $__internal_92b4cc62709276af7b293515de8fc05f5af4c0b980fd1aa117335302b5ea3ff1->enter($__internal_92b4cc62709276af7b293515de8fc05f5af4c0b980fd1aa117335302b5ea3ff1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); - - - $__internal_92b4cc62709276af7b293515de8fc05f5af4c0b980fd1aa117335302b5ea3ff1->leave($__internal_92b4cc62709276af7b293515de8fc05f5af4c0b980fd1aa117335302b5ea3ff1_prof); - - } - - public function getTemplateName() - { - return "TwigBundle::layout.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 116 => 40, 105 => 9, 94 => 6, 83 => 41, 81 => 40, 49 => 10, 47 => 9, 43 => 8, 39 => 7, 35 => 6, 30 => 4, 25 => 1,); - } -} -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% block title %}{% endblock %}*/ -/* */ -/* */ -/* {% block head %}{% endblock %}*/ -/* */ -/* */ -/*
*/ -/*
*/ -/* */ -/* */ -/* */ -/*
*/ -/* */ -/*
*/ -/* {% block body %}{% endblock %}*/ -/*
*/ -/*
*/ -/* */ -/* */ -/* */ diff --git a/app/cache/dev/twig/1/f/1fa930c0ae1612362c3770f41a76770ff3336b8b0e47c7d17cfbf1ae7e35ec73.php b/app/cache/dev/twig/1/f/1fa930c0ae1612362c3770f41a76770ff3336b8b0e47c7d17cfbf1ae7e35ec73.php deleted file mode 100644 index 1e1b4db..0000000 --- a/app/cache/dev/twig/1/f/1fa930c0ae1612362c3770f41a76770ff3336b8b0e47c7d17cfbf1ae7e35ec73.php +++ /dev/null @@ -1,102 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_faa2c9aac1a1dd2ac62dbf163c3f84763bfecf41874cc5a99cae597ff4b2ff76 = $this->env->getExtension("native_profiler"); - $__internal_faa2c9aac1a1dd2ac62dbf163c3f84763bfecf41874cc5a99cae597ff4b2ff76->enter($__internal_faa2c9aac1a1dd2ac62dbf163c3f84763bfecf41874cc5a99cae597ff4b2ff76_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:traces_text.html.twig")); - - // line 1 - echo "
-

- Stack Trace (Plain Text)  - "; - // line 4 - ob_start(); - // line 5 - echo " - \"-\" - \"+\" - - "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 10 - echo "

- -
-
";
-        // line 13
-        $context['_parent'] = $context;
-        $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "toarray", array()));
-        foreach ($context['_seq'] as $context["i"] => $context["e"]) {
-            // line 14
-            echo "[";
-            echo twig_escape_filter($this->env, ($context["i"] + 1), "html", null, true);
-            echo "] ";
-            echo twig_escape_filter($this->env, $this->getAttribute($context["e"], "class", array()), "html", null, true);
-            echo ": ";
-            echo twig_escape_filter($this->env, $this->getAttribute($context["e"], "message", array()), "html", null, true);
-            echo "
-";
-            // line 15
-            $this->loadTemplate("TwigBundle:Exception:traces.txt.twig", "TwigBundle:Exception:traces_text.html.twig", 15)->display(array("exception" => $context["e"]));
-        }
-        $_parent = $context['_parent'];
-        unset($context['_seq'], $context['_iterated'], $context['i'], $context['e'], $context['_parent'], $context['loop']);
-        $context = array_intersect_key($context, $_parent) + $_parent;
-        // line 16
-        echo "
-
-
-"; - - $__internal_faa2c9aac1a1dd2ac62dbf163c3f84763bfecf41874cc5a99cae597ff4b2ff76->leave($__internal_faa2c9aac1a1dd2ac62dbf163c3f84763bfecf41874cc5a99cae597ff4b2ff76_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:traces_text.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 60 => 16, 54 => 15, 45 => 14, 41 => 13, 36 => 10, 29 => 5, 27 => 4, 22 => 1,); - } -} -/*
*/ -/*

*/ -/* Stack Trace (Plain Text) */ -/* {% spaceless %}*/ -/* */ -/* */ -/* +*/ -/* */ -/* {% endspaceless %}*/ -/*

*/ -/* */ -/* */ -/*
*/ -/* */ diff --git a/app/cache/dev/twig/2/7/272604e37581aa8ba43ea89bedddf5b35d42eb9dd5b64cc6e8d5faac81bf4393.php b/app/cache/dev/twig/2/7/272604e37581aa8ba43ea89bedddf5b35d42eb9dd5b64cc6e8d5faac81bf4393.php deleted file mode 100644 index e72ea67..0000000 --- a/app/cache/dev/twig/2/7/272604e37581aa8ba43ea89bedddf5b35d42eb9dd5b64cc6e8d5faac81bf4393.php +++ /dev/null @@ -1,107 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/memory.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_7f1f283ac0c179aa79379d4febcf1f74c31dd0812b9e35b52d801368e4cd3924 = $this->env->getExtension("native_profiler"); - $__internal_7f1f283ac0c179aa79379d4febcf1f74c31dd0812b9e35b52d801368e4cd3924->enter($__internal_7f1f283ac0c179aa79379d4febcf1f74c31dd0812b9e35b52d801368e4cd3924_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/memory.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_7f1f283ac0c179aa79379d4febcf1f74c31dd0812b9e35b52d801368e4cd3924->leave($__internal_7f1f283ac0c179aa79379d4febcf1f74c31dd0812b9e35b52d801368e4cd3924_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_518627153381415ead304574029a76749aa701d64912aa036b5e46d42af53924 = $this->env->getExtension("native_profiler"); - $__internal_518627153381415ead304574029a76749aa701d64912aa036b5e46d42af53924->enter($__internal_518627153381415ead304574029a76749aa701d64912aa036b5e46d42af53924_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - ob_start(); - // line 5 - echo " - - "; - // line 7 - echo twig_escape_filter($this->env, sprintf("%.1f", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024)), "html", null, true); - echo " MB - - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 10 - echo " "; - ob_start(); - // line 11 - echo "
- Memory usage - "; - // line 13 - echo twig_escape_filter($this->env, sprintf("%.1f", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024)), "html", null, true); - echo " / "; - echo ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memoryLimit", array()) == -1)) ? ("∞") : (twig_escape_filter($this->env, sprintf("%.1f", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memoryLimit", array()) / 1024) / 1024))))); - echo " MB -
- "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 16 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/memory.html.twig", 16)->display(array_merge($context, array("link" => false))); - - $__internal_518627153381415ead304574029a76749aa701d64912aa036b5e46d42af53924->leave($__internal_518627153381415ead304574029a76749aa701d64912aa036b5e46d42af53924_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/memory.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 68 => 16, 60 => 13, 56 => 11, 53 => 10, 47 => 7, 43 => 5, 40 => 4, 34 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% set icon %}*/ -/* */ -/* */ -/* {{ '%.1f'|format(collector.memory / 1024 / 1024) }} MB*/ -/* */ -/* {% endset %}*/ -/* {% set text %}*/ -/*
*/ -/* Memory usage*/ -/* {{ '%.1f'|format(collector.memory / 1024 / 1024) }} / {{ collector.memoryLimit == -1 ? '∞' : '%.1f'|format(collector.memoryLimit / 1024 / 1024)|escape }} MB*/ -/*
*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/2/8/28200a2d4b76278f8a74a5c9bc4f9011c771747635b8cb6ad665e32a8edaa0aa.php b/app/cache/dev/twig/2/8/28200a2d4b76278f8a74a5c9bc4f9011c771747635b8cb6ad665e32a8edaa0aa.php deleted file mode 100644 index 01b2236..0000000 --- a/app/cache/dev/twig/2/8/28200a2d4b76278f8a74a5c9bc4f9011c771747635b8cb6ad665e32a8edaa0aa.php +++ /dev/null @@ -1,229 +0,0 @@ -parent = $this->loadTemplate("base.html.twig", "default/index.html.twig", 1); - $this->blocks = array( - 'body' => array($this, 'block_body'), - 'stylesheets' => array($this, 'block_stylesheets'), - ); - } - - protected function doGetParent(array $context) - { - return "base.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_0059b867c6207d0372a613606d47b3039c26bb4599aae468397f1ac7a520c0ba = $this->env->getExtension("native_profiler"); - $__internal_0059b867c6207d0372a613606d47b3039c26bb4599aae468397f1ac7a520c0ba->enter($__internal_0059b867c6207d0372a613606d47b3039c26bb4599aae468397f1ac7a520c0ba_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_0059b867c6207d0372a613606d47b3039c26bb4599aae468397f1ac7a520c0ba->leave($__internal_0059b867c6207d0372a613606d47b3039c26bb4599aae468397f1ac7a520c0ba_prof); - - } - - // line 3 - public function block_body($context, array $blocks = array()) - { - $__internal_370ba38ca5d3927ff6bd768aab43db71ec7758513671a68d173f28d07b7eb596 = $this->env->getExtension("native_profiler"); - $__internal_370ba38ca5d3927ff6bd768aab43db71ec7758513671a68d173f28d07b7eb596->enter($__internal_370ba38ca5d3927ff6bd768aab43db71ec7758513671a68d173f28d07b7eb596_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); - - // line 4 - echo "
-
-
-

Welcome to Symfony "; - // line 7 - echo twig_escape_filter($this->env, twig_constant("Symfony\\Component\\HttpKernel\\Kernel::VERSION"), "html", null, true); - echo "

-
- -
-

- - - Your application is ready to start working on it at: - "; - // line 15 - echo twig_escape_filter($this->env, (isset($context["base_dir"]) ? $context["base_dir"] : $this->getContext($context, "base_dir")), "html", null, true); - echo "/ -

-
- - - -
-
-"; - - $__internal_370ba38ca5d3927ff6bd768aab43db71ec7758513671a68d173f28d07b7eb596->leave($__internal_370ba38ca5d3927ff6bd768aab43db71ec7758513671a68d173f28d07b7eb596_prof); - - } - - // line 49 - public function block_stylesheets($context, array $blocks = array()) - { - $__internal_4abcde3e3921389112dd6ab4d0f8fb8b84c71d75cb76a881f92ae169ac4c537a = $this->env->getExtension("native_profiler"); - $__internal_4abcde3e3921389112dd6ab4d0f8fb8b84c71d75cb76a881f92ae169ac4c537a->enter($__internal_4abcde3e3921389112dd6ab4d0f8fb8b84c71d75cb76a881f92ae169ac4c537a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); - - // line 50 - echo " -"; - - $__internal_4abcde3e3921389112dd6ab4d0f8fb8b84c71d75cb76a881f92ae169ac4c537a->leave($__internal_4abcde3e3921389112dd6ab4d0f8fb8b84c71d75cb76a881f92ae169ac4c537a_prof); - - } - - public function getTemplateName() - { - return "default/index.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 106 => 50, 100 => 49, 84 => 39, 57 => 15, 46 => 7, 41 => 4, 35 => 3, 11 => 1,); - } -} -/* {% extends 'base.html.twig' %}*/ -/* */ -/* {% block body %}*/ -/*
*/ -/*
*/ -/*
*/ -/*

Welcome to Symfony {{ constant('Symfony\\Component\\HttpKernel\\Kernel::VERSION') }}

*/ -/*
*/ -/* */ -/*
*/ -/*

*/ -/* */ -/* */ -/* Your application is ready to start working on it at:*/ -/* {{ base_dir }}/*/ -/*

*/ -/*
*/ -/* */ -/* */ -/* */ -/*
*/ -/*
*/ -/* {% endblock %}*/ -/* */ -/* {% block stylesheets %}*/ -/* */ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/3/d/3db5220259563554851051274618fc3089a7f32e9bc4d742faf61a5cac651887.php b/app/cache/dev/twig/3/d/3db5220259563554851051274618fc3089a7f32e9bc4d742faf61a5cac651887.php deleted file mode 100644 index a3566f2..0000000 --- a/app/cache/dev/twig/3/d/3db5220259563554851051274618fc3089a7f32e9bc4d742faf61a5cac651887.php +++ /dev/null @@ -1,380 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_d9f412a0a4796e6abc4d3557b5396f294f11136d9cbf7ca768d1996c52eb43e6 = $this->env->getExtension("native_profiler"); - $__internal_d9f412a0a4796e6abc4d3557b5396f294f11136d9cbf7ca768d1996c52eb43e6->enter($__internal_d9f412a0a4796e6abc4d3557b5396f294f11136d9cbf7ca768d1996c52eb43e6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:exception.html.twig")); - - // line 1 - echo "
-
-
- \"Exception -
-
-
- \"\" -
- -

- "; - // line 12 - echo $this->env->getExtension('code')->formatFileFromText(nl2br(twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true))); - echo " -

- -
- "; - // line 16 - echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); - echo " "; - echo twig_escape_filter($this->env, (isset($context["status_text"]) ? $context["status_text"] : $this->getContext($context, "status_text")), "html", null, true); - echo " - "; - echo $this->env->getExtension('code')->abbrClass($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "class", array())); - echo " -
- - "; - // line 19 - $context["previous_count"] = twig_length_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "allPrevious", array())); - // line 20 - echo " "; - if ((isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count"))) { - // line 21 - echo "
"; - echo twig_escape_filter($this->env, (isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")), "html", null, true); - echo " linked Exception"; - echo ((((isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")) > 1)) ? ("s") : ("")); - echo ": - -
- "; - } - // line 31 - echo " -
- \"\" -
-
-
-
- -"; - // line 39 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "toarray", array())); - foreach ($context['_seq'] as $context["position"] => $context["e"]) { - // line 40 - echo " "; - $this->loadTemplate("TwigBundle:Exception:traces.html.twig", "TwigBundle:Exception:exception.html.twig", 40)->display(array("exception" => $context["e"], "position" => $context["position"], "count" => (isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")))); - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['position'], $context['e'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 42 - echo " -"; - // line 43 - if ((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger"))) { - // line 44 - echo "
-
- "; - // line 46 - ob_start(); - // line 47 - echo "

- Logs  - - \"+\" - \"-\" - -

- "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 55 - echo " - "; - // line 56 - if ($this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array())) { - // line 57 - echo "
- - "; - // line 59 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array()), "html", null, true); - echo " error"; - echo ((($this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array()) > 1)) ? ("s") : ("")); - echo " - -
- "; - } - // line 63 - echo "
- -
- "; - // line 66 - $this->loadTemplate("TwigBundle:Exception:logs.html.twig", "TwigBundle:Exception:exception.html.twig", 66)->display(array("logs" => $this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "logs", array()))); - // line 67 - echo "
-
-"; - } - // line 70 - echo " -"; - // line 71 - if ((isset($context["currentContent"]) ? $context["currentContent"] : $this->getContext($context, "currentContent"))) { - // line 72 - echo "
- "; - // line 73 - ob_start(); - // line 74 - echo "

- Content of the Output  - - \"-\" - \"+\" - -

- "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 82 - echo " -
- "; - // line 84 - echo twig_escape_filter($this->env, (isset($context["currentContent"]) ? $context["currentContent"] : $this->getContext($context, "currentContent")), "html", null, true); - echo " -
- -
-
-"; - } - // line 90 - echo " -"; - // line 91 - $this->loadTemplate("TwigBundle:Exception:traces_text.html.twig", "TwigBundle:Exception:exception.html.twig", 91)->display(array("exception" => (isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")))); - // line 92 - echo " - -"; - - $__internal_d9f412a0a4796e6abc4d3557b5396f294f11136d9cbf7ca768d1996c52eb43e6->leave($__internal_d9f412a0a4796e6abc4d3557b5396f294f11136d9cbf7ca768d1996c52eb43e6_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:exception.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 204 => 92, 202 => 91, 199 => 90, 190 => 84, 186 => 82, 176 => 74, 174 => 73, 171 => 72, 169 => 71, 166 => 70, 161 => 67, 159 => 66, 154 => 63, 145 => 59, 141 => 57, 139 => 56, 136 => 55, 126 => 47, 124 => 46, 120 => 44, 118 => 43, 115 => 42, 108 => 40, 104 => 39, 94 => 31, 89 => 28, 72 => 25, 69 => 24, 65 => 23, 57 => 21, 54 => 20, 52 => 19, 42 => 16, 35 => 12, 22 => 1,); - } -} -/*
*/ -/*
*/ -/*
*/ -/* Exception detected!*/ -/*
*/ -/*
*/ -/*
*/ -/* */ -/*
*/ -/* */ -/*

*/ -/* {{ exception.message|nl2br|format_file_from_text }}*/ -/*

*/ -/* */ -/*
*/ -/* {{ status_code }} {{ status_text }} - {{ exception.class|abbr_class }}*/ -/*
*/ -/* */ -/* {% set previous_count = exception.allPrevious|length %}*/ -/* {% if previous_count %}*/ -/*
{{ previous_count }} linked Exception{{ previous_count > 1 ? 's' : '' }}:*/ -/*
    */ -/* {% for i, previous in exception.allPrevious %}*/ -/*
  • */ -/* {{ previous.class|abbr_class }} »*/ -/*
  • */ -/* {% endfor %}*/ -/*
*/ -/*
*/ -/* {% endif %}*/ -/* */ -/*
*/ -/* */ -/*
*/ -/*
*/ -/*
*/ -/*
*/ -/* */ -/* {% for position, e in exception.toarray %}*/ -/* {% include 'TwigBundle:Exception:traces.html.twig' with { 'exception': e, 'position': position, 'count': previous_count } only %}*/ -/* {% endfor %}*/ -/* */ -/* {% if logger %}*/ -/*
*/ -/*
*/ -/* {% spaceless %}*/ -/*

*/ -/* Logs */ -/* */ -/* */ -/* -*/ -/* */ -/*

*/ -/* {% endspaceless %}*/ -/* */ -/* {% if logger.counterrors %}*/ -/*
*/ -/* */ -/* {{ logger.counterrors }} error{{ logger.counterrors > 1 ? 's' : ''}}*/ -/* */ -/*
*/ -/* {% endif %}*/ -/*
*/ -/* */ -/*
*/ -/* {% include 'TwigBundle:Exception:logs.html.twig' with { 'logs': logger.logs } only %}*/ -/*
*/ -/*
*/ -/* {% endif %}*/ -/* */ -/* {% if currentContent %}*/ -/*
*/ -/* {% spaceless %}*/ -/*

*/ -/* Content of the Output */ -/* */ -/* */ -/* +*/ -/* */ -/*

*/ -/* {% endspaceless %}*/ -/* */ -/* */ -/* */ -/*
*/ -/*
*/ -/* {% endif %}*/ -/* */ -/* {% include 'TwigBundle:Exception:traces_text.html.twig' with { 'exception': exception } only %}*/ -/* */ -/* */ -/* */ diff --git a/app/cache/dev/twig/4/2/426ebc6f62834cc3ea5131df04ad68216ce6d7a4a594b059d13cbae083971b13.php b/app/cache/dev/twig/4/2/426ebc6f62834cc3ea5131df04ad68216ce6d7a4a594b059d13cbae083971b13.php deleted file mode 100644 index 244cf5b..0000000 --- a/app/cache/dev/twig/4/2/426ebc6f62834cc3ea5131df04ad68216ce6d7a4a594b059d13cbae083971b13.php +++ /dev/null @@ -1,119 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/ajax.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_cc330bcd2695b52aaff459f636a6493a7c9ab14e1812d96f82b04529dc658f82 = $this->env->getExtension("native_profiler"); - $__internal_cc330bcd2695b52aaff459f636a6493a7c9ab14e1812d96f82b04529dc658f82->enter($__internal_cc330bcd2695b52aaff459f636a6493a7c9ab14e1812d96f82b04529dc658f82_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/ajax.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_cc330bcd2695b52aaff459f636a6493a7c9ab14e1812d96f82b04529dc658f82->leave($__internal_cc330bcd2695b52aaff459f636a6493a7c9ab14e1812d96f82b04529dc658f82_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_9a26f2636f0a849a56785c9cba46f7e6d2b1262c1061ae6a4e416498ea79e469 = $this->env->getExtension("native_profiler"); - $__internal_9a26f2636f0a849a56785c9cba46f7e6d2b1262c1061ae6a4e416498ea79e469->enter($__internal_9a26f2636f0a849a56785c9cba46f7e6d2b1262c1061ae6a4e416498ea79e469_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - $context["icon"] = ('' === $tmp = " - - 0 - - ") ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 10 - echo " "; - $context["text"] = ('' === $tmp = "
- AJAX requests - -
-
- - - - - - - - - - -
MethodURLTimeProfile
-
- ") ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 29 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/ajax.html.twig", 29)->display(array_merge($context, array("link" => false))); - - $__internal_9a26f2636f0a849a56785c9cba46f7e6d2b1262c1061ae6a4e416498ea79e469->leave($__internal_9a26f2636f0a849a56785c9cba46f7e6d2b1262c1061ae6a4e416498ea79e469_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/ajax.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 67 => 29, 47 => 10, 40 => 4, 34 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% set icon %}*/ -/* */ -/* */ -/* 0*/ -/* */ -/* {% endset %}*/ -/* {% set text %}*/ -/*
*/ -/* AJAX requests*/ -/* */ -/*
*/ -/*
*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/*
MethodURLTimeProfile
*/ -/*
*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/5/0/50767134623071033c70967e6377ae4d4f20a237bbc550e28adb66a77713b5ac.php b/app/cache/dev/twig/5/0/50767134623071033c70967e6377ae4d4f20a237bbc550e28adb66a77713b5ac.php deleted file mode 100644 index 8cbbd56..0000000 --- a/app/cache/dev/twig/5/0/50767134623071033c70967e6377ae4d4f20a237bbc550e28adb66a77713b5ac.php +++ /dev/null @@ -1,47 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_aaa8e8a103746abff3f47c4c9c73b7d018f07953e8eb22f137d98049a561f8ec = $this->env->getExtension("native_profiler"); - $__internal_aaa8e8a103746abff3f47c4c9c73b7d018f07953e8eb22f137d98049a561f8ec->enter($__internal_aaa8e8a103746abff3f47c4c9c73b7d018f07953e8eb22f137d98049a561f8ec_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "XavSiteBundle:Default:index.html.twig")); - - // line 1 - echo "Hello "; - echo twig_escape_filter($this->env, (isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "html", null, true); - echo "! -"; - - $__internal_aaa8e8a103746abff3f47c4c9c73b7d018f07953e8eb22f137d98049a561f8ec->leave($__internal_aaa8e8a103746abff3f47c4c9c73b7d018f07953e8eb22f137d98049a561f8ec_prof); - - } - - public function getTemplateName() - { - return "XavSiteBundle:Default:index.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 22 => 1,); - } -} -/* Hello {{ name }}!*/ -/* */ diff --git a/app/cache/dev/twig/5/8/58a872f7445014a49e25e9ba1b08d7c56f9f3442b5824def87b082472c60edd7.php b/app/cache/dev/twig/5/8/58a872f7445014a49e25e9ba1b08d7c56f9f3442b5824def87b082472c60edd7.php deleted file mode 100644 index f43487c..0000000 --- a/app/cache/dev/twig/5/8/58a872f7445014a49e25e9ba1b08d7c56f9f3442b5824def87b082472c60edd7.php +++ /dev/null @@ -1,152 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_9734aa50368c25c8d019aa374c9fd2aebc497e4bb479f201f469338cf1cc05a6 = $this->env->getExtension("native_profiler"); - $__internal_9734aa50368c25c8d019aa374c9fd2aebc497e4bb479f201f469338cf1cc05a6->enter($__internal_9734aa50368c25c8d019aa374c9fd2aebc497e4bb479f201f469338cf1cc05a6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:traces.html.twig")); - - // line 1 - echo "
- "; - // line 2 - if (((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) > 0)) { - // line 3 - echo "

- ["; - // line 4 - echo twig_escape_filter($this->env, (((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) - (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position"))) + 1), "html", null, true); - echo "/"; - echo twig_escape_filter($this->env, ((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) + 1), "html", null, true); - echo "] - "; - // line 5 - echo $this->env->getExtension('code')->abbrClass($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "class", array())); - echo ": "; - echo $this->env->getExtension('code')->formatFileFromText(nl2br(twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true))); - echo "  - "; - // line 6 - ob_start(); - // line 7 - echo " env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); - echo "', 'traces'); switchIcons('icon-traces-"; - echo twig_escape_filter($this->env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); - echo "-open', 'icon-traces-"; - echo twig_escape_filter($this->env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); - echo "-close'); return false;\"> - env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); - echo "-close\" alt=\"-\" src=\"data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=\" style=\"display: "; - echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("inline") : ("none")); - echo "\" /> - env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); - echo "-open\" alt=\"+\" src=\"data:image/gif;base64,R0lGODlhEgASAMQTANft99/v+Ga44bHb8ITG52S44dXs9+z1+uPx+YvK6WC24G+944/M6W28443L6dnu+Ge54v/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAASABIAQAVS4DQBTiOd6LkwgJgeUSzHSDoNaZ4PU6FLgYBA5/vFID/DbylRGiNIZu74I0h1hNsVxbNuUV4d9SsZM2EzWe1qThVzwWFOAFCQFa1RQq6DJB4iIQA7\" style=\"display: "; - echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("none") : ("inline")); - echo "\" /> - - "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 12 - echo "

- "; - } else { - // line 14 - echo "

Stack Trace

- "; - } - // line 16 - echo " - env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); - echo "\"> -
    env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); - echo "\" style=\"display: "; - echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("block") : ("none")); - echo "\"> - "; - // line 19 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array())); - foreach ($context['_seq'] as $context["i"] => $context["trace"]) { - // line 20 - echo "
  1. - "; - // line 21 - $this->loadTemplate("TwigBundle:Exception:trace.html.twig", "TwigBundle:Exception:traces.html.twig", 21)->display(array("prefix" => (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "i" => $context["i"], "trace" => $context["trace"])); - // line 22 - echo "
  2. - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['i'], $context['trace'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 24 - echo "
-
-"; - - $__internal_9734aa50368c25c8d019aa374c9fd2aebc497e4bb479f201f469338cf1cc05a6->leave($__internal_9734aa50368c25c8d019aa374c9fd2aebc497e4bb479f201f469338cf1cc05a6_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:traces.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 104 => 24, 97 => 22, 95 => 21, 92 => 20, 88 => 19, 82 => 18, 78 => 17, 75 => 16, 71 => 14, 67 => 12, 59 => 9, 53 => 8, 44 => 7, 42 => 6, 36 => 5, 30 => 4, 27 => 3, 25 => 2, 22 => 1,); - } -} -/*
*/ -/* {% if count > 0 %}*/ -/*

*/ -/* [{{ count - position + 1 }}/{{ count + 1 }}]*/ -/* {{ exception.class|abbr_class }}: {{ exception.message|nl2br|format_file_from_text }} */ -/* {% spaceless %}*/ -/* */ -/* -*/ -/* +*/ -/* */ -/* {% endspaceless %}*/ -/*

*/ -/* {% else %}*/ -/*

Stack Trace

*/ -/* {% endif %}*/ -/* */ -/* */ -/*
    */ -/* {% for i, trace in exception.trace %}*/ -/*
  1. */ -/* {% include 'TwigBundle:Exception:trace.html.twig' with { 'prefix': position, 'i': i, 'trace': trace } only %}*/ -/*
  2. */ -/* {% endfor %}*/ -/*
*/ -/*
*/ -/* */ diff --git a/app/cache/dev/twig/5/e/5e6b4280a70b84ab1ab6437169b31bb10abb4f16b7f26a49dfed975007649711.php b/app/cache/dev/twig/5/e/5e6b4280a70b84ab1ab6437169b31bb10abb4f16b7f26a49dfed975007649711.php deleted file mode 100644 index 0989ad1..0000000 --- a/app/cache/dev/twig/5/e/5e6b4280a70b84ab1ab6437169b31bb10abb4f16b7f26a49dfed975007649711.php +++ /dev/null @@ -1,616 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/request.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_06ee6bd031760ea1e99bf2f5a3fb0368c5fc06c59aa6ef6e552fa7e4f5420c17 = $this->env->getExtension("native_profiler"); - $__internal_06ee6bd031760ea1e99bf2f5a3fb0368c5fc06c59aa6ef6e552fa7e4f5420c17->enter($__internal_06ee6bd031760ea1e99bf2f5a3fb0368c5fc06c59aa6ef6e552fa7e4f5420c17_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/request.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_06ee6bd031760ea1e99bf2f5a3fb0368c5fc06c59aa6ef6e552fa7e4f5420c17->leave($__internal_06ee6bd031760ea1e99bf2f5a3fb0368c5fc06c59aa6ef6e552fa7e4f5420c17_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_bf228face851f07b97d0376c0defda018f550eb978532d32933674173532383f = $this->env->getExtension("native_profiler"); - $__internal_bf228face851f07b97d0376c0defda018f550eb978532d32933674173532383f->enter($__internal_bf228face851f07b97d0376c0defda018f550eb978532d32933674173532383f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - ob_start(); - // line 5 - echo " "; - if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "controller", array(), "any", false, true), "class", array(), "any", true, true)) { - // line 6 - echo " "; - $context["link"] = $this->env->getExtension('code')->getFileLink($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "file", array()), $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "line", array())); - // line 7 - echo " "; - if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "method", array())) { - // line 8 - echo " "; - echo $this->env->getExtension('code')->abbrClass($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "class", array())); - echo " - getContext($context, "link"))) { - echo " onclick=\"window.location='"; - echo twig_escape_filter($this->env, twig_escape_filter($this->env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "js"), "html", null, true); - echo "';window.event.stopPropagation();return false;\""; - } - echo "> - "; - // line 10 - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "method", array()), "html", null, true); - echo " - - "; - } else { - // line 13 - echo " getContext($context, "link"))) { - echo " onclick=\"window.location='"; - echo twig_escape_filter($this->env, twig_escape_filter($this->env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "js"), "html", null, true); - echo "';window.event.stopPropagation();return false;\""; - } - echo ">"; - echo $this->env->getExtension('code')->abbrClass($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "class", array())); - echo " - "; - } - // line 15 - echo " "; - } else { - // line 16 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "html", null, true); - echo " - "; - } - // line 18 - echo " "; - $context["request_handler"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 19 - echo " "; - $context["request_status_code_color"] = (((400 > $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()))) ? ((((200 == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()))) ? ("green") : ("yellow"))) : ("red")); - // line 20 - echo " "; - $context["request_route"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "route", array())) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "route", array())) : ("NONE")); - // line 21 - echo " "; - ob_start(); - // line 22 - echo " - env, (isset($context["request_status_code_color"]) ? $context["request_status_code_color"] : $this->getContext($context, "request_status_code_color")), "html", null, true); - echo "\" title=\""; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statustext", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()), "html", null, true); - echo " - "; - // line 24 - echo twig_escape_filter($this->env, (isset($context["request_handler"]) ? $context["request_handler"] : $this->getContext($context, "request_handler")), "html", null, true); - echo " - on "; - // line 25 - echo twig_escape_filter($this->env, (isset($context["request_route"]) ? $context["request_route"] : $this->getContext($context, "request_route")), "html", null, true); - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 27 - echo " "; - ob_start(); - // line 28 - echo " "; - ob_start(); - // line 29 - echo "
- Status - env, (isset($context["request_status_code_color"]) ? $context["request_status_code_color"] : $this->getContext($context, "request_status_code_color")), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()), "html", null, true); - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statustext", array()), "html", null, true); - echo " -
-
- Controller - "; - // line 35 - echo twig_escape_filter($this->env, (isset($context["request_handler"]) ? $context["request_handler"] : $this->getContext($context, "request_handler")), "html", null, true); - echo " -
-
- Route name - "; - // line 39 - echo twig_escape_filter($this->env, (isset($context["request_route"]) ? $context["request_route"] : $this->getContext($context, "request_route")), "html", null, true); - echo " -
-
- Has session - "; - // line 43 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) { - echo "yes"; - } else { - echo "no"; - } - echo " -
- "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 46 - echo " "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 47 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/request.html.twig", 47)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - - $__internal_bf228face851f07b97d0376c0defda018f550eb978532d32933674173532383f->leave($__internal_bf228face851f07b97d0376c0defda018f550eb978532d32933674173532383f_prof); - - } - - // line 50 - public function block_menu($context, array $blocks = array()) - { - $__internal_1413d5552f88651828ce07723c12f2d64e06e1b830dc6a98024126d9bcab40e1 = $this->env->getExtension("native_profiler"); - $__internal_1413d5552f88651828ce07723c12f2d64e06e1b830dc6a98024126d9bcab40e1->enter($__internal_1413d5552f88651828ce07723c12f2d64e06e1b830dc6a98024126d9bcab40e1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 51 - echo " - - Request - -"; - - $__internal_1413d5552f88651828ce07723c12f2d64e06e1b830dc6a98024126d9bcab40e1->leave($__internal_1413d5552f88651828ce07723c12f2d64e06e1b830dc6a98024126d9bcab40e1_prof); - - } - - // line 57 - public function block_panel($context, array $blocks = array()) - { - $__internal_2f98b5f6da696a7a75dd678ee34536273fcffa0dc86a12f5c238d99fd0bf4276 = $this->env->getExtension("native_profiler"); - $__internal_2f98b5f6da696a7a75dd678ee34536273fcffa0dc86a12f5c238d99fd0bf4276->enter($__internal_2f98b5f6da696a7a75dd678ee34536273fcffa0dc86a12f5c238d99fd0bf4276_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 58 - echo "

Request GET Parameters

- - "; - // line 60 - if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestquery", array()), "all", array()))) { - // line 61 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 61)->display(array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestquery", array()))); - // line 62 - echo " "; - } else { - // line 63 - echo "

- No GET parameters -

- "; - } - // line 67 - echo " -

Request POST Parameters

- - "; - // line 70 - if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestrequest", array()), "all", array()))) { - // line 71 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 71)->display(array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestrequest", array()))); - // line 72 - echo " "; - } else { - // line 73 - echo "

- No POST parameters -

- "; - } - // line 77 - echo " -

Request Attributes

- - "; - // line 80 - if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestattributes", array()), "all", array()))) { - // line 81 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 81)->display(array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestattributes", array()))); - // line 82 - echo " "; - } else { - // line 83 - echo "

- No attributes -

- "; - } - // line 87 - echo " -

Request Cookies

- - "; - // line 90 - if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestcookies", array()), "all", array()))) { - // line 91 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 91)->display(array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestcookies", array()))); - // line 92 - echo " "; - } else { - // line 93 - echo "

- No cookies -

- "; - } - // line 97 - echo " -

Request Headers

- - "; - // line 100 - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 100)->display(array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestheaders", array()))); - // line 101 - echo " -

Request Content

- - "; - // line 104 - if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array()) == false)) { - // line 105 - echo "

Request content not available (it was retrieved as a resource).

- "; - } elseif ($this->getAttribute( // line 106 -(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array())) { - // line 107 - echo "
";
-            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array()), "html", null, true);
-            echo "
- "; - } else { - // line 109 - echo "

No content

- "; - } - // line 111 - echo " -

Request Server Parameters

- - "; - // line 114 - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 114)->display(array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestserver", array()))); - // line 115 - echo " -

Response Headers

- - "; - // line 118 - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 118)->display(array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "responseheaders", array()))); - // line 119 - echo " -

Session Metadata

- - "; - // line 122 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) { - // line 123 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/table.html.twig", "@WebProfiler/Collector/request.html.twig", 123)->display(array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))); - // line 124 - echo " "; - } else { - // line 125 - echo "

- No session metadata -

- "; - } - // line 129 - echo " -

Session Attributes

- - "; - // line 132 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionattributes", array()))) { - // line 133 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/table.html.twig", "@WebProfiler/Collector/request.html.twig", 133)->display(array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionattributes", array()))); - // line 134 - echo " "; - } else { - // line 135 - echo "

- No session attributes -

- "; - } - // line 139 - echo " -

Flashes

- - "; - // line 142 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array()))) { - // line 143 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/table.html.twig", "@WebProfiler/Collector/request.html.twig", 143)->display(array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array()))); - // line 144 - echo " "; - } else { - // line 145 - echo "

- No flashes -

- "; - } - // line 149 - echo " - "; - // line 150 - if ($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array())) { - // line 151 - echo "

env, $this->env->getExtension('routing')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()))), "html", null, true); - echo "\">Parent request: "; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()), "html", null, true); - echo "

- - "; - // line 153 - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 153)->display(array("bag" => $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "getcollector", array(0 => "request"), "method"), "requestattributes", array()))); - // line 154 - echo " "; - } - // line 155 - echo " - "; - // line 156 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array()))) { - // line 157 - echo "

Sub requests

- - "; - // line 159 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); - foreach ($context['_seq'] as $context["_key"] => $context["child"]) { - // line 160 - echo "

env, $this->env->getExtension('routing')->getPath("_profiler", array("token" => $this->getAttribute($context["child"], "token", array()))), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($context["child"], "token", array()), "html", null, true); - echo "

- "; - // line 161 - $this->loadTemplate("@WebProfiler/Profiler/bag.html.twig", "@WebProfiler/Collector/request.html.twig", 161)->display(array("bag" => $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "requestattributes", array()))); - // line 162 - echo " "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 163 - echo " "; - } - // line 164 - echo " -"; - - $__internal_2f98b5f6da696a7a75dd678ee34536273fcffa0dc86a12f5c238d99fd0bf4276->leave($__internal_2f98b5f6da696a7a75dd678ee34536273fcffa0dc86a12f5c238d99fd0bf4276_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/request.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 429 => 164, 426 => 163, 420 => 162, 418 => 161, 411 => 160, 407 => 159, 403 => 157, 401 => 156, 398 => 155, 395 => 154, 393 => 153, 385 => 151, 383 => 150, 380 => 149, 374 => 145, 371 => 144, 368 => 143, 366 => 142, 361 => 139, 355 => 135, 352 => 134, 349 => 133, 347 => 132, 342 => 129, 336 => 125, 333 => 124, 330 => 123, 328 => 122, 323 => 119, 321 => 118, 316 => 115, 314 => 114, 309 => 111, 305 => 109, 299 => 107, 297 => 106, 294 => 105, 292 => 104, 287 => 101, 285 => 100, 280 => 97, 274 => 93, 271 => 92, 268 => 91, 266 => 90, 261 => 87, 255 => 83, 252 => 82, 249 => 81, 247 => 80, 242 => 77, 236 => 73, 233 => 72, 230 => 71, 228 => 70, 223 => 67, 217 => 63, 214 => 62, 211 => 61, 209 => 60, 205 => 58, 199 => 57, 188 => 51, 182 => 50, 174 => 47, 171 => 46, 161 => 43, 154 => 39, 147 => 35, 136 => 31, 132 => 29, 129 => 28, 126 => 27, 121 => 25, 117 => 24, 109 => 23, 106 => 22, 103 => 21, 100 => 20, 97 => 19, 94 => 18, 88 => 16, 85 => 15, 73 => 13, 67 => 10, 59 => 9, 54 => 8, 51 => 7, 48 => 6, 45 => 5, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% set request_handler %}*/ -/* {% if collector.controller.class is defined %}*/ -/* {% set link = collector.controller.file|file_link(collector.controller.line) %}*/ -/* {% if collector.controller.method %}*/ -/* {{ collector.controller.class|abbr_class }}*/ -/* */ -/* {{ collector.controller.method }}*/ -/* */ -/* {% else %}*/ -/* {{ collector.controller.class|abbr_class }}*/ -/* {% endif %}*/ -/* {% else %}*/ -/* {{ collector.controller }}*/ -/* {% endif %}*/ -/* {% endset %}*/ -/* {% set request_status_code_color = (400 > collector.statuscode) ? ((200 == collector.statuscode) ? 'green' : 'yellow') : 'red'%}*/ -/* {% set request_route = collector.route ? collector.route : 'NONE' %}*/ -/* {% set icon %}*/ -/* */ -/* {{ collector.statuscode }}*/ -/* {{ request_handler }}*/ -/* on {{ request_route }}*/ -/* {% endset %}*/ -/* {% set text %}*/ -/* {% spaceless %}*/ -/*
*/ -/* Status*/ -/* {{ collector.statuscode }} {{ collector.statustext }}*/ -/*
*/ -/*
*/ -/* Controller*/ -/* {{ request_handler }}*/ -/*
*/ -/*
*/ -/* Route name*/ -/* {{ request_route }}*/ -/*
*/ -/*
*/ -/* Has session*/ -/* {% if collector.sessionmetadata|length %}yes{% else %}no{% endif %}*/ -/*
*/ -/* {% endspaceless %}*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Request*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

Request GET Parameters

*/ -/* */ -/* {% if collector.requestquery.all|length %}*/ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestquery } only %}*/ -/* {% else %}*/ -/*

*/ -/* No GET parameters*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Request POST Parameters

*/ -/* */ -/* {% if collector.requestrequest.all|length %}*/ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestrequest } only %}*/ -/* {% else %}*/ -/*

*/ -/* No POST parameters*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Request Attributes

*/ -/* */ -/* {% if collector.requestattributes.all|length %}*/ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestattributes } only %}*/ -/* {% else %}*/ -/*

*/ -/* No attributes*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Request Cookies

*/ -/* */ -/* {% if collector.requestcookies.all|length %}*/ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestcookies } only %}*/ -/* {% else %}*/ -/*

*/ -/* No cookies*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Request Headers

*/ -/* */ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestheaders } only %}*/ -/* */ -/*

Request Content

*/ -/* */ -/* {% if collector.content == false %}*/ -/*

Request content not available (it was retrieved as a resource).

*/ -/* {% elseif collector.content %}*/ -/*
{{ collector.content }}
*/ -/* {% else %}*/ -/*

No content

*/ -/* {% endif %}*/ -/* */ -/*

Request Server Parameters

*/ -/* */ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestserver } only %}*/ -/* */ -/*

Response Headers

*/ -/* */ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.responseheaders } only %}*/ -/* */ -/*

Session Metadata

*/ -/* */ -/* {% if collector.sessionmetadata|length %}*/ -/* {% include '@WebProfiler/Profiler/table.html.twig' with { 'data': collector.sessionmetadata } only %}*/ -/* {% else %}*/ -/*

*/ -/* No session metadata*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Session Attributes

*/ -/* */ -/* {% if collector.sessionattributes|length %}*/ -/* {% include '@WebProfiler/Profiler/table.html.twig' with { 'data': collector.sessionattributes } only %}*/ -/* {% else %}*/ -/*

*/ -/* No session attributes*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Flashes

*/ -/* */ -/* {% if collector.flashes|length %}*/ -/* {% include '@WebProfiler/Profiler/table.html.twig' with { 'data': collector.flashes } only %}*/ -/* {% else %}*/ -/*

*/ -/* No flashes*/ -/*

*/ -/* {% endif %}*/ -/* */ -/* {% if profile.parent %}*/ -/*

Parent request: {{ profile.parent.token }}

*/ -/* */ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': profile.parent.getcollector('request').requestattributes } only %}*/ -/* {% endif %}*/ -/* */ -/* {% if profile.children|length %}*/ -/*

Sub requests

*/ -/* */ -/* {% for child in profile.children %}*/ -/*

{{ child.token }}

*/ -/* {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': child.getcollector('request').requestattributes } only %}*/ -/* {% endfor %}*/ -/* {% endif %}*/ -/* */ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/5/f/5f95e8fae1f2a25cabf3511f7e271adc5d0c95a950ac49e1e33c0f0eee020180.php b/app/cache/dev/twig/5/f/5f95e8fae1f2a25cabf3511f7e271adc5d0c95a950ac49e1e33c0f0eee020180.php deleted file mode 100644 index 1ff3e32..0000000 --- a/app/cache/dev/twig/5/f/5f95e8fae1f2a25cabf3511f7e271adc5d0c95a950ac49e1e33c0f0eee020180.php +++ /dev/null @@ -1,361 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Security/Collector/security.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_8492d9d8426bb541e410301abc71301a0c4851af1d145d42d4024ccb4ca8ea03 = $this->env->getExtension("native_profiler"); - $__internal_8492d9d8426bb541e410301abc71301a0c4851af1d145d42d4024ccb4ca8ea03->enter($__internal_8492d9d8426bb541e410301abc71301a0c4851af1d145d42d4024ccb4ca8ea03_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/security.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_8492d9d8426bb541e410301abc71301a0c4851af1d145d42d4024ccb4ca8ea03->leave($__internal_8492d9d8426bb541e410301abc71301a0c4851af1d145d42d4024ccb4ca8ea03_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_2da4691da03d22696f686bcbf98baa3e178c40956b6f0d6a96bbf1ec5cf5f40c = $this->env->getExtension("native_profiler"); - $__internal_2da4691da03d22696f686bcbf98baa3e178c40956b6f0d6a96bbf1ec5cf5f40c->enter($__internal_2da4691da03d22696f686bcbf98baa3e178c40956b6f0d6a96bbf1ec5cf5f40c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array())) { - // line 5 - echo " "; - $context["color_code"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array()) && $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array()))) ? ("green") : ("yellow")); - // line 6 - echo " "; - $context["authentication_color_code"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array()) && $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array()))) ? ("green") : ("red")); - // line 7 - echo " "; - $context["authentication_color_text"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array()) && $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array()))) ? ("Yes") : ("No")); - // line 8 - echo " "; - } else { - // line 9 - echo " "; - $context["color_code"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) ? ("red") : ("black")); - // line 10 - echo " "; - } - // line 11 - echo " "; - ob_start(); - // line 12 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array())) { - // line 13 - echo "
- Logged in as - env, (isset($context["color_code"]) ? $context["color_code"] : $this->getContext($context, "color_code")), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()), "html", null, true); - echo " -
-
- Authenticated - env, (isset($context["authentication_color_code"]) ? $context["authentication_color_code"] : $this->getContext($context, "authentication_color_code")), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, (isset($context["authentication_color_text"]) ? $context["authentication_color_text"] : $this->getContext($context, "authentication_color_text")), "html", null, true); - echo " -
- "; - // line 21 - if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array()) != null)) { - // line 22 - echo "
- Token class - "; - // line 24 - echo $this->env->getExtension('code')->abbrClass($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array())); - echo " -
- "; - } - // line 27 - echo " "; - } elseif ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { - // line 28 - echo " You are not authenticated. - "; - } else { - // line 30 - echo " The security is disabled. - "; - } - // line 32 - echo " "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 33 - echo " "; - ob_start(); - // line 34 - echo " - env, (isset($context["color_code"]) ? $context["color_code"] : $this->getContext($context, "color_code")), "html", null, true); - echo "\"> - "; - // line 36 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array())) { - echo "
"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()), "html", null, true); - echo "
"; - } - // line 37 - echo " "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 38 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@Security/Collector/security.html.twig", 38)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - - $__internal_2da4691da03d22696f686bcbf98baa3e178c40956b6f0d6a96bbf1ec5cf5f40c->leave($__internal_2da4691da03d22696f686bcbf98baa3e178c40956b6f0d6a96bbf1ec5cf5f40c_prof); - - } - - // line 41 - public function block_menu($context, array $blocks = array()) - { - $__internal_c1184fc46716d5e5543790c419a6147572a5edf346e681f8999895959e016e93 = $this->env->getExtension("native_profiler"); - $__internal_c1184fc46716d5e5543790c419a6147572a5edf346e681f8999895959e016e93->enter($__internal_c1184fc46716d5e5543790c419a6147572a5edf346e681f8999895959e016e93_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 42 - echo " - - Security - -"; - - $__internal_c1184fc46716d5e5543790c419a6147572a5edf346e681f8999895959e016e93->leave($__internal_c1184fc46716d5e5543790c419a6147572a5edf346e681f8999895959e016e93_prof); - - } - - // line 48 - public function block_panel($context, array $blocks = array()) - { - $__internal_024110b6b380c01c978dbe036ef5e272ad713ac7a7999d9a10220b81635de280 = $this->env->getExtension("native_profiler"); - $__internal_024110b6b380c01c978dbe036ef5e272ad713ac7a7999d9a10220b81635de280->enter($__internal_024110b6b380c01c978dbe036ef5e272ad713ac7a7999d9a10220b81635de280_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 49 - echo "

Security

- "; - // line 50 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array())) { - // line 51 - echo " - - - - - - - - - - - - - "; - // line 70 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "supportsRoleHierarchy", array())) { - // line 71 - echo " - - - - "; - } - // line 76 - echo " "; - if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array()) != null)) { - // line 77 - echo " - - - - "; - } - // line 82 - echo "
Username"; - // line 54 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()), "html", null, true); - echo "
Authenticated? - "; - // line 59 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array())) { - // line 60 - echo " yes - "; - } else { - // line 62 - echo " no "; - if ( !twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array()))) { - echo "(probably because the user has no roles)"; - } - // line 63 - echo " "; - } - // line 64 - echo "
Roles"; - // line 68 - echo twig_escape_filter($this->env, $this->env->getExtension('yaml')->encode($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array())), "html", null, true); - echo "
Inherited Roles"; - // line 73 - echo twig_escape_filter($this->env, $this->env->getExtension('yaml')->encode($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inheritedRoles", array())), "html", null, true); - echo "
Token class"; - // line 79 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array()), "html", null, true); - echo "
- "; - } elseif ($this->getAttribute( // line 83 -(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { - // line 84 - echo "

- No token -

- "; - } else { - // line 88 - echo "

- The security component is disabled -

- "; - } - - $__internal_024110b6b380c01c978dbe036ef5e272ad713ac7a7999d9a10220b81635de280->leave($__internal_024110b6b380c01c978dbe036ef5e272ad713ac7a7999d9a10220b81635de280_prof); - - } - - public function getTemplateName() - { - return "@Security/Collector/security.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 244 => 88, 238 => 84, 236 => 83, 233 => 82, 227 => 79, 223 => 77, 220 => 76, 214 => 73, 210 => 71, 208 => 70, 203 => 68, 197 => 64, 194 => 63, 189 => 62, 185 => 60, 183 => 59, 175 => 54, 170 => 51, 168 => 50, 165 => 49, 159 => 48, 148 => 42, 142 => 41, 134 => 38, 131 => 37, 125 => 36, 121 => 35, 118 => 34, 115 => 33, 112 => 32, 108 => 30, 104 => 28, 101 => 27, 95 => 24, 91 => 22, 89 => 21, 82 => 19, 73 => 15, 69 => 13, 66 => 12, 63 => 11, 60 => 10, 57 => 9, 54 => 8, 51 => 7, 48 => 6, 45 => 5, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% if collector.tokenClass %}*/ -/* {% set color_code = (collector.enabled and collector.authenticated) ? 'green' : 'yellow' %}*/ -/* {% set authentication_color_code = (collector.enabled and collector.authenticated) ? 'green' : 'red' %}*/ -/* {% set authentication_color_text = (collector.enabled and collector.authenticated) ? 'Yes' : 'No' %}*/ -/* {% else %}*/ -/* {% set color_code = collector.enabled ? 'red' : 'black' %}*/ -/* {% endif %}*/ -/* {% set text %}*/ -/* {% if collector.tokenClass %}*/ -/*
*/ -/* Logged in as*/ -/* {{ collector.user }}*/ -/*
*/ -/*
*/ -/* Authenticated*/ -/* {{ authentication_color_text }}*/ -/*
*/ -/* {% if collector.tokenClass != null %}*/ -/*
*/ -/* Token class*/ -/* {{ collector.tokenClass|abbr_class }}*/ -/*
*/ -/* {% endif %}*/ -/* {% elseif collector.enabled %}*/ -/* You are not authenticated.*/ -/* {% else %}*/ -/* The security is disabled.*/ -/* {% endif %}*/ -/* {% endset %}*/ -/* {% set icon %}*/ -/* */ -/* */ -/* {% if collector.user %}
{{ collector.user }}
{% endif %}*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Security*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

Security

*/ -/* {% if collector.tokenClass %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% if collector.supportsRoleHierarchy %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endif %}*/ -/* {% if collector.tokenClass != null %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endif %}*/ -/*
Username{{ collector.user }}
Authenticated?*/ -/* {% if collector.authenticated %}*/ -/* yes*/ -/* {% else %}*/ -/* no {% if not collector.roles|length %}(probably because the user has no roles){% endif %}*/ -/* {% endif %}*/ -/*
Roles{{ collector.roles|yaml_encode }}
Inherited Roles{{ collector.inheritedRoles|yaml_encode }}
Token class{{ collector.tokenClass }}
*/ -/* {% elseif collector.enabled %}*/ -/*

*/ -/* No token*/ -/*

*/ -/* {% else %}*/ -/*

*/ -/* The security component is disabled*/ -/*

*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/7/1/7128143a6fe3e4b8ade4bbf453e983f3e08b4191872fce5f2d0f6ec66f88e9ec.php b/app/cache/dev/twig/7/1/7128143a6fe3e4b8ade4bbf453e983f3e08b4191872fce5f2d0f6ec66f88e9ec.php deleted file mode 100644 index d8c09a1..0000000 --- a/app/cache/dev/twig/7/1/7128143a6fe3e4b8ade4bbf453e983f3e08b4191872fce5f2d0f6ec66f88e9ec.php +++ /dev/null @@ -1,1288 +0,0 @@ -blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - 'queries' => array($this, 'block_queries'), - ); - } - - protected function doGetParent(array $context) - { - // line 1 - return $this->loadTemplate((($this->getAttribute($this->getAttribute((isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "isXmlHttpRequest", array())) ? ("WebProfilerBundle:Profiler:ajax_layout.html.twig") : ("WebProfilerBundle:Profiler:layout.html.twig")), "@Doctrine/Collector/db.html.twig", 1); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_a69a4f9847cff0e8cfedbe25a449bc993538ce2723f6eb7e08e105c7e2264fcc = $this->env->getExtension("native_profiler"); - $__internal_a69a4f9847cff0e8cfedbe25a449bc993538ce2723f6eb7e08e105c7e2264fcc->enter($__internal_a69a4f9847cff0e8cfedbe25a449bc993538ce2723f6eb7e08e105c7e2264fcc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Doctrine/Collector/db.html.twig")); - - $this->getParent($context)->display($context, array_merge($this->blocks, $blocks)); - - $__internal_a69a4f9847cff0e8cfedbe25a449bc993538ce2723f6eb7e08e105c7e2264fcc->leave($__internal_a69a4f9847cff0e8cfedbe25a449bc993538ce2723f6eb7e08e105c7e2264fcc_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_3d11e87ab764c20d2edad825f49d722c4909404c7bf6ac9f7cf11562ef227346 = $this->env->getExtension("native_profiler"); - $__internal_3d11e87ab764c20d2edad825f49d722c4909404c7bf6ac9f7cf11562ef227346->enter($__internal_3d11e87ab764c20d2edad825f49d722c4909404c7bf6ac9f7cf11562ef227346_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); - // line 5 - echo " - "; - // line 6 - ob_start(); - // line 7 - echo " "; - if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { - // line 8 - echo " - \"Database\" - getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) { - echo "sf-toolbar-status-yellow"; - } - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); - echo " - "; - // line 11 - if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 0)) { - // line 12 - echo " in "; - echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); - echo " ms - "; - } - // line 14 - echo " "; - if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) { - // line 15 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); - echo " - "; - } - // line 17 - echo " - "; - } else { - // line 19 - echo " - "; - // line 20 - if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 0) || ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0))) { - // line 21 - echo " "; - $context["status"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("red") : (((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) ? ("yellow") : ("")))); - // line 22 - echo " - "; - // line 23 - echo twig_include($this->env, $context, "@Doctrine/Collector/icon.svg"); - echo " - - "; - // line 25 - if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) == 0) && ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0))) { - // line 26 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); - echo " - errors - "; - } else { - // line 29 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); - echo " - - in - "; - // line 32 - echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); - echo " - ms - - "; - } - // line 36 - echo " - "; - } - // line 38 - echo " "; - } - // line 39 - echo " "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 40 - echo " - "; - // line 41 - ob_start(); - // line 42 - echo "
- Database Queries - "; - // line 44 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); - echo " -
-
- Query time - "; - // line 48 - echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); - echo " ms -
-
- Invalid entities - getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("sf-toolbar-status-red") : ("")); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); - echo " -
- "; - // line 54 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheEnabled", array())) { - // line 55 - echo "
- Cache hits - "; - // line 57 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheHitsCount", array()), "html", null, true); - echo " -
-
- Cache misses - getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()) > 0)) ? ("sf-toolbar-status-yellow") : ("")); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()), "html", null, true); - echo " -
-
- Cache puts - getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()) > 0)) ? ("sf-toolbar-status-yellow") : ("")); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()), "html", null, true); - echo " -
- "; - } else { - // line 68 - echo "
- Second Level Cache - disabled -
- "; - } - // line 73 - echo " "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 74 - echo " - "; - // line 75 - echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => ((array_key_exists("status", $context)) ? (_twig_default_filter((isset($context["status"]) ? $context["status"] : $this->getContext($context, "status")), "")) : ("")))); - echo " -"; - - $__internal_3d11e87ab764c20d2edad825f49d722c4909404c7bf6ac9f7cf11562ef227346->leave($__internal_3d11e87ab764c20d2edad825f49d722c4909404c7bf6ac9f7cf11562ef227346_prof); - - } - - // line 78 - public function block_menu($context, array $blocks = array()) - { - $__internal_a55113cae0d3253610d359e53e17a9cf83fc977bb6638f1fac6dcd0ef22c7bbb = $this->env->getExtension("native_profiler"); - $__internal_a55113cae0d3253610d359e53e17a9cf83fc977bb6638f1fac6dcd0ef22c7bbb->enter($__internal_a55113cae0d3253610d359e53e17a9cf83fc977bb6638f1fac6dcd0ef22c7bbb_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 79 - echo " - \"\" - Doctrine - - "; - // line 83 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); - echo " - "; - // line 84 - echo twig_escape_filter($this->env, sprintf("%0.0f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); - echo " ms - - -"; - - $__internal_a55113cae0d3253610d359e53e17a9cf83fc977bb6638f1fac6dcd0ef22c7bbb->leave($__internal_a55113cae0d3253610d359e53e17a9cf83fc977bb6638f1fac6dcd0ef22c7bbb_prof); - - } - - // line 89 - public function block_panel($context, array $blocks = array()) - { - $__internal_678e770510f831c9408bb17c0d8f6eadf2b83b9065c6153b05ed0fd1f0635cd2 = $this->env->getExtension("native_profiler"); - $__internal_678e770510f831c9408bb17c0d8f6eadf2b83b9065c6153b05ed0fd1f0635cd2->enter($__internal_678e770510f831c9408bb17c0d8f6eadf2b83b9065c6153b05ed0fd1f0635cd2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 90 - echo " "; - if (("explain" == (isset($context["page"]) ? $context["page"] : $this->getContext($context, "page")))) { - // line 91 - echo " "; - echo $this->env->getExtension('http_kernel')->renderFragment($this->env->getExtension('http_kernel')->controller("DoctrineBundle:Profiler:explain", array("token" => // line 92 -(isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => "db", "connectionName" => $this->getAttribute($this->getAttribute($this->getAttribute( // line 94 -(isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "query", array()), "get", array(0 => "connection"), "method"), "query" => $this->getAttribute($this->getAttribute($this->getAttribute( // line 95 -(isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "query", array()), "get", array(0 => "query"), "method")))); - // line 96 - echo " - "; - } else { - // line 98 - echo "
- - - "; - // line 109 - $this->displayBlock("queries", $context, $blocks); - echo " -
- "; - } - - $__internal_678e770510f831c9408bb17c0d8f6eadf2b83b9065c6153b05ed0fd1f0635cd2->leave($__internal_678e770510f831c9408bb17c0d8f6eadf2b83b9065c6153b05ed0fd1f0635cd2_prof); - - } - - // line 114 - public function block_queries($context, array $blocks = array()) - { - $__internal_8ba18046d86047e36deabbbcffdbc14da13eb6ecf45847b03b13f87ed0206a21 = $this->env->getExtension("native_profiler"); - $__internal_8ba18046d86047e36deabbbcffdbc14da13eb6ecf45847b03b13f87ed0206a21->enter($__internal_8ba18046d86047e36deabbbcffdbc14da13eb6ecf45847b03b13f87ed0206a21_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "queries")); - - // line 115 - echo "

Queries

- - "; - // line 117 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "queries", array())); - $context['loop'] = array( - 'parent' => $context['_parent'], - 'index0' => 0, - 'index' => 1, - 'first' => true, - ); - if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { - $length = count($context['_seq']); - $context['loop']['revindex0'] = $length - 1; - $context['loop']['revindex'] = $length; - $context['loop']['length'] = $length; - $context['loop']['last'] = 1 === $length; - } - foreach ($context['_seq'] as $context["connection"] => $context["queries"]) { - // line 118 - echo "

Connection "; - echo twig_escape_filter($this->env, $context["connection"], "html", null, true); - echo "

- "; - // line 119 - if (twig_test_empty($context["queries"])) { - // line 120 - echo "

- No queries. -

- "; - } else { - // line 124 - echo "

- -

- env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); - echo "\"> - - - - - - - - env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); - echo "\"> - "; - // line 142 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($context["queries"]); - $context['loop'] = array( - 'parent' => $context['_parent'], - 'index0' => 0, - 'index' => 1, - 'first' => true, - ); - if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { - $length = count($context['_seq']); - $context['loop']['revindex0'] = $length - 1; - $context['loop']['revindex'] = $length; - $context['loop']['length'] = $length; - $context['loop']['last'] = 1 === $length; - } - foreach ($context['_seq'] as $context["i"] => $context["query"]) { - // line 143 - echo " env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" class=\""; - echo twig_escape_filter($this->env, twig_cycle(array(0 => "odd", 1 => "even"), $context["i"]), "html", null, true); - echo "\"> - - - - - "; - ++$context['loop']['index0']; - ++$context['loop']['index']; - $context['loop']['first'] = false; - if (isset($context['loop']['length'])) { - --$context['loop']['revindex0']; - --$context['loop']['revindex']; - $context['loop']['last'] = 0 === $context['loop']['revindex0']; - } - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['i'], $context['query'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 182 - echo " -
env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); - echo "')\" data-sort-direction=\"-1\" style=\"cursor: pointer;\">#env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); - echo "')\" style=\"cursor: pointer;\">TimeInfo
"; - // line 144 - echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); - echo ""; - // line 145 - echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["query"], "executionMS", array()) * 1000)), "html", null, true); - echo " ms -
env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" style=\"cursor: pointer;\"> - \"+\" - \"-\" - Shrink query - env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\"> - "; - // line 152 - echo twig_escape_filter($this->env, $this->env->getExtension('doctrine_extension')->minifyQuery($this->getAttribute($context["query"], "sql", array())), "html", null, true); - echo " - -
-
env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" style=\"display: none;\"> - "; - // line 156 - echo SqlFormatter::format($this->getAttribute($context["query"], "sql", array()), $context["i"], $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array())); - echo " -
- env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" style=\"display: none;\"> - "; - // line 159 - echo $this->env->getExtension('doctrine_extension')->replaceQueryParameters($this->getAttribute($context["query"], "sql", array()), $this->getAttribute($context["query"], "params", array())); - echo " - - - Parameters: "; - // line 162 - echo twig_escape_filter($this->env, $this->env->getExtension('yaml')->encode($this->getAttribute($context["query"], "params", array())), "html", null, true); - echo "
- [env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" onclick=\"javascript:toggleRunnableQuery(this);\" data-target-id=\"original-query-"; - echo twig_escape_filter($this->env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" style=\"cursor: pointer;\">Display runnable query]
-
- - "; - // line 166 - if ($this->getAttribute($context["query"], "explainable", array())) { - // line 167 - echo " [env, $this->env->getExtension('routing')->getPath("_profiler", array("panel" => "db", "token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "page" => "explain", "connection" => $context["connection"], "query" => $context["i"])), "html", null, true); - echo "\" onclick=\"return explain(this);\" style=\"text-decoration: none;\" title=\"Explains the query\" data-target-id=\"explain-"; - echo twig_escape_filter($this->env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" > - \"+\" - \"-\" - Explain query - ] - "; - } else { - // line 173 - echo " This query cannot be explained - "; - } - // line 175 - echo " - "; - // line 176 - if ($this->getAttribute($context["query"], "explainable", array())) { - // line 177 - echo "
env, $context["i"], "html", null, true); - echo "-"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); - echo "\" class=\"loading\">
- "; - } - // line 179 - echo "
- "; - } - // line 185 - echo " "; - ++$context['loop']['index0']; - ++$context['loop']['index']; - $context['loop']['first'] = false; - if (isset($context['loop']['length'])) { - --$context['loop']['revindex0']; - --$context['loop']['revindex']; - $context['loop']['last'] = 0 === $context['loop']['revindex0']; - } - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['connection'], $context['queries'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 186 - echo " -

Database Connections

- - "; - // line 189 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array())) { - // line 190 - echo " "; - $this->loadTemplate("WebProfilerBundle:Profiler:table.html.twig", "@Doctrine/Collector/db.html.twig", 190)->display(array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array()))); - // line 191 - echo " "; - } else { - // line 192 - echo "

- No connections. -

- "; - } - // line 196 - echo " -

Entity Managers

- - "; - // line 199 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array())) { - // line 200 - echo " "; - $this->loadTemplate("WebProfilerBundle:Profiler:table.html.twig", "@Doctrine/Collector/db.html.twig", 200)->display(array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array()))); - // line 201 - echo " "; - } else { - // line 202 - echo "

- No entity managers. -

- "; - } - // line 206 - echo " -

Second Level Cache

- - "; - // line 209 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array())) { - // line 210 - echo " "; - $this->loadTemplate("WebProfilerBundle:Profiler:table.html.twig", "@Doctrine/Collector/db.html.twig", 210)->display(array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array()))); - // line 211 - echo " - "; - // line 212 - if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "hits", array())) { - // line 213 - echo "

Number of cache hits

- "; - // line 214 - $this->loadTemplate("WebProfilerBundle:Profiler:table.html.twig", "@Doctrine/Collector/db.html.twig", 214)->display(array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "hits", array()))); - // line 215 - echo " "; - } - // line 216 - echo " - "; - // line 217 - if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "misses", array())) { - // line 218 - echo "

Number of cache misses

- "; - // line 219 - $this->loadTemplate("WebProfilerBundle:Profiler:table.html.twig", "@Doctrine/Collector/db.html.twig", 219)->display(array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "misses", array()))); - // line 220 - echo " "; - } - // line 221 - echo " - "; - // line 222 - if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "puts", array())) { - // line 223 - echo "

Number of cache puts

- "; - // line 224 - $this->loadTemplate("WebProfilerBundle:Profiler:table.html.twig", "@Doctrine/Collector/db.html.twig", 224)->display(array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "puts", array()))); - // line 225 - echo " "; - } - // line 226 - echo " "; - } else { - // line 227 - echo "

- No cache. -

- "; - } - // line 231 - echo " -

Mapping

- - "; - // line 234 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "entities", array())); - foreach ($context['_seq'] as $context["manager"] => $context["classes"]) { - // line 235 - echo "

Manager "; - echo twig_escape_filter($this->env, $context["manager"], "html", null, true); - echo "

- "; - // line 236 - if (twig_test_empty($context["classes"])) { - // line 237 - echo "

No loaded entities.

- "; - } else { - // line 239 - echo " - - - - - - - - "; - // line 247 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($context["classes"]); - foreach ($context['_seq'] as $context["_key"] => $context["class"]) { - // line 248 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['class'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 263 - echo " -
ClassMapping errors
"; - // line 249 - echo twig_escape_filter($this->env, $context["class"], "html", null, true); - echo " - "; - // line 251 - if (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "mappingErrors", array(), "any", false, true), $context["manager"], array(), "array", true, true) && $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "mappingErrors", array(), "any", false, true), $context["manager"], array(), "array", false, true), $context["class"], array(), "array", true, true))) { - // line 252 - echo "
    - "; - // line 253 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mappingErrors", array()), $context["manager"], array(), "array"), $context["class"], array(), "array")); - foreach ($context['_seq'] as $context["_key"] => $context["error"]) { - // line 254 - echo "
  • "; - echo twig_escape_filter($this->env, $context["error"], "html", null, true); - echo "
  • - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 256 - echo "
- "; - } else { - // line 258 - echo " Valid - "; - } - // line 260 - echo "
- "; - } - // line 266 - echo " "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['manager'], $context['classes'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 267 - echo " - -"; - - $__internal_8ba18046d86047e36deabbbcffdbc14da13eb6ecf45847b03b13f87ed0206a21->leave($__internal_8ba18046d86047e36deabbbcffdbc14da13eb6ecf45847b03b13f87ed0206a21_prof); - - } - - public function getTemplateName() - { - return "@Doctrine/Collector/db.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 708 => 267, 702 => 266, 697 => 263, 689 => 260, 685 => 258, 681 => 256, 672 => 254, 668 => 253, 665 => 252, 663 => 251, 658 => 249, 655 => 248, 651 => 247, 641 => 239, 637 => 237, 635 => 236, 630 => 235, 626 => 234, 621 => 231, 615 => 227, 612 => 226, 609 => 225, 607 => 224, 604 => 223, 602 => 222, 599 => 221, 596 => 220, 594 => 219, 591 => 218, 589 => 217, 586 => 216, 583 => 215, 581 => 214, 578 => 213, 576 => 212, 573 => 211, 570 => 210, 568 => 209, 563 => 206, 557 => 202, 554 => 201, 551 => 200, 549 => 199, 544 => 196, 538 => 192, 535 => 191, 532 => 190, 530 => 189, 525 => 186, 511 => 185, 506 => 182, 490 => 179, 482 => 177, 480 => 176, 477 => 175, 473 => 173, 459 => 167, 457 => 166, 445 => 163, 441 => 162, 435 => 159, 429 => 158, 424 => 156, 418 => 155, 412 => 152, 406 => 151, 397 => 147, 392 => 145, 388 => 144, 379 => 143, 362 => 142, 358 => 141, 351 => 137, 347 => 136, 341 => 133, 330 => 125, 327 => 124, 321 => 120, 319 => 119, 314 => 118, 297 => 117, 293 => 115, 287 => 114, 276 => 109, 263 => 98, 259 => 96, 257 => 95, 256 => 94, 255 => 92, 253 => 91, 250 => 90, 244 => 89, 233 => 84, 229 => 83, 223 => 79, 217 => 78, 208 => 75, 205 => 74, 202 => 73, 195 => 68, 187 => 65, 178 => 61, 171 => 57, 167 => 55, 165 => 54, 158 => 52, 151 => 48, 144 => 44, 140 => 42, 138 => 41, 135 => 40, 132 => 39, 129 => 38, 125 => 36, 118 => 32, 111 => 29, 104 => 26, 102 => 25, 97 => 23, 94 => 22, 91 => 21, 89 => 20, 86 => 19, 82 => 17, 76 => 15, 73 => 14, 67 => 12, 65 => 11, 57 => 10, 53 => 8, 50 => 7, 48 => 6, 45 => 5, 42 => 4, 36 => 3, 21 => 1,); - } -} -/* {% extends app.request.isXmlHttpRequest ? 'WebProfilerBundle:Profiler:ajax_layout.html.twig' : 'WebProfilerBundle:Profiler:layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% set profiler_markup_version = profiler_markup_version|default(1) %}*/ -/* */ -/* {% set icon %}*/ -/* {% if profiler_markup_version == 1 %}*/ -/* */ -/* Database*/ -/* {{ collector.querycount }}*/ -/* {% if collector.querycount > 0 %}*/ -/* in {{ '%0.2f'|format(collector.time * 1000) }} ms*/ -/* {% endif %}*/ -/* {% if collector.invalidEntityCount > 0 %}*/ -/* {{ collector.invalidEntityCount }}*/ -/* {% endif %}*/ -/* */ -/* {% else %}*/ -/* */ -/* {% if collector.querycount > 0 or collector.invalidEntityCount > 0 %}*/ -/* {% set status = collector.invalidEntityCount > 0 ? 'red' : collector.querycount > 50 ? 'yellow' : '' %}*/ -/* */ -/* {{ include('@Doctrine/Collector/icon.svg') }}*/ -/* */ -/* {% if collector.querycount == 0 and collector.invalidEntityCount > 0 %}*/ -/* {{ collector.invalidEntityCount }}*/ -/* errors*/ -/* {% else %}*/ -/* {{ collector.querycount }}*/ -/* */ -/* in*/ -/* {{ '%0.2f'|format(collector.time * 1000) }}*/ -/* ms*/ -/* */ -/* {% endif %}*/ -/* */ -/* {% endif %}*/ -/* {% endif %}*/ -/* {% endset %}*/ -/* */ -/* {% set text %}*/ -/*
*/ -/* Database Queries*/ -/* {{ collector.querycount }}*/ -/*
*/ -/*
*/ -/* Query time*/ -/* {{ '%0.2f'|format(collector.time * 1000) }} ms*/ -/*
*/ -/*
*/ -/* Invalid entities*/ -/* {{ collector.invalidEntityCount }}*/ -/*
*/ -/* {% if collector.cacheEnabled %}*/ -/*
*/ -/* Cache hits*/ -/* {{ collector.cacheHitsCount }}*/ -/*
*/ -/*
*/ -/* Cache misses*/ -/* {{ collector.cacheMissesCount }}*/ -/*
*/ -/*
*/ -/* Cache puts*/ -/* {{ collector.cachePutsCount }}*/ -/*
*/ -/* {% else %}*/ -/*
*/ -/* Second Level Cache*/ -/* disabled*/ -/*
*/ -/* {% endif %}*/ -/* {% endset %}*/ -/* */ -/* {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status|default('') }) }}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Doctrine*/ -/* */ -/* {{ collector.querycount }}*/ -/* {{ '%0.0f'|format(collector.time * 1000) }} ms*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/* {% if 'explain' == page %}*/ -/* {{ render(controller('DoctrineBundle:Profiler:explain', {*/ -/* 'token': token,*/ -/* 'panel': 'db',*/ -/* 'connectionName': app.request.query.get('connection'),*/ -/* 'query': app.request.query.get('query')*/ -/* })) }}*/ -/* {% else %}*/ -/*
*/ -/* */ -/* */ -/* {{ block('queries') }}*/ -/*
*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% block queries %}*/ -/*

Queries

*/ -/* */ -/* {% for connection, queries in collector.queries %}*/ -/*

Connection {{ connection }}

*/ -/* {% if queries is empty %}*/ -/*

*/ -/* No queries.*/ -/*

*/ -/* {% else %}*/ -/*

*/ -/* */ -/*

*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% for i, query in queries %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/* */ -/*
#TimeInfo
{{ loop.index }}{{ '%0.2f'|format(query.executionMS * 1000) }} ms*/ -/*
*/ -/* +*/ -/* -*/ -/* Shrink query*/ -/* */ -/* {{ query.sql|doctrine_minify_query }}*/ -/* */ -/*
*/ -/* */ -/* */ -/* */ -/* Parameters: {{ query.params|yaml_encode }}
*/ -/* [Display runnable query]
*/ -/*
*/ -/* */ -/* {% if query.explainable %}*/ -/* [*/ -/* +*/ -/* -*/ -/* Explain query*/ -/* ]*/ -/* {% else %}*/ -/* This query cannot be explained*/ -/* {% endif %}*/ -/* */ -/* {% if query.explainable %}*/ -/*
*/ -/* {% endif %}*/ -/*
*/ -/* {% endif %}*/ -/* {% endfor %}*/ -/* */ -/*

Database Connections

*/ -/* */ -/* {% if collector.connections %}*/ -/* {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.connections} only %}*/ -/* {% else %}*/ -/*

*/ -/* No connections.*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Entity Managers

*/ -/* */ -/* {% if collector.managers %}*/ -/* {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.managers} only %}*/ -/* {% else %}*/ -/*

*/ -/* No entity managers.*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Second Level Cache

*/ -/* */ -/* {% if collector.cacheCounts %}*/ -/* {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.cacheCounts} only %}*/ -/* */ -/* {% if collector.cacheRegions.hits %}*/ -/*

Number of cache hits

*/ -/* {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.cacheRegions.hits} only %}*/ -/* {% endif %}*/ -/* */ -/* {% if collector.cacheRegions.misses %}*/ -/*

Number of cache misses

*/ -/* {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.cacheRegions.misses} only %}*/ -/* {% endif %}*/ -/* */ -/* {% if collector.cacheRegions.puts %}*/ -/*

Number of cache puts

*/ -/* {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.cacheRegions.puts} only %}*/ -/* {% endif %}*/ -/* {% else %}*/ -/*

*/ -/* No cache.*/ -/*

*/ -/* {% endif %}*/ -/* */ -/*

Mapping

*/ -/* */ -/* {% for manager, classes in collector.entities %}*/ -/*

Manager {{ manager }}

*/ -/* {% if classes is empty %}*/ -/*

No loaded entities.

*/ -/* {% else %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% for class in classes %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/* */ -/*
ClassMapping errors
{{ class }}*/ -/* {% if collector.mappingErrors[manager] is defined and collector.mappingErrors[manager][class] is defined %}*/ -/*
    */ -/* {% for error in collector.mappingErrors[manager][class] %}*/ -/*
  • {{ error }}
  • */ -/* {% endfor %}*/ -/*
*/ -/* {% else %}*/ -/* Valid*/ -/* {% endif %}*/ -/*
*/ -/* {% endif %}*/ -/* {% endfor %}*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/7/3/73d81808491b0b097d4033ed80aa796c2b04c1326641bcfc82417a5741bbcdb2.php b/app/cache/dev/twig/7/3/73d81808491b0b097d4033ed80aa796c2b04c1326641bcfc82417a5741bbcdb2.php deleted file mode 100644 index ceefa55..0000000 --- a/app/cache/dev/twig/7/3/73d81808491b0b097d4033ed80aa796c2b04c1326641bcfc82417a5741bbcdb2.php +++ /dev/null @@ -1,408 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/base.html.twig", "@WebProfiler/Profiler/layout.html.twig", 1); - $this->blocks = array( - 'body' => array($this, 'block_body'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/base.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_ff41cc2bd68003f976ed5d73ddf6e56425dc73e670e1c9340ad4f7eb18903e8a = $this->env->getExtension("native_profiler"); - $__internal_ff41cc2bd68003f976ed5d73ddf6e56425dc73e670e1c9340ad4f7eb18903e8a->enter($__internal_ff41cc2bd68003f976ed5d73ddf6e56425dc73e670e1c9340ad4f7eb18903e8a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/layout.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_ff41cc2bd68003f976ed5d73ddf6e56425dc73e670e1c9340ad4f7eb18903e8a->leave($__internal_ff41cc2bd68003f976ed5d73ddf6e56425dc73e670e1c9340ad4f7eb18903e8a_prof); - - } - - // line 3 - public function block_body($context, array $blocks = array()) - { - $__internal_302695fdb9a24d69c011e6f5eab0c5f8ecad9183416a27d508d5f4efc12953d6 = $this->env->getExtension("native_profiler"); - $__internal_302695fdb9a24d69c011e6f5eab0c5f8ecad9183416a27d508d5f4efc12953d6->enter($__internal_302695fdb9a24d69c011e6f5eab0c5f8ecad9183416a27d508d5f4efc12953d6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); - - // line 4 - echo " - "; - // line 5 - echo $this->env->getExtension('http_kernel')->renderFragment($this->env->getExtension('routing')->getPath("_wdt", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "position" => "normal"))); - echo " - -
- "; - // line 8 - $this->loadTemplate("@WebProfiler/Profiler/header.html.twig", "@WebProfiler/Profiler/layout.html.twig", 8)->display(array()); - // line 9 - echo " -
- -
-
- "; - // line 14 - if ((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile"))) { - // line 15 - echo "
- env->getExtension('routing')->getPath("_profiler_search", array("limit" => 10)); - echo "\">View last 10 - Profile for: - "; - // line 18 - echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "method", array())), "html", null, true); - echo " - "; - // line 19 - if (twig_in_filter(twig_upper_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "method", array())), array(0 => "GET", 1 => "HEAD"))) { - // line 20 - echo " env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); - echo "\" id=\"resume-url\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); - echo " - "; - } else { - // line 22 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); - echo " - "; - } - // line 24 - echo " - by "; - // line 25 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "ip", array()), "html", null, true); - echo " at "; - echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "time", array()), "r"), "html", null, true); - echo " - -
- "; - } - // line 29 - echo " -
- "; - // line 31 - $this->loadTemplate("@WebProfiler/Profiler/base_js.html.twig", "@WebProfiler/Profiler/layout.html.twig", 31)->display($context); - // line 32 - echo " "; - $this->displayBlock('panel', $context, $blocks); - // line 33 - echo "
-
-
- "; - // line 36 - if (array_key_exists("templates", $context)) { - // line 37 - echo " - "; - } - // line 56 - echo " "; - echo $this->env->getExtension('http_kernel')->renderFragment($this->env->getExtension('routing')->getPath("_profiler_search_bar")); - echo " - "; - // line 57 - $this->loadTemplate("@WebProfiler/Profiler/admin.html.twig", "@WebProfiler/Profiler/layout.html.twig", 57)->display(array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")))); - // line 58 - echo "
-
-
-
- - -"; - - $__internal_302695fdb9a24d69c011e6f5eab0c5f8ecad9183416a27d508d5f4efc12953d6->leave($__internal_302695fdb9a24d69c011e6f5eab0c5f8ecad9183416a27d508d5f4efc12953d6_prof); - - } - - // line 32 - public function block_panel($context, array $blocks = array()) - { - $__internal_f73e6557384addbdf1eb7d2be89e783918cb420e28d073ad922b921ca3b00697 = $this->env->getExtension("native_profiler"); - $__internal_f73e6557384addbdf1eb7d2be89e783918cb420e28d073ad922b921ca3b00697->enter($__internal_f73e6557384addbdf1eb7d2be89e783918cb420e28d073ad922b921ca3b00697_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - echo ""; - - $__internal_f73e6557384addbdf1eb7d2be89e783918cb420e28d073ad922b921ca3b00697->leave($__internal_f73e6557384addbdf1eb7d2be89e783918cb420e28d073ad922b921ca3b00697_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 252 => 32, 173 => 58, 171 => 57, 166 => 56, 154 => 46, 148 => 45, 140 => 42, 132 => 41, 129 => 40, 124 => 39, 120 => 38, 117 => 37, 115 => 36, 110 => 33, 107 => 32, 105 => 31, 101 => 29, 92 => 25, 89 => 24, 83 => 22, 75 => 20, 73 => 19, 69 => 18, 64 => 16, 61 => 15, 59 => 14, 52 => 9, 50 => 8, 44 => 5, 41 => 4, 35 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/base.html.twig' %}*/ -/* */ -/* {% block body %}*/ -/* */ -/* {{ render(path('_wdt', { 'token': token, 'position': 'normal' })) }}*/ -/* */ -/*
*/ -/* {% include '@WebProfiler/Profiler/header.html.twig' only %}*/ -/* */ -/*
*/ -/* */ -/*
*/ -/*
*/ -/* {% if profile %}*/ -/*
*/ -/* View last 10*/ -/* Profile for:*/ -/* {{ profile.method|upper }}*/ -/* {% if profile.method|upper in ['GET', 'HEAD'] %}*/ -/* {{ profile.url }}*/ -/* {% else %}*/ -/* {{ profile.url }}*/ -/* {% endif %}*/ -/* */ -/* by {{ profile.ip }} at {{ profile.time|date('r') }}*/ -/* */ -/*
*/ -/* {% endif %}*/ -/* */ -/*
*/ -/* {% include '@WebProfiler/Profiler/base_js.html.twig' %}*/ -/* {% block panel '' %}*/ -/*
*/ -/*
*/ -/* */ -/*
*/ -/*
*/ -/*
*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/9/5/95b13fa511522fa4207320f85b2183749a162047ab3a0d56697fb222ea83870f.php b/app/cache/dev/twig/9/5/95b13fa511522fa4207320f85b2183749a162047ab3a0d56697fb222ea83870f.php deleted file mode 100644 index 0c5fc99..0000000 --- a/app/cache/dev/twig/9/5/95b13fa511522fa4207320f85b2183749a162047ab3a0d56697fb222ea83870f.php +++ /dev/null @@ -1,315 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/twig.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_50fd98a2332108c8f9e0e8064f8b868a5d066dcde14f4b167c464c98a9f7ce19 = $this->env->getExtension("native_profiler"); - $__internal_50fd98a2332108c8f9e0e8064f8b868a5d066dcde14f4b167c464c98a9f7ce19->enter($__internal_50fd98a2332108c8f9e0e8064f8b868a5d066dcde14f4b167c464c98a9f7ce19_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/twig.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_50fd98a2332108c8f9e0e8064f8b868a5d066dcde14f4b167c464c98a9f7ce19->leave($__internal_50fd98a2332108c8f9e0e8064f8b868a5d066dcde14f4b167c464c98a9f7ce19_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_da50d1b3e26b67f6df20dc0a78ddb1bed61273c83e44076982b67725b12151c7 = $this->env->getExtension("native_profiler"); - $__internal_da50d1b3e26b67f6df20dc0a78ddb1bed61273c83e44076982b67725b12151c7->enter($__internal_da50d1b3e26b67f6df20dc0a78ddb1bed61273c83e44076982b67725b12151c7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - $context["time"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array())) ? (sprintf("%0.0f ms", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()))) : ("n/a")); - // line 5 - echo " "; - ob_start(); - // line 6 - echo " \"Twig\" - "; - // line 7 - echo twig_escape_filter($this->env, (isset($context["time"]) ? $context["time"] : $this->getContext($context, "time")), "html", null, true); - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 9 - echo " "; - ob_start(); - // line 10 - echo "
- Render Time - "; - // line 12 - echo twig_escape_filter($this->env, (isset($context["time"]) ? $context["time"] : $this->getContext($context, "time")), "html", null, true); - echo " -
-
- Template Calls - "; - // line 16 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()), "html", null, true); - echo " -
-
- Block Calls - "; - // line 20 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "blockcount", array()), "html", null, true); - echo " -
-
- Macro Calls - "; - // line 24 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "macrocount", array()), "html", null, true); - echo " -
- "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 27 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/twig.html.twig", 27)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - - $__internal_da50d1b3e26b67f6df20dc0a78ddb1bed61273c83e44076982b67725b12151c7->leave($__internal_da50d1b3e26b67f6df20dc0a78ddb1bed61273c83e44076982b67725b12151c7_prof); - - } - - // line 30 - public function block_menu($context, array $blocks = array()) - { - $__internal_0531c665d14c80081ca7b4a945a5e07608259cbce311e94ba8f13aecbc0b3e14 = $this->env->getExtension("native_profiler"); - $__internal_0531c665d14c80081ca7b4a945a5e07608259cbce311e94ba8f13aecbc0b3e14->enter($__internal_0531c665d14c80081ca7b4a945a5e07608259cbce311e94ba8f13aecbc0b3e14_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 31 - echo " - \"Twig\" - Twig - - "; - // line 35 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()), "html", null, true); - echo " - "; - // line 36 - echo twig_escape_filter($this->env, sprintf("%0.0f ms", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array())), "html", null, true); - echo " - - -"; - - $__internal_0531c665d14c80081ca7b4a945a5e07608259cbce311e94ba8f13aecbc0b3e14->leave($__internal_0531c665d14c80081ca7b4a945a5e07608259cbce311e94ba8f13aecbc0b3e14_prof); - - } - - // line 41 - public function block_panel($context, array $blocks = array()) - { - $__internal_e8f3da89ac8170c7818e73491009289a7656586e7448d854a2e00384fb98c2bc = $this->env->getExtension("native_profiler"); - $__internal_e8f3da89ac8170c7818e73491009289a7656586e7448d854a2e00384fb98c2bc->enter($__internal_e8f3da89ac8170c7818e73491009289a7656586e7448d854a2e00384fb98c2bc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 42 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array())) { - // line 43 - echo "

Twig Stats

- - - - - - - - - - - - - - - - - - -
Total Render Time
including sub-requests rendering time
";
-            // line 48
-            echo twig_escape_filter($this->env, sprintf("%0.0f ms", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array())), "html", null, true);
-            echo "
Template Calls
";
-            // line 52
-            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()), "html", null, true);
-            echo "
Block Calls
";
-            // line 56
-            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "blockcount", array()), "html", null, true);
-            echo "
Macro Calls
";
-            // line 60
-            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "macrocount", array()), "html", null, true);
-            echo "
- -

Rendered Templates

- - - - - - - "; - // line 71 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templates", array())); - foreach ($context['_seq'] as $context["template"] => $context["count"]) { - // line 72 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['template'], $context['count'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 77 - echo "
Template NameRender Count
"; - // line 73 - echo twig_escape_filter($this->env, $context["template"], "html", null, true); - echo "
";
-                // line 74
-                echo twig_escape_filter($this->env, $context["count"], "html", null, true);
-                echo "
- -

Rendering Call Graph

- - "; - // line 81 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "htmlcallgraph", array()), "html", null, true); - echo " - "; - } else { - // line 83 - echo "

No Twig templates were rendered for this request.

- "; - } - - $__internal_e8f3da89ac8170c7818e73491009289a7656586e7448d854a2e00384fb98c2bc->leave($__internal_e8f3da89ac8170c7818e73491009289a7656586e7448d854a2e00384fb98c2bc_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/twig.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 207 => 83, 202 => 81, 196 => 77, 187 => 74, 183 => 73, 180 => 72, 176 => 71, 162 => 60, 155 => 56, 148 => 52, 141 => 48, 134 => 43, 131 => 42, 125 => 41, 114 => 36, 110 => 35, 104 => 31, 98 => 30, 90 => 27, 84 => 24, 77 => 20, 70 => 16, 63 => 12, 59 => 10, 56 => 9, 51 => 7, 48 => 6, 45 => 5, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% set time = collector.templatecount ? '%0.0f ms'|format(collector.time) : 'n/a' %}*/ -/* {% set icon %}*/ -/* Twig*/ -/* {{ time }}*/ -/* {% endset %}*/ -/* {% set text %}*/ -/*
*/ -/* Render Time*/ -/* {{ time }}*/ -/*
*/ -/*
*/ -/* Template Calls*/ -/* {{ collector.templatecount }}*/ -/*
*/ -/*
*/ -/* Block Calls*/ -/* {{ collector.blockcount }}*/ -/*
*/ -/*
*/ -/* Macro Calls*/ -/* {{ collector.macrocount }}*/ -/*
*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* Twig*/ -/* Twig*/ -/* */ -/* {{ collector.templatecount }}*/ -/* {{ '%0.0f ms'|format(collector.time) }}*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/* {% if collector.templatecount %}*/ -/*

Twig Stats

*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/*
Total Render Time
including sub-requests rendering time
{{ '%0.0f ms'|format(collector.time) }}
Template Calls
{{ collector.templatecount }}
Block Calls
{{ collector.blockcount }}
Macro Calls
{{ collector.macrocount }}
*/ -/* */ -/*

Rendered Templates

*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% for template, count in collector.templates %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/*
Template NameRender Count
{{ template }}
{{ count }}
*/ -/* */ -/*

Rendering Call Graph

*/ -/* */ -/* {{ collector.htmlcallgraph }}*/ -/* {% else %}*/ -/*

No Twig templates were rendered for this request.

*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/9/f/9fc56123c8775ccf30f41f988abfc30fb4c22110ec7d77f25a5682a36add9591.php b/app/cache/dev/twig/9/f/9fc56123c8775ccf30f41f988abfc30fb4c22110ec7d77f25a5682a36add9591.php deleted file mode 100644 index b91f71e..0000000 --- a/app/cache/dev/twig/9/f/9fc56123c8775ccf30f41f988abfc30fb4c22110ec7d77f25a5682a36add9591.php +++ /dev/null @@ -1,131 +0,0 @@ -parent = false; - - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'stylesheets' => array($this, 'block_stylesheets'), - 'body' => array($this, 'block_body'), - 'javascripts' => array($this, 'block_javascripts'), - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_3ad43a491baaa28b4390f945627c698f12f99367af07fc221699a78522e7bc65 = $this->env->getExtension("native_profiler"); - $__internal_3ad43a491baaa28b4390f945627c698f12f99367af07fc221699a78522e7bc65->enter($__internal_3ad43a491baaa28b4390f945627c698f12f99367af07fc221699a78522e7bc65_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); - - // line 1 - echo " - - - - "; - // line 5 - $this->displayBlock('title', $context, $blocks); - echo " - "; - // line 6 - $this->displayBlock('stylesheets', $context, $blocks); - // line 7 - echo " env, $this->env->getExtension('asset')->getAssetUrl("favicon.ico"), "html", null, true); - echo "\" /> - - - "; - // line 10 - $this->displayBlock('body', $context, $blocks); - // line 11 - echo " "; - $this->displayBlock('javascripts', $context, $blocks); - // line 12 - echo " - -"; - - $__internal_3ad43a491baaa28b4390f945627c698f12f99367af07fc221699a78522e7bc65->leave($__internal_3ad43a491baaa28b4390f945627c698f12f99367af07fc221699a78522e7bc65_prof); - - } - - // line 5 - public function block_title($context, array $blocks = array()) - { - $__internal_791a7a2c0f80e23a2cacd0d688760436c5eb511371e9ab43f60c1717c3e1e0c2 = $this->env->getExtension("native_profiler"); - $__internal_791a7a2c0f80e23a2cacd0d688760436c5eb511371e9ab43f60c1717c3e1e0c2->enter($__internal_791a7a2c0f80e23a2cacd0d688760436c5eb511371e9ab43f60c1717c3e1e0c2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); - - echo "Welcome!"; - - $__internal_791a7a2c0f80e23a2cacd0d688760436c5eb511371e9ab43f60c1717c3e1e0c2->leave($__internal_791a7a2c0f80e23a2cacd0d688760436c5eb511371e9ab43f60c1717c3e1e0c2_prof); - - } - - // line 6 - public function block_stylesheets($context, array $blocks = array()) - { - $__internal_47e453ff5f561e63372b5cf3563c692ffe4a70724f58b89a50c797b1f0b61187 = $this->env->getExtension("native_profiler"); - $__internal_47e453ff5f561e63372b5cf3563c692ffe4a70724f58b89a50c797b1f0b61187->enter($__internal_47e453ff5f561e63372b5cf3563c692ffe4a70724f58b89a50c797b1f0b61187_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); - - - $__internal_47e453ff5f561e63372b5cf3563c692ffe4a70724f58b89a50c797b1f0b61187->leave($__internal_47e453ff5f561e63372b5cf3563c692ffe4a70724f58b89a50c797b1f0b61187_prof); - - } - - // line 10 - public function block_body($context, array $blocks = array()) - { - $__internal_b1b39af3bb3f1871a080311792e607bbe152dcc19bbefe8aad469d0c1b6517ac = $this->env->getExtension("native_profiler"); - $__internal_b1b39af3bb3f1871a080311792e607bbe152dcc19bbefe8aad469d0c1b6517ac->enter($__internal_b1b39af3bb3f1871a080311792e607bbe152dcc19bbefe8aad469d0c1b6517ac_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); - - - $__internal_b1b39af3bb3f1871a080311792e607bbe152dcc19bbefe8aad469d0c1b6517ac->leave($__internal_b1b39af3bb3f1871a080311792e607bbe152dcc19bbefe8aad469d0c1b6517ac_prof); - - } - - // line 11 - public function block_javascripts($context, array $blocks = array()) - { - $__internal_2c8e8561f32b527f4dfb1f9319c1b3c47f83fe39ab3d9bc4d36274d46055e817 = $this->env->getExtension("native_profiler"); - $__internal_2c8e8561f32b527f4dfb1f9319c1b3c47f83fe39ab3d9bc4d36274d46055e817->enter($__internal_2c8e8561f32b527f4dfb1f9319c1b3c47f83fe39ab3d9bc4d36274d46055e817_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); - - - $__internal_2c8e8561f32b527f4dfb1f9319c1b3c47f83fe39ab3d9bc4d36274d46055e817->leave($__internal_2c8e8561f32b527f4dfb1f9319c1b3c47f83fe39ab3d9bc4d36274d46055e817_prof); - - } - - public function getTemplateName() - { - return "base.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 93 => 11, 82 => 10, 71 => 6, 59 => 5, 50 => 12, 47 => 11, 45 => 10, 38 => 7, 36 => 6, 32 => 5, 26 => 1,); - } -} -/* */ -/* */ -/* */ -/* */ -/* {% block title %}Welcome!{% endblock %}*/ -/* {% block stylesheets %}{% endblock %}*/ -/* */ -/* */ -/* */ -/* {% block body %}{% endblock %}*/ -/* {% block javascripts %}{% endblock %}*/ -/* */ -/* */ -/* */ diff --git a/app/cache/dev/twig/a/6/a601be6883968cd258cb720d2755bfa11e5ec83cf641077c9ed5fe0797344ac8.php b/app/cache/dev/twig/a/6/a601be6883968cd258cb720d2755bfa11e5ec83cf641077c9ed5fe0797344ac8.php deleted file mode 100644 index 30aaf68..0000000 --- a/app/cache/dev/twig/a/6/a601be6883968cd258cb720d2755bfa11e5ec83cf641077c9ed5fe0797344ac8.php +++ /dev/null @@ -1,149 +0,0 @@ -parent = false; - - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'head' => array($this, 'block_head'), - 'body' => array($this, 'block_body'), - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_099604236dd45b9d864720323804f9ce00bd16b32961f7837c6f44109f243076 = $this->env->getExtension("native_profiler"); - $__internal_099604236dd45b9d864720323804f9ce00bd16b32961f7837c6f44109f243076->enter($__internal_099604236dd45b9d864720323804f9ce00bd16b32961f7837c6f44109f243076_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base.html.twig")); - - // line 1 - echo " - - - env, $this->env->getCharset(), "html", null, true); - echo "\" /> - - "; - // line 6 - $this->displayBlock('title', $context, $blocks); - echo " - - - "; - // line 11 - $this->displayBlock('head', $context, $blocks); - // line 16 - echo " - - - "; - // line 21 - $this->displayBlock('body', $context, $blocks); - // line 22 - echo " - -"; - - $__internal_099604236dd45b9d864720323804f9ce00bd16b32961f7837c6f44109f243076->leave($__internal_099604236dd45b9d864720323804f9ce00bd16b32961f7837c6f44109f243076_prof); - - } - - // line 6 - public function block_title($context, array $blocks = array()) - { - $__internal_5237c1d686cb40edd0a4c64c1677f210ee8f04f5907c3baa765a6a2430873e88 = $this->env->getExtension("native_profiler"); - $__internal_5237c1d686cb40edd0a4c64c1677f210ee8f04f5907c3baa765a6a2430873e88->enter($__internal_5237c1d686cb40edd0a4c64c1677f210ee8f04f5907c3baa765a6a2430873e88_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); - - echo "Profiler"; - - $__internal_5237c1d686cb40edd0a4c64c1677f210ee8f04f5907c3baa765a6a2430873e88->leave($__internal_5237c1d686cb40edd0a4c64c1677f210ee8f04f5907c3baa765a6a2430873e88_prof); - - } - - // line 11 - public function block_head($context, array $blocks = array()) - { - $__internal_dd90d1f8373cb71bdbb663d77b6c150944b55e07ff017ddbb56c48ef577a68e1 = $this->env->getExtension("native_profiler"); - $__internal_dd90d1f8373cb71bdbb663d77b6c150944b55e07ff017ddbb56c48ef577a68e1->enter($__internal_dd90d1f8373cb71bdbb663d77b6c150944b55e07ff017ddbb56c48ef577a68e1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); - - // line 12 - echo " - "; - - $__internal_dd90d1f8373cb71bdbb663d77b6c150944b55e07ff017ddbb56c48ef577a68e1->leave($__internal_dd90d1f8373cb71bdbb663d77b6c150944b55e07ff017ddbb56c48ef577a68e1_prof); - - } - - // line 21 - public function block_body($context, array $blocks = array()) - { - $__internal_66fbb4c6cae0f3e02a67773be37de886776bc5d9a34b1ae484ac75863b932b08 = $this->env->getExtension("native_profiler"); - $__internal_66fbb4c6cae0f3e02a67773be37de886776bc5d9a34b1ae484ac75863b932b08->enter($__internal_66fbb4c6cae0f3e02a67773be37de886776bc5d9a34b1ae484ac75863b932b08_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); - - echo ""; - - $__internal_66fbb4c6cae0f3e02a67773be37de886776bc5d9a34b1ae484ac75863b932b08->leave($__internal_66fbb4c6cae0f3e02a67773be37de886776bc5d9a34b1ae484ac75863b932b08_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Profiler/base.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 100 => 21, 92 => 14, 90 => 13, 87 => 12, 81 => 11, 69 => 6, 60 => 22, 58 => 21, 53 => 18, 51 => 17, 48 => 16, 46 => 11, 43 => 10, 41 => 9, 35 => 6, 30 => 4, 25 => 1,); - } -} -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% block title 'Profiler' %}*/ -/* */ -/* */ -/* {% block head %}*/ -/* */ -/* {% endblock %}*/ -/* */ -/* */ -/* */ -/* {% block body '' %}*/ -/* */ -/* */ -/* */ diff --git a/app/cache/dev/twig/a/7/a77706592abf6d2d52a346b8a4aff513479cd31683db3fc6e233f772ab32cdd7.php b/app/cache/dev/twig/a/7/a77706592abf6d2d52a346b8a4aff513479cd31683db3fc6e233f772ab32cdd7.php deleted file mode 100644 index 2b8896f..0000000 --- a/app/cache/dev/twig/a/7/a77706592abf6d2d52a346b8a4aff513479cd31683db3fc6e233f772ab32cdd7.php +++ /dev/null @@ -1,1376 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/time.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - 'panelContent' => array($this, 'block_panelContent'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_bce8162a8ccdc6edb9ce083af2c7746bd00f839c31ed3b63784244e439635f70 = $this->env->getExtension("native_profiler"); - $__internal_bce8162a8ccdc6edb9ce083af2c7746bd00f839c31ed3b63784244e439635f70->enter($__internal_bce8162a8ccdc6edb9ce083af2c7746bd00f839c31ed3b63784244e439635f70_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/time.html.twig")); - - // line 3 - $context["__internal_0270a97a9cd01a29254dabf92c180ba0e0e42b2335d53519540d0d39cd031b53"] = $this; - // line 5 - if ( !array_key_exists("colors", $context)) { - // line 6 - $context["colors"] = array("default" => "#aacd4e", "section" => "#666", "event_listener" => "#3dd", "event_listener_loading" => "#add", "template" => "#dd3", "doctrine" => "#d3d", "propel" => "#f4d", "child_sections" => "#eed"); - } - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_bce8162a8ccdc6edb9ce083af2c7746bd00f839c31ed3b63784244e439635f70->leave($__internal_bce8162a8ccdc6edb9ce083af2c7746bd00f839c31ed3b63784244e439635f70_prof); - - } - - // line 18 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_10789645f6e199d6722009b4ded19180a9d8cf163935d735dcc49d2973004a5e = $this->env->getExtension("native_profiler"); - $__internal_10789645f6e199d6722009b4ded19180a9d8cf163935d735dcc49d2973004a5e->enter($__internal_10789645f6e199d6722009b4ded19180a9d8cf163935d735dcc49d2973004a5e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 19 - echo " "; - $context["duration"] = ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) ? (sprintf("%.0f ms", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array()))) : ("n/a")); - // line 20 - echo " "; - ob_start(); - // line 21 - echo " - "; - // line 22 - echo twig_escape_filter($this->env, (isset($context["duration"]) ? $context["duration"] : $this->getContext($context, "duration")), "html", null, true); - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 24 - echo " "; - ob_start(); - // line 25 - echo "
- Total time - "; - // line 27 - echo twig_escape_filter($this->env, (isset($context["duration"]) ? $context["duration"] : $this->getContext($context, "duration")), "html", null, true); - echo " -
- "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 30 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/time.html.twig", 30)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - - $__internal_10789645f6e199d6722009b4ded19180a9d8cf163935d735dcc49d2973004a5e->leave($__internal_10789645f6e199d6722009b4ded19180a9d8cf163935d735dcc49d2973004a5e_prof); - - } - - // line 33 - public function block_menu($context, array $blocks = array()) - { - $__internal_5e955c337984b75d2b9f29bdfbe39e991460587dbf4171c1065ff2a27be86a10 = $this->env->getExtension("native_profiler"); - $__internal_5e955c337984b75d2b9f29bdfbe39e991460587dbf4171c1065ff2a27be86a10->enter($__internal_5e955c337984b75d2b9f29bdfbe39e991460587dbf4171c1065ff2a27be86a10_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 34 - echo " - - Timeline - -"; - - $__internal_5e955c337984b75d2b9f29bdfbe39e991460587dbf4171c1065ff2a27be86a10->leave($__internal_5e955c337984b75d2b9f29bdfbe39e991460587dbf4171c1065ff2a27be86a10_prof); - - } - - // line 40 - public function block_panel($context, array $blocks = array()) - { - $__internal_83284c04f5952513603390539df7bdf3768904b4a36e28827e9be6406ccf2a2f = $this->env->getExtension("native_profiler"); - $__internal_83284c04f5952513603390539df7bdf3768904b4a36e28827e9be6406ccf2a2f->enter($__internal_83284c04f5952513603390539df7bdf3768904b4a36e28827e9be6406ccf2a2f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 41 - echo "

Timeline

- "; - // line 42 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) { - // line 43 - echo " "; - $this->displayBlock("panelContent", $context, $blocks); - echo " - "; - } else { - // line 45 - echo "

- No timing events have been recorded. Are you sure that debugging is enabled in the kernel? -

- "; - } - - $__internal_83284c04f5952513603390539df7bdf3768904b4a36e28827e9be6406ccf2a2f->leave($__internal_83284c04f5952513603390539df7bdf3768904b4a36e28827e9be6406ccf2a2f_prof); - - } - - // line 51 - public function block_panelContent($context, array $blocks = array()) - { - $__internal_abaa8960244ebf5ffb96cc78096d0f7200f7dd8fdcccb9e5851a99b9e0c61f90 = $this->env->getExtension("native_profiler"); - $__internal_abaa8960244ebf5ffb96cc78096d0f7200f7dd8fdcccb9e5851a99b9e0c61f90->enter($__internal_abaa8960244ebf5ffb96cc78096d0f7200f7dd8fdcccb9e5851a99b9e0c61f90_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panelContent")); - - // line 52 - echo "
- - - - - - - - - - - - - - -
Total time"; - // line 57 - echo twig_escape_filter($this->env, sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array())), "html", null, true); - echo " ms
Initialization time"; - // line 61 - echo twig_escape_filter($this->env, sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inittime", array())), "html", null, true); - echo " ms
Threshold ms
-
- -

- "; - // line 71 - echo (($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array())) ? ("Request") : ("Main Request")); - echo " - - - "; - // line 73 - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), "__section__", array()), "duration", array()), "html", null, true); - echo " ms - "; - // line 74 - if ($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array())) { - // line 75 - echo " - env, $this->env->getExtension('routing')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()), "panel" => "time")), "html", null, true); - echo "\">parent - "; - } - // line 77 - echo " -

- - "; - // line 80 - echo $context["__internal_0270a97a9cd01a29254dabf92c180ba0e0e42b2335d53519540d0d39cd031b53"]->getdisplay_timeline(("timeline_" . (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))), $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), (isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); - echo " - - "; - // line 82 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array()))) { - // line 83 - echo " "; - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); - foreach ($context['_seq'] as $context["_key"] => $context["child"]) { - // line 84 - echo " "; - $context["events"] = $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "time"), "method"), "events", array()); - // line 85 - echo "

- Sub-request \"env, $this->env->getExtension('routing')->getPath("_profiler", array("token" => $this->getAttribute($context["child"], "token", array()), "panel" => "time")), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "requestattributes", array()), "get", array(0 => "_controller"), "method"), "html", null, true); - echo "\" - - "; - // line 87 - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), "__section__", array()), "duration", array()), "html", null, true); - echo " ms -

- - "; - // line 90 - echo $context["__internal_0270a97a9cd01a29254dabf92c180ba0e0e42b2335d53519540d0d39cd031b53"]->getdisplay_timeline(("timeline_" . $this->getAttribute($context["child"], "token", array())), (isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), (isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); - echo " - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 92 - echo " "; - } - // line 93 - echo " - -"; - - $__internal_abaa8960244ebf5ffb96cc78096d0f7200f7dd8fdcccb9e5851a99b9e0c61f90->leave($__internal_abaa8960244ebf5ffb96cc78096d0f7200f7dd8fdcccb9e5851a99b9e0c61f90_prof); - - } - - // line 445 - public function getdump_request_data($__token__ = null, $__profile__ = null, $__events__ = null, $__origin__ = null) - { - $context = $this->env->mergeGlobals(array( - "token" => $__token__, - "profile" => $__profile__, - "events" => $__events__, - "origin" => $__origin__, - "varargs" => func_num_args() > 4 ? array_slice(func_get_args(), 4) : array(), - )); - - $blocks = array(); - - ob_start(); - try { - $__internal_3a9603221461d0b5247b1432d9e997e2234c5d3fafc615f2db4a9ed8dcd66668 = $this->env->getExtension("native_profiler"); - $__internal_3a9603221461d0b5247b1432d9e997e2234c5d3fafc615f2db4a9ed8dcd66668->enter($__internal_3a9603221461d0b5247b1432d9e997e2234c5d3fafc615f2db4a9ed8dcd66668_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_request_data")); - - // line 447 - $context["__internal_58ae7847696a3cbcd4c7ecc6a79e9fe491b24bb4a538d9b4e62ec4b1ea7b78f7"] = $this; - // line 448 - echo " { - \"id\": \""; - // line 449 - echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "js", null, true); - echo "\", - \"left\": "; - // line 450 - echo twig_escape_filter($this->env, sprintf("%F", ($this->getAttribute($this->getAttribute((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), "__section__", array()), "origin", array()) - (isset($context["origin"]) ? $context["origin"] : $this->getContext($context, "origin")))), "js", null, true); - echo ", - \"events\": [ -"; - // line 452 - echo $context["__internal_58ae7847696a3cbcd4c7ecc6a79e9fe491b24bb4a538d9b4e62ec4b1ea7b78f7"]->getdump_events((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events"))); - echo " - ] - } -"; - - $__internal_3a9603221461d0b5247b1432d9e997e2234c5d3fafc615f2db4a9ed8dcd66668->leave($__internal_3a9603221461d0b5247b1432d9e997e2234c5d3fafc615f2db4a9ed8dcd66668_prof); - - } catch (Exception $e) { - ob_end_clean(); - - throw $e; - } - - return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - - // line 458 - public function getdump_events($__events__ = null) - { - $context = $this->env->mergeGlobals(array( - "events" => $__events__, - "varargs" => func_num_args() > 1 ? array_slice(func_get_args(), 1) : array(), - )); - - $blocks = array(); - - ob_start(); - try { - $__internal_be3f49cb8de4c0d99d7d3ed5f2aba1abcc4471f7900befa4c8cab4fc865920cd = $this->env->getExtension("native_profiler"); - $__internal_be3f49cb8de4c0d99d7d3ed5f2aba1abcc4471f7900befa4c8cab4fc865920cd->enter($__internal_be3f49cb8de4c0d99d7d3ed5f2aba1abcc4471f7900befa4c8cab4fc865920cd_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_events")); - - // line 460 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events"))); - $context['loop'] = array( - 'parent' => $context['_parent'], - 'index0' => 0, - 'index' => 1, - 'first' => true, - ); - if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { - $length = count($context['_seq']); - $context['loop']['revindex0'] = $length - 1; - $context['loop']['revindex'] = $length; - $context['loop']['length'] = $length; - $context['loop']['last'] = 1 === $length; - } - foreach ($context['_seq'] as $context["name"] => $context["event"]) { - // line 461 - if (("__section__" != $context["name"])) { - // line 462 - echo " { - \"name\": \""; - // line 463 - echo twig_escape_filter($this->env, $context["name"], "js", null, true); - echo "\", - \"category\": \""; - // line 464 - echo twig_escape_filter($this->env, $this->getAttribute($context["event"], "category", array()), "js", null, true); - echo "\", - \"origin\": "; - // line 465 - echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "origin", array())), "js", null, true); - echo ", - \"starttime\": "; - // line 466 - echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "starttime", array())), "js", null, true); - echo ", - \"endtime\": "; - // line 467 - echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "endtime", array())), "js", null, true); - echo ", - \"duration\": "; - // line 468 - echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "duration", array())), "js", null, true); - echo ", - \"memory\": "; - // line 469 - echo twig_escape_filter($this->env, sprintf("%.1F", (($this->getAttribute($context["event"], "memory", array()) / 1024) / 1024)), "js", null, true); - echo ", - \"periods\": ["; - // line 471 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["event"], "periods", array())); - $context['loop'] = array( - 'parent' => $context['_parent'], - 'index0' => 0, - 'index' => 1, - 'first' => true, - ); - if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { - $length = count($context['_seq']); - $context['loop']['revindex0'] = $length - 1; - $context['loop']['revindex'] = $length; - $context['loop']['length'] = $length; - $context['loop']['last'] = 1 === $length; - } - foreach ($context['_seq'] as $context["_key"] => $context["period"]) { - // line 472 - echo "{\"start\": "; - echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["period"], "starttime", array())), "js", null, true); - echo ", \"end\": "; - echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["period"], "endtime", array())), "js", null, true); - echo "}"; - echo (($this->getAttribute($context["loop"], "last", array())) ? ("") : (", ")); - ++$context['loop']['index0']; - ++$context['loop']['index']; - $context['loop']['first'] = false; - if (isset($context['loop']['length'])) { - --$context['loop']['revindex0']; - --$context['loop']['revindex']; - $context['loop']['last'] = 0 === $context['loop']['revindex0']; - } - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['period'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 474 - echo "] - }"; - // line 475 - echo (($this->getAttribute($context["loop"], "last", array())) ? ("") : (",")); - echo " -"; - } - ++$context['loop']['index0']; - ++$context['loop']['index']; - $context['loop']['first'] = false; - if (isset($context['loop']['length'])) { - --$context['loop']['revindex0']; - --$context['loop']['revindex']; - $context['loop']['last'] = 0 === $context['loop']['revindex0']; - } - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['name'], $context['event'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - - $__internal_be3f49cb8de4c0d99d7d3ed5f2aba1abcc4471f7900befa4c8cab4fc865920cd->leave($__internal_be3f49cb8de4c0d99d7d3ed5f2aba1abcc4471f7900befa4c8cab4fc865920cd_prof); - - } catch (Exception $e) { - ob_end_clean(); - - throw $e; - } - - return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - - // line 481 - public function getdisplay_timeline($__id__ = null, $__events__ = null, $__colors__ = null) - { - $context = $this->env->mergeGlobals(array( - "id" => $__id__, - "events" => $__events__, - "colors" => $__colors__, - "varargs" => func_num_args() > 3 ? array_slice(func_get_args(), 3) : array(), - )); - - $blocks = array(); - - ob_start(); - try { - $__internal_02aba250520c9c9bb57734b704f333dcf6def584967de1293217bb2034f54de0 = $this->env->getExtension("native_profiler"); - $__internal_02aba250520c9c9bb57734b704f333dcf6def584967de1293217bb2034f54de0->enter($__internal_02aba250520c9c9bb57734b704f333dcf6def584967de1293217bb2034f54de0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "display_timeline")); - - // line 482 - echo "
-
- "; - // line 484 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); - foreach ($context['_seq'] as $context["category"] => $context["color"]) { - // line 485 - echo " env, $context["color"], "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $context["category"], "html", null, true); - echo " - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['category'], $context['color'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 487 - echo "
- env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); - echo "\" class=\"timeline\"> -
-"; - - $__internal_02aba250520c9c9bb57734b704f333dcf6def584967de1293217bb2034f54de0->leave($__internal_02aba250520c9c9bb57734b704f333dcf6def584967de1293217bb2034f54de0_prof); - - } catch (Exception $e) { - ob_end_clean(); - - throw $e; - } - - return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/time.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 855 => 488, 852 => 487, 841 => 485, 837 => 484, 833 => 482, 816 => 481, 787 => 475, 784 => 474, 765 => 472, 748 => 471, 744 => 469, 740 => 468, 736 => 467, 732 => 466, 728 => 465, 724 => 464, 720 => 463, 717 => 462, 715 => 461, 698 => 460, 683 => 458, 665 => 452, 660 => 450, 656 => 449, 653 => 448, 651 => 447, 633 => 445, 625 => 442, 591 => 410, 573 => 407, 556 => 406, 553 => 405, 551 => 404, 546 => 402, 541 => 400, 274 => 136, 230 => 94, 227 => 93, 224 => 92, 216 => 90, 210 => 87, 204 => 86, 201 => 85, 198 => 84, 193 => 83, 191 => 82, 186 => 80, 181 => 77, 175 => 75, 173 => 74, 169 => 73, 164 => 71, 151 => 61, 144 => 57, 137 => 52, 131 => 51, 120 => 45, 114 => 43, 112 => 42, 109 => 41, 103 => 40, 92 => 34, 86 => 33, 78 => 30, 72 => 27, 68 => 25, 65 => 24, 60 => 22, 57 => 21, 54 => 20, 51 => 19, 45 => 18, 38 => 1, 35 => 6, 33 => 5, 31 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% from _self import display_timeline, dump_request_data %}*/ -/* */ -/* {% if colors is not defined %}*/ -/* {% set colors = {*/ -/* 'default': '#aacd4e',*/ -/* 'section': '#666',*/ -/* 'event_listener': '#3dd',*/ -/* 'event_listener_loading': '#add',*/ -/* 'template': '#dd3',*/ -/* 'doctrine': '#d3d',*/ -/* 'propel': '#f4d',*/ -/* 'child_sections': '#eed',*/ -/* } %}*/ -/* {% endif %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% set duration = collector.events|length ? '%.0f ms'|format(collector.duration) : 'n/a' %}*/ -/* {% set icon %}*/ -/* */ -/* {{ duration }}*/ -/* {% endset %}*/ -/* {% set text %}*/ -/*
*/ -/* Total time*/ -/* {{ duration }}*/ -/*
*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Timeline*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

Timeline

*/ -/* {% if collector.events|length %}*/ -/* {{ block('panelContent') }}*/ -/* {% else %}*/ -/*

*/ -/* No timing events have been recorded. Are you sure that debugging is enabled in the kernel?*/ -/*

*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% block panelContent %}*/ -/*
*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/*
Total time{{ '%.0f'|format(collector.duration) }} ms
Initialization time{{ '%.0f'|format(collector.inittime) }} ms
Threshold ms
*/ -/*
*/ -/* */ -/*

*/ -/* {{ profile.parent ? "Request" : "Main Request" }}*/ -/* */ -/* - {{ collector.events.__section__.duration }} ms*/ -/* {% if profile.parent %}*/ -/* - parent*/ -/* {% endif %}*/ -/* */ -/*

*/ -/* */ -/* {{ display_timeline('timeline_' ~ token, collector.events, colors) }}*/ -/* */ -/* {% if profile.children|length %}*/ -/* {% for child in profile.children %}*/ -/* {% set events = child.getcollector('time').events %}*/ -/*

*/ -/* Sub-request "{{ child.getcollector('request').requestattributes.get('_controller') }}"*/ -/* - {{ events.__section__.duration }} ms*/ -/*

*/ -/* */ -/* {{ display_timeline('timeline_' ~ child.token, events, colors) }}*/ -/* {% endfor %}*/ -/* {% endif %}*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ -/* {% macro dump_request_data(token, profile, events, origin) %}*/ -/* {% autoescape 'js' %}*/ -/* {% from _self import dump_events %}*/ -/* {*/ -/* "id": "{{ token }}",*/ -/* "left": {{ "%F"|format(events.__section__.origin - origin) }},*/ -/* "events": [*/ -/* {{ dump_events(events) }}*/ -/* ]*/ -/* }*/ -/* {% endautoescape %}*/ -/* {% endmacro %}*/ -/* */ -/* {% macro dump_events(events) %}*/ -/* {% autoescape 'js' %}*/ -/* {% for name, event in events %}*/ -/* {% if '__section__' != name %}*/ -/* {*/ -/* "name": "{{ name }}",*/ -/* "category": "{{ event.category }}",*/ -/* "origin": {{ "%F"|format(event.origin) }},*/ -/* "starttime": {{ "%F"|format(event.starttime) }},*/ -/* "endtime": {{ "%F"|format(event.endtime) }},*/ -/* "duration": {{ "%F"|format(event.duration) }},*/ -/* "memory": {{ "%.1F"|format(event.memory / 1024 / 1024) }},*/ -/* "periods": [*/ -/* {%- for period in event.periods -%}*/ -/* {"start": {{ "%F"|format(period.starttime) }}, "end": {{ "%F"|format(period.endtime) }}}{{ loop.last ? '' : ', ' }}*/ -/* {%- endfor -%}*/ -/* ]*/ -/* }{{ loop.last ? '' : ',' }}*/ -/* {% endif %}*/ -/* {% endfor %}*/ -/* {% endautoescape %}*/ -/* {% endmacro %}*/ -/* */ -/* {% macro display_timeline(id, events, colors) %}*/ -/*
*/ -/*
*/ -/* {% for category, color in colors %}*/ -/* {{ category }}*/ -/* {% endfor %}*/ -/*
*/ -/* */ -/*
*/ -/* {% endmacro %}*/ -/* */ diff --git a/app/cache/dev/twig/a/9/a93618f07c804e9ea3c5972fc3bc5dd53ce58f4f6a8430598881f01bda3a486a.php b/app/cache/dev/twig/a/9/a93618f07c804e9ea3c5972fc3bc5dd53ce58f4f6a8430598881f01bda3a486a.php deleted file mode 100644 index 9be1317..0000000 --- a/app/cache/dev/twig/a/9/a93618f07c804e9ea3c5972fc3bc5dd53ce58f4f6a8430598881f01bda3a486a.php +++ /dev/null @@ -1,416 +0,0 @@ -parent = $this->loadTemplate("WebProfilerBundle:Profiler:layout.html.twig", "@Swiftmailer/Collector/swiftmailer.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "WebProfilerBundle:Profiler:layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_607662bba19e1f024c29fc3f97f188207113ae67f9b7f8c9b088904a5af86213 = $this->env->getExtension("native_profiler"); - $__internal_607662bba19e1f024c29fc3f97f188207113ae67f9b7f8c9b088904a5af86213->enter($__internal_607662bba19e1f024c29fc3f97f188207113ae67f9b7f8c9b088904a5af86213_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Swiftmailer/Collector/swiftmailer.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_607662bba19e1f024c29fc3f97f188207113ae67f9b7f8c9b088904a5af86213->leave($__internal_607662bba19e1f024c29fc3f97f188207113ae67f9b7f8c9b088904a5af86213_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_9e54f4fc1e9d9514c958d52cd792a6d1cd410dfe37e9999ae6506e4c184dc25a = $this->env->getExtension("native_profiler"); - $__internal_9e54f4fc1e9d9514c958d52cd792a6d1cd410dfe37e9999ae6506e4c184dc25a->enter($__internal_9e54f4fc1e9d9514c958d52cd792a6d1cd410dfe37e9999ae6506e4c184dc25a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array())) { - // line 5 - echo " "; - ob_start(); - // line 6 - echo " \"Swiftmailer\" - "; - // line 7 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 9 - echo " "; - ob_start(); - // line 10 - echo "
- Messages - "; - // line 12 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); - echo " -
- "; - // line 14 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); - foreach ($context['_seq'] as $context["_key"] => $context["name"]) { - // line 15 - echo "
-
- "; - // line 17 - echo twig_escape_filter($this->env, $context["name"], "html", null, true); - echo " - "; - // line 18 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); - echo " -
-
- Is spooled ? - "; - // line 22 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("yes") : ("no")); - echo " -
- "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 25 - echo " - "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 27 - echo " "; - $this->loadTemplate("WebProfilerBundle:Profiler:toolbar_item.html.twig", "@Swiftmailer/Collector/swiftmailer.html.twig", 27)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - // line 28 - echo " "; - } - - $__internal_9e54f4fc1e9d9514c958d52cd792a6d1cd410dfe37e9999ae6506e4c184dc25a->leave($__internal_9e54f4fc1e9d9514c958d52cd792a6d1cd410dfe37e9999ae6506e4c184dc25a_prof); - - } - - // line 31 - public function block_menu($context, array $blocks = array()) - { - $__internal_f0c00290d3f165bf17265e43b4e20457c8228071533135055aa0f103f0f30f12 = $this->env->getExtension("native_profiler"); - $__internal_f0c00290d3f165bf17265e43b4e20457c8228071533135055aa0f103f0f30f12->enter($__internal_f0c00290d3f165bf17265e43b4e20457c8228071533135055aa0f103f0f30f12_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 32 - echo " - \"Configuration\" - E-Mails - - "; - // line 36 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); - echo " - - -"; - - $__internal_f0c00290d3f165bf17265e43b4e20457c8228071533135055aa0f103f0f30f12->leave($__internal_f0c00290d3f165bf17265e43b4e20457c8228071533135055aa0f103f0f30f12_prof); - - } - - // line 41 - public function block_panel($context, array $blocks = array()) - { - $__internal_8a9a7c1441077a021e72f8ff8c88fec34063eebeb35995ecce8a55127d2fe4fe = $this->env->getExtension("native_profiler"); - $__internal_8a9a7c1441077a021e72f8ff8c88fec34063eebeb35995ecce8a55127d2fe4fe->enter($__internal_8a9a7c1441077a021e72f8ff8c88fec34063eebeb35995ecce8a55127d2fe4fe_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 42 - echo "

Messages

- - - - - - - - - - "; - // line 52 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); - foreach ($context['_seq'] as $context["_key"] => $context["name"]) { - // line 53 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 58 - echo " -
MailerMessages
"; - // line 54 - echo twig_escape_filter($this->env, $context["name"], "html", null, true); - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isDefaultMailer", array(0 => $context["name"]), "method")) ? (" (default mailer)") : ("")); - echo ""; - // line 55 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); - echo " "; - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("spooled") : ("sent")); - echo "
- - "; - // line 61 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); - foreach ($context['_seq'] as $context["_key"] => $context["name"]) { - // line 62 - echo "

Mailer "; - echo twig_escape_filter($this->env, $context["name"], "html", null, true); - echo ""; - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isDefaultMailer", array(0 => $context["name"]), "method")) ? (" (default mailer)") : ("")); - echo "

- - "; - // line 64 - if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messages", array(0 => $context["name"]), "method")) { - // line 65 - echo "

- No message sent. -

- "; - } else { - // line 69 - echo "
    - "; - // line 70 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messages", array(0 => $context["name"]), "method")); - $context['loop'] = array( - 'parent' => $context['_parent'], - 'index0' => 0, - 'index' => 1, - 'first' => true, - ); - if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { - $length = count($context['_seq']); - $context['loop']['revindex0'] = $length - 1; - $context['loop']['revindex'] = $length; - $context['loop']['length'] = $length; - $context['loop']['last'] = 1 === $length; - } - foreach ($context['_seq'] as $context["_key"] => $context["message"]) { - // line 71 - echo "
  • env, twig_cycle(array(0 => "odd", 1 => "even"), $this->getAttribute($context["loop"], "index", array())), "html", null, true); - echo "\"> - "; - // line 72 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute($context["message"], "headers", array()), "all", array())); - foreach ($context['_seq'] as $context["_key"] => $context["header"]) { - // line 73 - echo "
    ";
    -                        echo twig_escape_filter($this->env, $context["header"], "html", null, true);
    -                        echo "
    - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['header'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 75 - echo "
    ";
    -                    // line 76
    -                    if (($this->getAttribute((isset($context["messagePart"]) ? $context["messagePart"] : null), "charset", array(), "any", true, true) && $this->getAttribute($context["message"], "charset", array()))) {
    -                        // line 77
    -                        echo twig_escape_filter($this->env, twig_convert_encoding(twig_escape_filter($this->env, $this->getAttribute($context["message"], "body", array()), "html", $this->getAttribute($context["message"], "charset", array())), "UTF-8", $this->getAttribute($context["message"], "charset", array())), "html", null, true);
    -                    } else {
    -                        // line 79
    -                        echo twig_escape_filter($this->env, $this->getAttribute($context["message"], "body", array()), "html");
    -                    }
    -                    // line 81
    -                    echo "
    - "; - // line 82 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["message"], "children", array())); - foreach ($context['_seq'] as $context["_key"] => $context["messagePart"]) { - if ((($this->getAttribute($context["messagePart"], "contentType", array()) == "text/plain") || ($this->getAttribute($context["messagePart"], "contentType", array()) == "text/html"))) { - // line 83 - echo "

    Alternative part

    -
    ";
    -                            // line 85
    -                            if ($this->getAttribute($context["messagePart"], "charset", array())) {
    -                                // line 86
    -                                echo twig_escape_filter($this->env, twig_convert_encoding(twig_escape_filter($this->env, $this->getAttribute($context["messagePart"], "body", array()), "html", $this->getAttribute($context["messagePart"], "charset", array())), "UTF-8", $this->getAttribute($context["messagePart"], "charset", array())), "html", null, true);
    -                            } else {
    -                                // line 88
    -                                echo twig_escape_filter($this->env, $this->getAttribute($context["messagePart"], "body", array()), "html");
    -                            }
    -                            // line 90
    -                            echo "
    - "; - } - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['messagePart'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 92 - echo "
  • - "; - ++$context['loop']['index0']; - ++$context['loop']['index']; - $context['loop']['first'] = false; - if (isset($context['loop']['length'])) { - --$context['loop']['revindex0']; - --$context['loop']['revindex']; - $context['loop']['last'] = 0 === $context['loop']['revindex0']; - } - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['message'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 94 - echo "
- "; - } - // line 96 - echo " "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - - $__internal_8a9a7c1441077a021e72f8ff8c88fec34063eebeb35995ecce8a55127d2fe4fe->leave($__internal_8a9a7c1441077a021e72f8ff8c88fec34063eebeb35995ecce8a55127d2fe4fe_prof); - - } - - public function getTemplateName() - { - return "@Swiftmailer/Collector/swiftmailer.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 294 => 96, 290 => 94, 275 => 92, 267 => 90, 264 => 88, 261 => 86, 259 => 85, 256 => 83, 251 => 82, 248 => 81, 245 => 79, 242 => 77, 240 => 76, 238 => 75, 229 => 73, 225 => 72, 220 => 71, 203 => 70, 200 => 69, 194 => 65, 192 => 64, 184 => 62, 180 => 61, 175 => 58, 164 => 55, 159 => 54, 156 => 53, 152 => 52, 140 => 42, 134 => 41, 123 => 36, 117 => 32, 111 => 31, 103 => 28, 100 => 27, 96 => 25, 87 => 22, 80 => 18, 76 => 17, 72 => 15, 68 => 14, 63 => 12, 59 => 10, 56 => 9, 51 => 7, 48 => 6, 45 => 5, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends 'WebProfilerBundle:Profiler:layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% if collector.messageCount %}*/ -/* {% set icon %}*/ -/* Swiftmailer*/ -/* {{ collector.messageCount }}*/ -/* {% endset %}*/ -/* {% set text %}*/ -/*
*/ -/* Messages*/ -/* {{ collector.messageCount }}*/ -/*
*/ -/* {% for name in collector.mailers %}*/ -/*
*/ -/*
*/ -/* {{ name }}*/ -/* {{ collector.messageCount(name) }}*/ -/*
*/ -/*
*/ -/* Is spooled ?*/ -/* {{ collector.isSpool(name) ? 'yes' : 'no' }}*/ -/*
*/ -/* {% endfor %}*/ -/* */ -/* {% endset %}*/ -/* {% include 'WebProfilerBundle:Profiler:toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* Configuration*/ -/* E-Mails*/ -/* */ -/* {{ collector.messageCount }}*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

Messages

*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% for name in collector.mailers %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/* */ -/*
MailerMessages
{{ name }}{{ collector.isDefaultMailer(name) ? ' (default mailer)' : '' }}{{ collector.messageCount(name) }} {{ collector.isSpool(name) ? 'spooled' : 'sent' }}
*/ -/* */ -/* {% for name in collector.mailers %}*/ -/*

Mailer {{ name }}{{ collector.isDefaultMailer(name) ? ' (default mailer)' : '' }}

*/ -/* */ -/* {% if not collector.messages(name) %}*/ -/*

*/ -/* No message sent.*/ -/*

*/ -/* {% else %}*/ -/*
    */ -/* {% for message in collector.messages(name) %}*/ -/*
  • */ -/* {% for header in message.headers.all %}*/ -/*
    {{ header }}
    */ -/* {% endfor %}*/ -/*
    */
    -/*                             {%- if messagePart.charset is defined and message.charset %}*/
    -/*                                 {{- message.body|e('html', message.charset)|convert_encoding('UTF-8', message.charset) }}*/
    -/*                             {%- else %}*/
    -/*                                 {{- message.body|e('html') }}*/
    -/*                             {%- endif -%}*/
    -/*                         
    */ -/* {% for messagePart in message.children if messagePart.contentType == 'text/plain' or messagePart.contentType == 'text/html' %}*/ -/*

    Alternative part

    */ -/*
    */
    -/*                                 {%- if messagePart.charset %}*/
    -/*                                     {{- messagePart.body|e('html', messagePart.charset)|convert_encoding('UTF-8', messagePart.charset) }}*/
    -/*                                 {%- else %}*/
    -/*                                     {{- messagePart.body|e('html') }}*/
    -/*                                 {%- endif -%}*/
    -/*                             
    */ -/* {% endfor %}*/ -/*
  • */ -/* {% endfor %}*/ -/*
*/ -/* {% endif %}*/ -/* {% endfor %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/a/b/abc972a17bfe1ce6756abfe0c0f3fca86a9535eed5d9051cc44f8be5e54b4e35.php b/app/cache/dev/twig/a/b/abc972a17bfe1ce6756abfe0c0f3fca86a9535eed5d9051cc44f8be5e54b4e35.php deleted file mode 100644 index a5868a0..0000000 --- a/app/cache/dev/twig/a/b/abc972a17bfe1ce6756abfe0c0f3fca86a9535eed5d9051cc44f8be5e54b4e35.php +++ /dev/null @@ -1,342 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/events.html.twig", 1); - $this->blocks = array( - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - 'panelContent' => array($this, 'block_panelContent'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_bafc8fe4fa1fd82a84b00db1e3d3f7c055709298e3ca7db6bce046db3c5dda65 = $this->env->getExtension("native_profiler"); - $__internal_bafc8fe4fa1fd82a84b00db1e3d3f7c055709298e3ca7db6bce046db3c5dda65->enter($__internal_bafc8fe4fa1fd82a84b00db1e3d3f7c055709298e3ca7db6bce046db3c5dda65_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/events.html.twig")); - - // line 3 - $context["__internal_6abe3ae0c05e7e4678cd142e09b7d9a5bf6219cf296188f7595eaec7b286e51a"] = $this; - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_bafc8fe4fa1fd82a84b00db1e3d3f7c055709298e3ca7db6bce046db3c5dda65->leave($__internal_bafc8fe4fa1fd82a84b00db1e3d3f7c055709298e3ca7db6bce046db3c5dda65_prof); - - } - - // line 5 - public function block_menu($context, array $blocks = array()) - { - $__internal_29ea3475b838a3b7206f944282bc45c4fa38a71c47f8db0abe0bc15e83f37dd7 = $this->env->getExtension("native_profiler"); - $__internal_29ea3475b838a3b7206f944282bc45c4fa38a71c47f8db0abe0bc15e83f37dd7->enter($__internal_29ea3475b838a3b7206f944282bc45c4fa38a71c47f8db0abe0bc15e83f37dd7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 6 - echo " - - Events - -"; - - $__internal_29ea3475b838a3b7206f944282bc45c4fa38a71c47f8db0abe0bc15e83f37dd7->leave($__internal_29ea3475b838a3b7206f944282bc45c4fa38a71c47f8db0abe0bc15e83f37dd7_prof); - - } - - // line 12 - public function block_panel($context, array $blocks = array()) - { - $__internal_9583852f235e8919456c70a336f76231c4ceef88cdf6e817c4779b0db9409b45 = $this->env->getExtension("native_profiler"); - $__internal_9583852f235e8919456c70a336f76231c4ceef88cdf6e817c4779b0db9409b45->enter($__internal_9583852f235e8919456c70a336f76231c4ceef88cdf6e817c4779b0db9409b45_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 13 - echo " "; - if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array()))) { - // line 14 - echo " "; - $this->displayBlock("panelContent", $context, $blocks); - echo " - "; - } else { - // line 16 - echo "

Events

-

- No events have been recorded. Are you sure that debugging is enabled in the kernel? -

- "; - } - - $__internal_9583852f235e8919456c70a336f76231c4ceef88cdf6e817c4779b0db9409b45->leave($__internal_9583852f235e8919456c70a336f76231c4ceef88cdf6e817c4779b0db9409b45_prof); - - } - - // line 23 - public function block_panelContent($context, array $blocks = array()) - { - $__internal_37c09541663091b1c37e42a66a9dda320c874a9a3893896a9b64528e8fe6f762 = $this->env->getExtension("native_profiler"); - $__internal_37c09541663091b1c37e42a66a9dda320c874a9a3893896a9b64528e8fe6f762->enter($__internal_37c09541663091b1c37e42a66a9dda320c874a9a3893896a9b64528e8fe6f762_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panelContent")); - - // line 24 - echo "

Called Listeners

- - - - - - - "; - // line 31 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array())); - foreach ($context['_seq'] as $context["_key"] => $context["listener"]) { - // line 32 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['listener'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 37 - echo "
Event nameListener
"; - // line 33 - echo twig_escape_filter($this->env, $this->getAttribute($context["listener"], "event", array()), "html", null, true); - echo ""; - // line 34 - echo $context["__internal_6abe3ae0c05e7e4678cd142e09b7d9a5bf6219cf296188f7595eaec7b286e51a"]->getdisplay_listener($context["listener"]); - echo "
- -

Not Called Listeners

- - "; - // line 41 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array())) { - // line 42 - echo " - - - - - "; - // line 47 - $context["listeners"] = $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array()); - // line 48 - echo " "; - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable(twig_sort_filter(twig_get_array_keys_filter((isset($context["listeners"]) ? $context["listeners"] : $this->getContext($context, "listeners"))))); - foreach ($context['_seq'] as $context["_key"] => $context["listener"]) { - // line 49 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['listener'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 54 - echo "
Event nameListener
"; - // line 50 - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["listeners"]) ? $context["listeners"] : $this->getContext($context, "listeners")), $context["listener"], array(), "array"), "event", array()), "html", null, true); - echo ""; - // line 51 - echo $context["__internal_6abe3ae0c05e7e4678cd142e09b7d9a5bf6219cf296188f7595eaec7b286e51a"]->getdisplay_listener($this->getAttribute((isset($context["listeners"]) ? $context["listeners"] : $this->getContext($context, "listeners")), $context["listener"], array(), "array")); - echo "
- "; - } else { - // line 56 - echo "

- No uncalled listeners. -

-

- - All listeners were called for this request or an error occurred - when trying to collect uncalled listeners (in which case check the - logs to get more information). - -

- "; - } - - $__internal_37c09541663091b1c37e42a66a9dda320c874a9a3893896a9b64528e8fe6f762->leave($__internal_37c09541663091b1c37e42a66a9dda320c874a9a3893896a9b64528e8fe6f762_prof); - - } - - // line 69 - public function getdisplay_listener($__listener__ = null) - { - $context = $this->env->mergeGlobals(array( - "listener" => $__listener__, - "varargs" => func_num_args() > 1 ? array_slice(func_get_args(), 1) : array(), - )); - - $blocks = array(); - - ob_start(); - try { - $__internal_eedeabdeb5d5d7ffcb60c0aa14b5664008cc1bc7b24cefb5d0f93adb06294d3f = $this->env->getExtension("native_profiler"); - $__internal_eedeabdeb5d5d7ffcb60c0aa14b5664008cc1bc7b24cefb5d0f93adb06294d3f->enter($__internal_eedeabdeb5d5d7ffcb60c0aa14b5664008cc1bc7b24cefb5d0f93adb06294d3f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "display_listener")); - - // line 70 - echo " "; - if (($this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "type", array()) == "Closure")) { - // line 71 - echo " Closure - "; - } elseif (($this->getAttribute( // line 72 -(isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "type", array()) == "Function")) { - // line 73 - echo " "; - $context["link"] = $this->env->getExtension('code')->getFileLink($this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "file", array()), $this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "line", array())); - // line 74 - echo " "; - if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { - echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "function", array()), "html", null, true); - echo ""; - } else { - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "function", array()), "html", null, true); - } - // line 75 - echo " "; - } elseif (($this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "type", array()) == "Method")) { - // line 76 - echo " "; - $context["link"] = $this->env->getExtension('code')->getFileLink($this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "file", array()), $this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "line", array())); - // line 77 - echo " "; - echo $this->env->getExtension('code')->abbrClass($this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "class", array())); - echo "::"; - if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { - echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "method", array()), "html", null, true); - echo ""; - } else { - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["listener"]) ? $context["listener"] : $this->getContext($context, "listener")), "method", array()), "html", null, true); - } - // line 78 - echo " "; - } - - $__internal_eedeabdeb5d5d7ffcb60c0aa14b5664008cc1bc7b24cefb5d0f93adb06294d3f->leave($__internal_eedeabdeb5d5d7ffcb60c0aa14b5664008cc1bc7b24cefb5d0f93adb06294d3f_prof); - - } catch (Exception $e) { - ob_end_clean(); - - throw $e; - } - - return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/events.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 234 => 78, 221 => 77, 218 => 76, 215 => 75, 204 => 74, 201 => 73, 199 => 72, 196 => 71, 193 => 70, 178 => 69, 160 => 56, 156 => 54, 147 => 51, 143 => 50, 140 => 49, 135 => 48, 133 => 47, 126 => 42, 124 => 41, 118 => 37, 109 => 34, 105 => 33, 102 => 32, 98 => 31, 89 => 24, 83 => 23, 71 => 16, 65 => 14, 62 => 13, 56 => 12, 45 => 6, 39 => 5, 32 => 1, 30 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% from _self import display_listener %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Events*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/* {% if collector.calledlisteners|length %}*/ -/* {{ block('panelContent') }}*/ -/* {% else %}*/ -/*

Events

*/ -/*

*/ -/* No events have been recorded. Are you sure that debugging is enabled in the kernel?*/ -/*

*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% block panelContent %}*/ -/*

Called Listeners

*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% for listener in collector.calledlisteners %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/*
Event nameListener
{{ listener.event }}{{ display_listener(listener) }}
*/ -/* */ -/*

Not Called Listeners

*/ -/* */ -/* {% if collector.notcalledlisteners %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% set listeners = collector.notcalledlisteners %}*/ -/* {% for listener in listeners|keys|sort %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/*
Event nameListener
{{ listeners[listener].event }}{{ display_listener(listeners[listener]) }}
*/ -/* {% else %}*/ -/*

*/ -/* No uncalled listeners.*/ -/*

*/ -/*

*/ -/* */ -/* All listeners were called for this request or an error occurred*/ -/* when trying to collect uncalled listeners (in which case check the*/ -/* logs to get more information).*/ -/* */ -/*

*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% macro display_listener(listener) %}*/ -/* {% if listener.type == "Closure" %}*/ -/* Closure*/ -/* {% elseif listener.type == "Function" %}*/ -/* {% set link = listener.file|file_link(listener.line) %}*/ -/* {% if link %}{{ listener.function }}{% else %}{{ listener.function }}{% endif %}*/ -/* {% elseif listener.type == "Method" %}*/ -/* {% set link = listener.file|file_link(listener.line) %}*/ -/* {{ listener.class|abbr_class }}::{% if link %}{{ listener.method }}{% else %}{{ listener.method }}{% endif %}*/ -/* {% endif %}*/ -/* {% endmacro %}*/ -/* */ diff --git a/app/cache/dev/twig/b/6/b62421e45ef303451c3b24dff861f2b03fa5a741a390349ef3397d5bed8e9b4e.php b/app/cache/dev/twig/b/6/b62421e45ef303451c3b24dff861f2b03fa5a741a390349ef3397d5bed8e9b4e.php deleted file mode 100644 index fbc73e7..0000000 --- a/app/cache/dev/twig/b/6/b62421e45ef303451c3b24dff861f2b03fa5a741a390349ef3397d5bed8e9b4e.php +++ /dev/null @@ -1,683 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_d5ec0f0a922128f68846833acf56063ef19b57f17d5b5b44c82113da926a8169 = $this->env->getExtension("native_profiler"); - $__internal_d5ec0f0a922128f68846833acf56063ef19b57f17d5b5b44c82113da926a8169->enter($__internal_d5ec0f0a922128f68846833acf56063ef19b57f17d5b5b44c82113da926a8169_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base_js.html.twig")); - - // line 1 - echo " -"; - - $__internal_d5ec0f0a922128f68846833acf56063ef19b57f17d5b5b44c82113da926a8169->leave($__internal_d5ec0f0a922128f68846833acf56063ef19b57f17d5b5b44c82113da926a8169_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Profiler/base_js.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 297 => 256, 264 => 226, 258 => 223, 254 => 222, 248 => 219, 244 => 218, 233 => 209, 231 => 208, 22 => 1,); - } -} -/* */ -/* */ diff --git a/app/cache/dev/twig/b/b/bbc32f31c8b644e975875aeeaa5f7d092627b49f4505a682c0fec9981bfc6852.php b/app/cache/dev/twig/b/b/bbc32f31c8b644e975875aeeaa5f7d092627b49f4505a682c0fec9981bfc6852.php deleted file mode 100644 index 188dd4a..0000000 --- a/app/cache/dev/twig/b/b/bbc32f31c8b644e975875aeeaa5f7d092627b49f4505a682c0fec9981bfc6852.php +++ /dev/null @@ -1,1911 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/form.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_f2d870e7710d3f38765ebf87a235d0adb1d0c711b647e9661f74b0e16b6bedfe = $this->env->getExtension("native_profiler"); - $__internal_f2d870e7710d3f38765ebf87a235d0adb1d0c711b647e9661f74b0e16b6bedfe->enter($__internal_f2d870e7710d3f38765ebf87a235d0adb1d0c711b647e9661f74b0e16b6bedfe_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/form.html.twig")); - - // line 3 - $context["__internal_9ccc783f99d103a5759242caeb708cc91810f1693f0f74d21104555afc89fd49"] = $this; - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_f2d870e7710d3f38765ebf87a235d0adb1d0c711b647e9661f74b0e16b6bedfe->leave($__internal_f2d870e7710d3f38765ebf87a235d0adb1d0c711b647e9661f74b0e16b6bedfe_prof); - - } - - // line 5 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_951b82859b71367d8d22139b77b2d3b6c4038bdde6aa9ac3c67e1c4f18b54d40 = $this->env->getExtension("native_profiler"); - $__internal_951b82859b71367d8d22139b77b2d3b6c4038bdde6aa9ac3c67e1c4f18b54d40->enter($__internal_951b82859b71367d8d22139b77b2d3b6c4038bdde6aa9ac3c67e1c4f18b54d40_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 6 - echo " "; - if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()))) { - // line 7 - echo " "; - ob_start(); - // line 8 - echo " - getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) { - echo "red"; - } else { - echo "green"; - } - echo "\">"; - if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) { - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()), "html", null, true); - } else { - echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())), "html", null, true); - } - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 11 - echo " - "; - // line 12 - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/form.html.twig", 12)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - // line 13 - echo " "; - } - - $__internal_951b82859b71367d8d22139b77b2d3b6c4038bdde6aa9ac3c67e1c4f18b54d40->leave($__internal_951b82859b71367d8d22139b77b2d3b6c4038bdde6aa9ac3c67e1c4f18b54d40_prof); - - } - - // line 16 - public function block_menu($context, array $blocks = array()) - { - $__internal_1ee48c30113c97fc337d6d67a5b038dc2b574c64950c19631fd466089db18339 = $this->env->getExtension("native_profiler"); - $__internal_1ee48c30113c97fc337d6d67a5b038dc2b574c64950c19631fd466089db18339->enter($__internal_1ee48c30113c97fc337d6d67a5b038dc2b574c64950c19631fd466089db18339_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 17 - echo " - - Forms - "; - // line 20 - if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array()))) { - // line 21 - echo " "; - echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())), "html", null, true); - echo " - "; - } - // line 23 - echo " -"; - - $__internal_1ee48c30113c97fc337d6d67a5b038dc2b574c64950c19631fd466089db18339->leave($__internal_1ee48c30113c97fc337d6d67a5b038dc2b574c64950c19631fd466089db18339_prof); - - } - - // line 26 - public function block_panel($context, array $blocks = array()) - { - $__internal_6a37ff17c1c91f1a119e822134af70452c6df8c07d9f947e8fe4a052ad99722b = $this->env->getExtension("native_profiler"); - $__internal_6a37ff17c1c91f1a119e822134af70452c6df8c07d9f947e8fe4a052ad99722b->enter($__internal_6a37ff17c1c91f1a119e822134af70452c6df8c07d9f947e8fe4a052ad99722b_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 27 - echo " - - "; - // line 181 - if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array()))) { - // line 182 - echo "
-
-

Forms

- -
    - "; - // line 187 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())); - foreach ($context['_seq'] as $context["formName"] => $context["formData"]) { - // line 188 - echo " "; - echo $context["__internal_9ccc783f99d103a5759242caeb708cc91810f1693f0f74d21104555afc89fd49"]->getform_tree_entry($context["formName"], $context["formData"], true); - echo " - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['formName'], $context['formData'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 190 - echo "
-
- - "; - // line 193 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())); - foreach ($context['_seq'] as $context["formName"] => $context["formData"]) { - // line 194 - echo " "; - echo $context["__internal_9ccc783f99d103a5759242caeb708cc91810f1693f0f74d21104555afc89fd49"]->getform_tree_details($context["formName"], $context["formData"], $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms_by_hash", array())); - echo " - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['formName'], $context['formData'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 196 - echo "
- "; - } else { - // line 198 - echo "

No forms were submitted for this request.

- "; - } - // line 200 - echo " - -"; - - $__internal_6a37ff17c1c91f1a119e822134af70452c6df8c07d9f947e8fe4a052ad99722b->leave($__internal_6a37ff17c1c91f1a119e822134af70452c6df8c07d9f947e8fe4a052ad99722b_prof); - - } - - // line 420 - public function getform_tree_entry($__name__ = null, $__data__ = null, $__expanded__ = null) - { - $context = $this->env->mergeGlobals(array( - "name" => $__name__, - "data" => $__data__, - "expanded" => $__expanded__, - "varargs" => func_num_args() > 3 ? array_slice(func_get_args(), 3) : array(), - )); - - $blocks = array(); - - ob_start(); - try { - $__internal_7821e0e3db6aeab41672864c751dc1e008c884889fbd41bfa541c1fcef446e6e = $this->env->getExtension("native_profiler"); - $__internal_7821e0e3db6aeab41672864c751dc1e008c884889fbd41bfa541c1fcef446e6e->enter($__internal_7821e0e3db6aeab41672864c751dc1e008c884889fbd41bfa541c1fcef446e6e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_entry")); - - // line 421 - echo " "; - $context["tree"] = $this; - // line 422 - echo "
  • -
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-details\"> - "; - // line 424 - if ( !twig_test_empty($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array()))) { - // line 425 - echo " env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-children\" href=\"#\"> - "; - } else { - // line 427 - echo "
    - "; - } - // line 429 - echo " "; - echo twig_escape_filter($this->env, ((array_key_exists("name", $context)) ? (_twig_default_filter((isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "(no name)")) : ("(no name)")), "html", null, true); - echo " "; - if (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "type_class", array(), "any", true, true) && $this->getAttribute((isset($context["data"]) ? $context["data"] : null), "type", array(), "any", true, true))) { - echo "[env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "type_class", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "type", array()), "html", null, true); - echo "]"; - } - // line 430 - echo " "; - if (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "errors", array(), "any", true, true) && (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())) > 0))) { - // line 431 - echo "
    "; - echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())), "html", null, true); - echo "
    - "; - } - // line 433 - echo "
    - - "; - // line 435 - if ( !twig_test_empty($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array()))) { - // line 436 - echo "
      env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-children\""; - if ( !(isset($context["expanded"]) ? $context["expanded"] : $this->getContext($context, "expanded"))) { - echo " class=\"hidden\""; - } - echo "> - "; - // line 437 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array())); - foreach ($context['_seq'] as $context["childName"] => $context["childData"]) { - // line 438 - echo " "; - echo $context["tree"]->getform_tree_entry($context["childName"], $context["childData"], false); - echo " - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['childName'], $context['childData'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 440 - echo "
    - "; - } - // line 442 - echo "
  • -"; - - $__internal_7821e0e3db6aeab41672864c751dc1e008c884889fbd41bfa541c1fcef446e6e->leave($__internal_7821e0e3db6aeab41672864c751dc1e008c884889fbd41bfa541c1fcef446e6e_prof); - - } catch (Exception $e) { - ob_end_clean(); - - throw $e; - } - - return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - - // line 445 - public function getform_tree_details($__name__ = null, $__data__ = null, $__forms_by_hash__ = null) - { - $context = $this->env->mergeGlobals(array( - "name" => $__name__, - "data" => $__data__, - "forms_by_hash" => $__forms_by_hash__, - "varargs" => func_num_args() > 3 ? array_slice(func_get_args(), 3) : array(), - )); - - $blocks = array(); - - ob_start(); - try { - $__internal_f87d4c686a11e6c75afd8d698d701728d1af829fb447c63e9dff2eef49b5fa51 = $this->env->getExtension("native_profiler"); - $__internal_f87d4c686a11e6c75afd8d698d701728d1af829fb447c63e9dff2eef49b5fa51->enter($__internal_f87d4c686a11e6c75afd8d698d701728d1af829fb447c63e9dff2eef49b5fa51_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_details")); - - // line 446 - echo " "; - $context["tree"] = $this; - // line 447 - echo "
    getAttribute((isset($context["data"]) ? $context["data"] : null), "id", array(), "any", true, true)) { - echo " id=\""; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-details\""; - } - echo "> -

    - "; - // line 449 - echo twig_escape_filter($this->env, ((array_key_exists("name", $context)) ? (_twig_default_filter((isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "(no name)")) : ("(no name)")), "html", null, true); - echo " - "; - // line 450 - if (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "type_class", array(), "any", true, true) && $this->getAttribute((isset($context["data"]) ? $context["data"] : null), "type", array(), "any", true, true))) { - // line 451 - echo " [env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "type_class", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "type", array()), "html", null, true); - echo "] - "; - } - // line 453 - echo "

    - - "; - // line 455 - if (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "errors", array(), "any", true, true) && (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())) > 0))) { - // line 456 - echo "
    -

    - env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-errors\" href=\"#\"> - Errors - - -

    - - env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-errors\"> - - - - - - "; - // line 470 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())); - foreach ($context['_seq'] as $context["_key"] => $context["error"]) { - // line 471 - echo " - - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 508 - echo "
    MessageOriginCause
    "; - // line 472 - echo twig_escape_filter($this->env, $this->getAttribute($context["error"], "message", array()), "html", null, true); - echo " - "; - // line 474 - if (twig_test_empty($this->getAttribute($context["error"], "origin", array()))) { - // line 475 - echo " This form. - "; - } elseif ( !$this->getAttribute( // line 476 -(isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : null), $this->getAttribute($context["error"], "origin", array()), array(), "array", true, true)) { - // line 477 - echo " Unknown. - "; - } else { - // line 479 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : $this->getContext($context, "forms_by_hash")), $this->getAttribute($context["error"], "origin", array()), array(), "array"), "name", array()), "html", null, true); - echo " - "; - } - // line 481 - echo " - "; - // line 483 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["error"], "trace", array())); - $context['_iterated'] = false; - $context['loop'] = array( - 'parent' => $context['_parent'], - 'index0' => 0, - 'index' => 1, - 'first' => true, - ); - if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { - $length = count($context['_seq']); - $context['loop']['revindex0'] = $length - 1; - $context['loop']['revindex'] = $length; - $context['loop']['length'] = $length; - $context['loop']['last'] = 1 === $length; - } - foreach ($context['_seq'] as $context["_key"] => $context["trace"]) { - // line 484 - echo " "; - if ( !$this->getAttribute($context["loop"], "first", array())) { - // line 485 - echo "
    Caused by:

    - "; - } - // line 487 - echo " "; - if ($this->getAttribute($context["trace"], "root", array(), "any", true, true)) { - // line 488 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute($context["trace"], "class", array()), "html", null, true); - echo "
    -
    ";
    -                            // line 490
    -                            echo twig_escape_filter($this->env, $this->getAttribute($context["trace"], "root", array()), "html", null, true);
    -                            // line 491
    -                            if ( !twig_test_empty($this->getAttribute($context["trace"], "path", array()))) {
    -                                // line 492
    -                                if ((twig_first($this->env, $this->getAttribute($context["trace"], "path", array())) != "[")) {
    -                                    echo ".";
    -                                }
    -                                // line 493
    -                                echo twig_escape_filter($this->env, $this->getAttribute($context["trace"], "path", array()), "html", null, true);
    -                            }
    -                            // line 494
    -                            echo " = ";
    -                            echo twig_escape_filter($this->env, $this->getAttribute($context["trace"], "value", array()), "html", null, true);
    -                            // line 495
    -                            echo "
    - "; - } elseif ($this->getAttribute( // line 496 -$context["trace"], "message", array(), "any", true, true)) { - // line 497 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute($context["trace"], "class", array()), "html", null, true); - echo "
    -
    ";
    -                            // line 498
    -                            echo twig_escape_filter($this->env, $this->getAttribute($context["trace"], "message", array()), "html", null, true);
    -                            echo "
    - "; - } else { - // line 500 - echo "
    ";
    -                            echo twig_escape_filter($this->env, $context["trace"], "html", null, true);
    -                            echo "
    - "; - } - // line 502 - echo " "; - $context['_iterated'] = true; - ++$context['loop']['index0']; - ++$context['loop']['index']; - $context['loop']['first'] = false; - if (isset($context['loop']['length'])) { - --$context['loop']['revindex0']; - --$context['loop']['revindex']; - $context['loop']['last'] = 0 === $context['loop']['revindex0']; - } - } - if (!$context['_iterated']) { - // line 503 - echo " Unknown. - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['trace'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 505 - echo "
    -
    - "; - } - // line 511 - echo " - "; - // line 512 - if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", true, true)) { - // line 513 - echo "

    - env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-default_data\" href=\"#\"> - Default Data - - -

    - -
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-default_data\"> - - - - - - - - - - - - - -
    Model Format - "; - // line 525 - if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", false, true), "model", array(), "any", true, true)) { - // line 526 - echo "
    ";
    -                    echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "model", array()), "html", null, true);
    -                    echo "
    - "; - } else { - // line 528 - echo " same as normalized format - "; - } - // line 530 - echo "
    Normalized Format
    ";
    -                // line 534
    -                echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "norm", array()), "html", null, true);
    -                echo "
    View Format - "; - // line 539 - if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", false, true), "view", array(), "any", true, true)) { - // line 540 - echo "
    ";
    -                    echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "view", array()), "html", null, true);
    -                    echo "
    - "; - } else { - // line 542 - echo " same as normalized format - "; - } - // line 544 - echo "
    -
    - "; - } - // line 549 - echo " - "; - // line 550 - if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", true, true)) { - // line 551 - echo "

    - env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-submitted_data\" href=\"#\"> - Submitted Data - - -

    - -
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-submitted_data\"> - "; - // line 559 - if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "norm", array(), "any", true, true)) { - // line 560 - echo " - - - - - - - - - - - - -
    View Format - "; - // line 564 - if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "view", array(), "any", true, true)) { - // line 565 - echo "
    ";
    -                        echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "view", array()), "html", null, true);
    -                        echo "
    - "; - } else { - // line 567 - echo " same as normalized format - "; - } - // line 569 - echo "
    Normalized Format
    ";
    -                    // line 573
    -                    echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "norm", array()), "html", null, true);
    -                    echo "
    Model Format - "; - // line 578 - if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "model", array(), "any", true, true)) { - // line 579 - echo "
    ";
    -                        echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "model", array()), "html", null, true);
    -                        echo "
    - "; - } else { - // line 581 - echo " same as normalized format - "; - } - // line 583 - echo "
    - "; - } else { - // line 587 - echo "

    This form was not submitted.

    - "; - } - // line 589 - echo "
    - "; - } - // line 591 - echo " - "; - // line 592 - if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "passed_options", array(), "any", true, true)) { - // line 593 - echo "

    - env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-passed_options\" href=\"#\"> - Passed Options - - -

    - -
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-passed_options\"> - "; - // line 601 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "passed_options", array()))) { - // line 602 - echo " - - - - - - "; - // line 608 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "passed_options", array())); - foreach ($context['_seq'] as $context["option"] => $context["value"]) { - // line 609 - echo " - - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['option'], $context['value'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 621 - echo "
    OptionPassed ValueResolved Value
    "; - // line 610 - echo twig_escape_filter($this->env, $context["option"], "html", null, true); - echo "
    ";
    -                        // line 611
    -                        echo twig_escape_filter($this->env, $context["value"], "html", null, true);
    -                        echo "
    - "; - // line 613 - if (($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array()), $context["option"], array(), "array") === $context["value"])) { - // line 614 - echo " same as passed value - "; - } else { - // line 616 - echo "
    ";
    -                            echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array()), $context["option"], array(), "array"), "html", null, true);
    -                            echo "
    - "; - } - // line 618 - echo "
    - "; - } else { - // line 623 - echo "

    No options where passed when constructing this form.

    - "; - } - // line 625 - echo "
    - "; - } - // line 627 - echo " - "; - // line 628 - if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "resolved_options", array(), "any", true, true)) { - // line 629 - echo "

    - env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-resolved_options\" href=\"#\"> - Resolved Options - - -

    - -
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-resolved_options\" class=\"hidden\"> - - - - - - "; - // line 642 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array())); - foreach ($context['_seq'] as $context["option"] => $context["value"]) { - // line 643 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['option'], $context['value'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 648 - echo "
    OptionValue
    "; - // line 644 - echo twig_escape_filter($this->env, $context["option"], "html", null, true); - echo "
    ";
    -                    // line 645
    -                    echo twig_escape_filter($this->env, $context["value"], "html", null, true);
    -                    echo "
    -
    - "; - } - // line 651 - echo " - "; - // line 652 - if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "view_vars", array(), "any", true, true)) { - // line 653 - echo "

    - env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-view_vars\" href=\"#\"> - View Variables - - -

    - -
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); - echo "-view_vars\" class=\"hidden\"> - - - - - - "; - // line 666 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "view_vars", array())); - foreach ($context['_seq'] as $context["variable"] => $context["value"]) { - // line 667 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['variable'], $context['value'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 672 - echo "
    VariableValue
    "; - // line 668 - echo twig_escape_filter($this->env, $context["variable"], "html", null, true); - echo "
    ";
    -                    // line 669
    -                    echo twig_escape_filter($this->env, $context["value"], "html", null, true);
    -                    echo "
    -
    - "; - } - // line 675 - echo "
    - - "; - // line 677 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array())); - foreach ($context['_seq'] as $context["childName"] => $context["childData"]) { - // line 678 - echo " "; - echo $context["tree"]->getform_tree_details($context["childName"], $context["childData"], (isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : $this->getContext($context, "forms_by_hash"))); - echo " - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['childName'], $context['childData'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - - $__internal_f87d4c686a11e6c75afd8d698d701728d1af829fb447c63e9dff2eef49b5fa51->leave($__internal_f87d4c686a11e6c75afd8d698d701728d1af829fb447c63e9dff2eef49b5fa51_prof); - - } catch (Exception $e) { - ob_end_clean(); - - throw $e; - } - - return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/form.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 1196 => 678, 1192 => 677, 1188 => 675, 1183 => 672, 1174 => 669, 1170 => 668, 1167 => 667, 1163 => 666, 1154 => 660, 1145 => 654, 1142 => 653, 1140 => 652, 1137 => 651, 1132 => 648, 1123 => 645, 1119 => 644, 1116 => 643, 1112 => 642, 1103 => 636, 1094 => 630, 1091 => 629, 1089 => 628, 1086 => 627, 1082 => 625, 1078 => 623, 1074 => 621, 1066 => 618, 1060 => 616, 1056 => 614, 1054 => 613, 1049 => 611, 1045 => 610, 1042 => 609, 1038 => 608, 1030 => 602, 1028 => 601, 1024 => 600, 1015 => 594, 1012 => 593, 1010 => 592, 1007 => 591, 1003 => 589, 999 => 587, 993 => 583, 989 => 581, 983 => 579, 981 => 578, 973 => 573, 967 => 569, 963 => 567, 957 => 565, 955 => 564, 949 => 560, 947 => 559, 943 => 558, 934 => 552, 931 => 551, 929 => 550, 926 => 549, 919 => 544, 915 => 542, 909 => 540, 907 => 539, 899 => 534, 893 => 530, 889 => 528, 883 => 526, 881 => 525, 873 => 520, 864 => 514, 861 => 513, 859 => 512, 856 => 511, 851 => 508, 843 => 505, 836 => 503, 823 => 502, 817 => 500, 812 => 498, 807 => 497, 805 => 496, 802 => 495, 799 => 494, 796 => 493, 792 => 492, 790 => 491, 788 => 490, 783 => 488, 780 => 487, 776 => 485, 773 => 484, 755 => 483, 751 => 481, 745 => 479, 741 => 477, 739 => 476, 736 => 475, 734 => 474, 729 => 472, 726 => 471, 722 => 470, 713 => 464, 704 => 458, 700 => 456, 698 => 455, 694 => 453, 686 => 451, 684 => 450, 680 => 449, 670 => 447, 667 => 446, 650 => 445, 635 => 442, 631 => 440, 622 => 438, 618 => 437, 609 => 436, 607 => 435, 603 => 433, 597 => 431, 594 => 430, 583 => 429, 579 => 427, 573 => 425, 571 => 424, 567 => 423, 564 => 422, 561 => 421, 544 => 420, 319 => 200, 315 => 198, 311 => 196, 302 => 194, 298 => 193, 293 => 190, 284 => 188, 280 => 187, 273 => 182, 271 => 181, 115 => 27, 109 => 26, 101 => 23, 95 => 21, 93 => 20, 88 => 17, 82 => 16, 74 => 13, 72 => 12, 69 => 11, 54 => 9, 51 => 8, 48 => 7, 45 => 6, 39 => 5, 32 => 1, 30 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% from _self import form_tree_entry, form_tree_details %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% if collector.data|length %}*/ -/* {% set icon %}*/ -/* */ -/* {% if collector.data.nb_errors %}{{ collector.data.nb_errors }}{% else %}{{ collector.data.forms|length }}{% endif %}*/ -/* {% endset %}*/ -/* */ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Forms*/ -/* {% if collector.data.forms|length %}*/ -/* {{ collector.data.forms|length }}*/ -/* {% endif %}*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/* */ -/* */ -/* {% if collector.data.forms|length %}*/ -/*
    */ -/*
    */ -/*

    Forms

    */ -/* */ -/*
      */ -/* {% for formName, formData in collector.data.forms %}*/ -/* {{ form_tree_entry(formName, formData, true) }}*/ -/* {% endfor %}*/ -/*
    */ -/*
    */ -/* */ -/* {% for formName, formData in collector.data.forms %}*/ -/* {{ form_tree_details(formName, formData, collector.data.forms_by_hash) }}*/ -/* {% endfor %}*/ -/*
    */ -/* {% else %}*/ -/*

    No forms were submitted for this request.

    */ -/* {% endif %}*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ -/* {% macro form_tree_entry(name, data, expanded) %}*/ -/* {% import _self as tree %}*/ -/*
  • */ -/*
    */ -/* {% if data.children is not empty %}*/ -/* */ -/* {% else %}*/ -/*
    */ -/* {% endif %}*/ -/* {{ name|default('(no name)') }} {% if data.type_class is defined and data.type is defined %}[{{ data.type }}]{% endif %}*/ -/* {% if data.errors is defined and data.errors|length > 0 %}*/ -/*
    {{ data.errors|length }}
    */ -/* {% endif %}*/ -/*
    */ -/* */ -/* {% if data.children is not empty %}*/ -/* */ -/* {% endif %}*/ -/*
  • */ -/* {% endmacro %}*/ -/* */ -/* {% macro form_tree_details(name, data, forms_by_hash) %}*/ -/* {% import _self as tree %}*/ -/*
    */ -/*

    */ -/* {{ name|default('(no name)') }}*/ -/* {% if data.type_class is defined and data.type is defined %}*/ -/* [{{ data.type }}]*/ -/* {% endif %}*/ -/*

    */ -/* */ -/* {% if data.errors is defined and data.errors|length > 0 %}*/ -/*
    */ -/*

    */ -/* */ -/* Errors*/ -/* */ -/* */ -/*

    */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% for error in data.errors %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/*
    MessageOriginCause
    {{ error.message }}*/ -/* {% if error.origin is empty %}*/ -/* This form.*/ -/* {% elseif forms_by_hash[error.origin] is not defined %}*/ -/* Unknown.*/ -/* {% else %}*/ -/* {{ forms_by_hash[error.origin].name }}*/ -/* {% endif %}*/ -/* */ -/* {% for trace in error.trace %}*/ -/* {% if not loop.first %}*/ -/*
    Caused by:

    */ -/* {% endif %}*/ -/* {% if trace.root is defined %}*/ -/* {{ trace.class }}
    */ -/*
    */
    -/*                                     {{- trace.root -}}*/
    -/*                                     {%- if trace.path is not empty -%}*/
    -/*                                         {%- if trace.path|first != '[' %}.{% endif -%}*/
    -/*                                         {{- trace.path -}}*/
    -/*                                     {%- endif %} = {{ trace.value -}}*/
    -/*                                 
    */ -/* {% elseif trace.message is defined %}*/ -/* {{ trace.class }}
    */ -/*
    {{ trace.message }}
    */ -/* {% else %}*/ -/*
    {{ trace }}
    */ -/* {% endif %}*/ -/* {% else %}*/ -/* Unknown.*/ -/* {% endfor %}*/ -/*
    */ -/*
    */ -/* {% endif %}*/ -/* */ -/* {% if data.default_data is defined %}*/ -/*

    */ -/* */ -/* Default Data*/ -/* */ -/* */ -/*

    */ -/* */ -/*
    */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/*
    Model Format*/ -/* {% if data.default_data.model is defined %}*/ -/*
    {{ data.default_data.model }}
    */ -/* {% else %}*/ -/* same as normalized format*/ -/* {% endif %}*/ -/*
    Normalized Format
    {{ data.default_data.norm }}
    View Format*/ -/* {% if data.default_data.view is defined %}*/ -/*
    {{ data.default_data.view }}
    */ -/* {% else %}*/ -/* same as normalized format*/ -/* {% endif %}*/ -/*
    */ -/*
    */ -/* {% endif %}*/ -/* */ -/* {% if data.submitted_data is defined %}*/ -/*

    */ -/* */ -/* Submitted Data*/ -/* */ -/* */ -/*

    */ -/* */ -/*
    */ -/* {% if data.submitted_data.norm is defined %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/*
    View Format*/ -/* {% if data.submitted_data.view is defined %}*/ -/*
    {{ data.submitted_data.view }}
    */ -/* {% else %}*/ -/* same as normalized format*/ -/* {% endif %}*/ -/*
    Normalized Format
    {{ data.submitted_data.norm }}
    Model Format*/ -/* {% if data.submitted_data.model is defined %}*/ -/*
    {{ data.submitted_data.model }}
    */ -/* {% else %}*/ -/* same as normalized format*/ -/* {% endif %}*/ -/*
    */ -/* {% else %}*/ -/*

    This form was not submitted.

    */ -/* {% endif %}*/ -/*
    */ -/* {% endif %}*/ -/* */ -/* {% if data.passed_options is defined %}*/ -/*

    */ -/* */ -/* Passed Options*/ -/* */ -/* */ -/*

    */ -/* */ -/*
    */ -/* {% if data.passed_options|length %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% for option, value in data.passed_options %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/*
    OptionPassed ValueResolved Value
    {{ option }}
    {{ value }}
    */ -/* {% if data.resolved_options[option] is same as(value) %}*/ -/* same as passed value*/ -/* {% else %}*/ -/*
    {{ data.resolved_options[option] }}
    */ -/* {% endif %}*/ -/*
    */ -/* {% else %}*/ -/*

    No options where passed when constructing this form.

    */ -/* {% endif %}*/ -/*
    */ -/* {% endif %}*/ -/* */ -/* {% if data.resolved_options is defined %}*/ -/*

    */ -/* */ -/* Resolved Options*/ -/* */ -/* */ -/*

    */ -/* */ -/* */ -/* {% endif %}*/ -/* */ -/* {% if data.view_vars is defined %}*/ -/*

    */ -/* */ -/* View Variables*/ -/* */ -/* */ -/*

    */ -/* */ -/* */ -/* {% endif %}*/ -/*
    */ -/* */ -/* {% for childName, childData in data.children %}*/ -/* {{ tree.form_tree_details(childName, childData, forms_by_hash) }}*/ -/* {% endfor %}*/ -/* {% endmacro %}*/ -/* */ diff --git a/app/cache/dev/twig/b/c/bc7ce39786045154e92c168e9d4888bec4fff8975b86063bf157d942c7b85d2f.php b/app/cache/dev/twig/b/c/bc7ce39786045154e92c168e9d4888bec4fff8975b86063bf157d942c7b85d2f.php deleted file mode 100644 index 4a9f868..0000000 --- a/app/cache/dev/twig/b/c/bc7ce39786045154e92c168e9d4888bec4fff8975b86063bf157d942c7b85d2f.php +++ /dev/null @@ -1,742 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/config.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_db2c6377b162a35907029abfb7765bebcb21911c3e6998817990e51897db2002 = $this->env->getExtension("native_profiler"); - $__internal_db2c6377b162a35907029abfb7765bebcb21911c3e6998817990e51897db2002->enter($__internal_db2c6377b162a35907029abfb7765bebcb21911c3e6998817990e51897db2002_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/config.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_db2c6377b162a35907029abfb7765bebcb21911c3e6998817990e51897db2002->leave($__internal_db2c6377b162a35907029abfb7765bebcb21911c3e6998817990e51897db2002_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_5fd3c3cff53a8f60d1c4c4ea46807cd508491a2637d1314f6fa0174f5cc471b0 = $this->env->getExtension("native_profiler"); - $__internal_5fd3c3cff53a8f60d1c4c4ea46807cd508491a2637d1314f6fa0174f5cc471b0->enter($__internal_5fd3c3cff53a8f60d1c4c4ea46807cd508491a2637d1314f6fa0174f5cc471b0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - // line 5 - echo " "; - ob_start(); - // line 6 - echo " - - - "; - // line 9 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { - // line 10 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); - echo " - "; - } elseif ($this->getAttribute( // line 11 -(isset($context["collector"]) ? $context["collector"] : null), "symfonyState", array(), "any", true, true)) { - // line 12 - echo " "; - if (("unknown" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { - // line 13 - echo ""; - } elseif (("eol" == $this->getAttribute( // line 14 -(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { - // line 15 - echo ""; - } elseif (("eom" == $this->getAttribute( // line 16 -(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { - // line 17 - echo ""; - } elseif (("dev" == $this->getAttribute( // line 18 -(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { - // line 19 - echo ""; - } else { - // line 21 - echo ""; - } - // line 23 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); - echo " - "; - } - // line 25 - echo " - - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 28 - echo " "; - ob_start(); - // line 29 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { - // line 30 - echo "
    - "; - // line 31 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); - echo " -
    - "; - } - // line 34 - echo "
    - Symfony "; - // line 35 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); - echo " -
    - - "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 41 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/config.html.twig", 41)->display(array_merge($context, array("link" => false))); - // line 42 - echo " - "; - // line 44 - echo " "; - ob_start(); - // line 45 - echo " env->getExtension('routing')->getPath("_profiler_phpinfo"); - echo "\"> - - - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 49 - echo " "; - ob_start(); - // line 50 - echo " "; - ob_start(); - // line 51 - echo "
    - PHP - "; - // line 53 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "phpversion", array()), "html", null, true); - echo " -
    -
    - PHP Extensions - getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxdebug", array())) ? ("green") : ("red")); - echo "\">xdebug - getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasaccelerator", array())) ? ("green") : ("red")); - echo "\">accel -
    -
    - PHP SAPI - "; - // line 62 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sapiName", array()), "html", null, true); - echo " -
    - "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 65 - echo " "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 66 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/config.html.twig", 66)->display(array_merge($context, array("link" => false))); - // line 67 - echo " - "; - // line 69 - echo " "; - ob_start(); - echo "sf-toolbar-status sf-toolbar-status-"; - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("green") : ("red")); - $context["debug_status_class"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 70 - echo " "; - ob_start(); - // line 71 - echo " - env, (isset($context["debug_status_class"]) ? $context["debug_status_class"] : $this->getContext($context, "debug_status_class")), "html", null, true); - echo "\"> - "; - // line 73 - echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); - echo " - "; - // line 74 - if ((("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array())) || ("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array())))) { - // line 75 - echo " - "; - // line 76 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()), "html", null, true); - echo " - "; - // line 77 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()), "html", null, true); - echo " - - "; - } - // line 80 - echo " "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 81 - echo " "; - ob_start(); - // line 82 - echo " "; - ob_start(); - // line 83 - echo " "; - if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()))) { - // line 84 - echo "
    - Name - "; - // line 86 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()), "html", null, true); - echo " -
    - "; - } - // line 89 - echo " "; - if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()))) { - // line 90 - echo "
    - Environment - "; - // line 92 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()), "html", null, true); - echo " -
    - "; - } - // line 95 - echo " "; - if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array()))) { - // line 96 - echo "
    - Debug - env, (isset($context["debug_status_class"]) ? $context["debug_status_class"] : $this->getContext($context, "debug_status_class")), "html", null, true); - echo "\">"; - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("en") : ("dis")); - echo "abled -
    - "; - } - // line 101 - echo "
    - Token - - "; - // line 104 - if ((isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))) { - // line 105 - echo " env, (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()), "html", null, true); - echo " - "; - } else { - // line 107 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()), "html", null, true); - echo " - "; - } - // line 109 - echo " -
    - "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 112 - echo " "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 113 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/config.html.twig", 113)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - - $__internal_5fd3c3cff53a8f60d1c4c4ea46807cd508491a2637d1314f6fa0174f5cc471b0->leave($__internal_5fd3c3cff53a8f60d1c4c4ea46807cd508491a2637d1314f6fa0174f5cc471b0_prof); - - } - - // line 116 - public function block_menu($context, array $blocks = array()) - { - $__internal_3176ccfe03f9ee5c50f424edd4f2a6f8ec629e86ef86a53712d875bdaad0bd72 = $this->env->getExtension("native_profiler"); - $__internal_3176ccfe03f9ee5c50f424edd4f2a6f8ec629e86ef86a53712d875bdaad0bd72->enter($__internal_3176ccfe03f9ee5c50f424edd4f2a6f8ec629e86ef86a53712d875bdaad0bd72_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 117 - echo " - - Config - -"; - - $__internal_3176ccfe03f9ee5c50f424edd4f2a6f8ec629e86ef86a53712d875bdaad0bd72->leave($__internal_3176ccfe03f9ee5c50f424edd4f2a6f8ec629e86ef86a53712d875bdaad0bd72_prof); - - } - - // line 123 - public function block_panel($context, array $blocks = array()) - { - $__internal_c64cfcc5ae546e0c378bc59bc853a795a4cd0b9e80fb4d1a0ac557e458388877 = $this->env->getExtension("native_profiler"); - $__internal_c64cfcc5ae546e0c378bc59bc853a795a4cd0b9e80fb4d1a0ac557e458388877->enter($__internal_c64cfcc5ae546e0c378bc59bc853a795a4cd0b9e80fb4d1a0ac557e458388877_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 124 - echo "

    Project Configuration

    - - - - - - - "; - // line 131 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { - // line 132 - echo " - - "; - } else { - // line 135 - echo " - - "; - } - // line 138 - echo " - "; - // line 139 - if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()))) { - // line 140 - echo " - - - - "; - } - // line 145 - echo " "; - if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()))) { - // line 146 - echo " - - - - "; - } - // line 151 - echo " "; - if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array()))) { - // line 152 - echo " - - - - "; - } - // line 157 - echo "
    KeyValue
    Application"; - // line 133 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); - echo " (on Symfony "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); - echo ")Symfony version"; - // line 136 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); - echo "
    Application name"; - // line 142 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()), "html", null, true); - echo "
    Environment"; - // line 148 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()), "html", null, true); - echo "
    Debug"; - // line 154 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("enabled") : ("disabled")); - echo "
    - -

    PHP configuration

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    PHP version"; - // line 167 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "phpversion", array()), "html", null, true); - echo "
    Xdebug"; - // line 171 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxdebug", array())) ? ("enabled") : ("disabled")); - echo "
    PHP acceleration"; - // line 175 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasaccelerator", array())) ? ("enabled") : ("disabled")); - echo "
    XCache"; - // line 179 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxcache", array())) ? ("enabled") : ("disabled")); - echo "
    APC"; - // line 183 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasapc", array())) ? ("enabled") : ("disabled")); - echo "
    Zend OPcache"; - // line 187 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "haszendopcache", array())) ? ("enabled") : ("disabled")); - echo "
    EAccelerator"; - // line 191 - echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "haseaccelerator", array())) ? ("enabled") : ("disabled")); - echo "
    Full PHP configurationenv->getExtension('routing')->getPath("_profiler_phpinfo"); - echo "\">phpinfo
    - - "; - // line 199 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array())) { - // line 200 - echo "

    Active bundles

    - - - - - - "; - // line 206 - $context["bundles"] = $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array()); - // line 207 - echo " "; - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable(twig_sort_filter(twig_get_array_keys_filter((isset($context["bundles"]) ? $context["bundles"] : $this->getContext($context, "bundles"))))); - foreach ($context['_seq'] as $context["_key"] => $context["name"]) { - // line 208 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 213 - echo "
    NamePath
    "; - // line 209 - echo twig_escape_filter($this->env, $context["name"], "html", null, true); - echo ""; - // line 210 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["bundles"]) ? $context["bundles"] : $this->getContext($context, "bundles")), $context["name"], array(), "array"), "html", null, true); - echo "
    - "; - } - - $__internal_c64cfcc5ae546e0c378bc59bc853a795a4cd0b9e80fb4d1a0ac557e458388877->leave($__internal_c64cfcc5ae546e0c378bc59bc853a795a4cd0b9e80fb4d1a0ac557e458388877_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/config.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 504 => 213, 495 => 210, 491 => 209, 488 => 208, 483 => 207, 481 => 206, 473 => 200, 471 => 199, 464 => 195, 457 => 191, 450 => 187, 443 => 183, 436 => 179, 429 => 175, 422 => 171, 415 => 167, 403 => 157, 397 => 154, 393 => 152, 390 => 151, 384 => 148, 380 => 146, 377 => 145, 371 => 142, 367 => 140, 365 => 139, 362 => 138, 357 => 136, 354 => 135, 345 => 133, 342 => 132, 340 => 131, 331 => 124, 325 => 123, 314 => 117, 308 => 116, 300 => 113, 297 => 112, 292 => 109, 286 => 107, 278 => 105, 276 => 104, 271 => 101, 263 => 98, 259 => 96, 256 => 95, 250 => 92, 246 => 90, 243 => 89, 237 => 86, 233 => 84, 230 => 83, 227 => 82, 224 => 81, 221 => 80, 215 => 77, 211 => 76, 208 => 75, 206 => 74, 202 => 73, 198 => 72, 195 => 71, 192 => 70, 186 => 69, 183 => 67, 180 => 66, 177 => 65, 171 => 62, 164 => 58, 160 => 57, 153 => 53, 149 => 51, 146 => 50, 143 => 49, 135 => 45, 132 => 44, 129 => 42, 126 => 41, 120 => 38, 114 => 35, 111 => 34, 103 => 31, 100 => 30, 97 => 29, 94 => 28, 89 => 25, 84 => 23, 81 => 21, 78 => 19, 76 => 18, 74 => 17, 72 => 16, 70 => 15, 68 => 14, 66 => 13, 63 => 12, 61 => 11, 54 => 10, 52 => 9, 47 => 6, 44 => 5, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {# Symfony Logo #}*/ -/* {% set icon %}*/ -/* */ -/* */ -/* */ -/* {% if collector.applicationname %}*/ -/* {{ collector.applicationname }} {{ collector.applicationversion }}*/ -/* {% elseif collector.symfonyState is defined %}*/ -/* {% if 'unknown' == collector.symfonyState -%}*/ -/* */ -/* {%- elseif 'eol' == collector.symfonyState -%}*/ -/* */ -/* {%- elseif 'eom' == collector.symfonyState -%}*/ -/* */ -/* {%- elseif 'dev' == collector.symfonyState -%}*/ -/* */ -/* {%- else -%}*/ -/* */ -/* {%- endif -%}*/ -/* {{ collector.symfonyversion }}*/ -/* {% endif %}*/ -/* */ -/* */ -/* {% endset %}*/ -/* {% set text %}*/ -/* {% if collector.applicationname %}*/ -/*
    */ -/* {{ collector.applicationname }} {{ collector.applicationversion }}*/ -/*
    */ -/* {% endif %}*/ -/*
    */ -/* Symfony {{ collector.symfonyversion }}*/ -/*
    */ -/*
    */ -/* Symfony Documentation*/ -/*
    */ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %}*/ -/* */ -/* {# PHP Information #}*/ -/* {% set icon %}*/ -/* */ -/* */ -/* */ -/* {% endset %}*/ -/* {% set text %}*/ -/* {% spaceless %}*/ -/*
    */ -/* PHP*/ -/* {{ collector.phpversion }}*/ -/*
    */ -/*
    */ -/* PHP Extensions*/ -/* xdebug*/ -/* accel*/ -/*
    */ -/*
    */ -/* PHP SAPI*/ -/* {{ collector.sapiName }}*/ -/*
    */ -/* {% endspaceless %}*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %}*/ -/* */ -/* {# Environment #}*/ -/* {% set debug_status_class %}sf-toolbar-status sf-toolbar-status-{{ collector.debug ? 'green' : 'red' }}{% endset %}*/ -/* {% set icon %}*/ -/* */ -/* */ -/* {{ token }}*/ -/* {% if 'n/a' != collector.appname or 'n/a' != collector.env %}*/ -/* */ -/* {{ collector.appname }}*/ -/* {{ collector.env }}*/ -/* */ -/* {% endif %}*/ -/* {% endset %}*/ -/* {% set text %}*/ -/* {% spaceless %}*/ -/* {% if 'n/a' != collector.appname %}*/ -/*
    */ -/* Name*/ -/* {{ collector.appname }}*/ -/*
    */ -/* {% endif %}*/ -/* {% if 'n/a' != collector.env %}*/ -/*
    */ -/* Environment*/ -/* {{ collector.env }}*/ -/*
    */ -/* {% endif %}*/ -/* {% if 'n/a' != collector.debug %}*/ -/*
    */ -/* Debug*/ -/* {{ collector.debug ? 'en' : 'dis' }}abled*/ -/*
    */ -/* {% endif %}*/ -/*
    */ -/* Token*/ -/* */ -/* {% if profiler_url %}*/ -/* {{ collector.token }}*/ -/* {% else %}*/ -/* {{ collector.token }}*/ -/* {% endif %}*/ -/* */ -/*
    */ -/* {% endspaceless %}*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Config*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

    Project Configuration

    */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% if collector.applicationname %}*/ -/* */ -/* */ -/* {% else %}*/ -/* */ -/* */ -/* {% endif %}*/ -/* */ -/* {% if 'n/a' != collector.appname %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endif %}*/ -/* {% if 'n/a' != collector.env %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endif %}*/ -/* {% if 'n/a' != collector.debug %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endif %}*/ -/*
    KeyValue
    Application{{ collector.applicationname }} {{ collector.applicationversion }} (on Symfony {{ collector.symfonyversion }})Symfony version{{ collector.symfonyversion }}
    Application name{{ collector.appname }}
    Environment{{ collector.env }}
    Debug{{ collector.debug ? 'enabled' : 'disabled' }}
    */ -/* */ -/*

    PHP configuration

    */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/*
    KeyValue
    PHP version{{ collector.phpversion }}
    Xdebug{{ collector.hasxdebug ? 'enabled' : 'disabled' }}
    PHP acceleration{{ collector.hasaccelerator ? 'enabled' : 'disabled' }}
    XCache{{ collector.hasxcache ? 'enabled' : 'disabled' }}
    APC{{ collector.hasapc ? 'enabled' : 'disabled' }}
    Zend OPcache{{ collector.haszendopcache ? 'enabled' : 'disabled' }}
    EAccelerator{{ collector.haseaccelerator ? 'enabled' : 'disabled' }}
    Full PHP configurationphpinfo
    */ -/* */ -/* {% if collector.bundles %}*/ -/*

    Active bundles

    */ -/* */ -/* */ -/* */ -/* */ -/* */ -/* {% set bundles = collector.bundles %}*/ -/* {% for name in bundles|keys|sort %}*/ -/* */ -/* */ -/* */ -/* */ -/* {% endfor %}*/ -/*
    NamePath
    {{ name }}{{ bundles[name] }}
    */ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/c/6/c67bff0c9f5ee9f2fbf92f6a5a4e3951988c97a326fd67ea5936dafea7da9be3.php b/app/cache/dev/twig/c/6/c67bff0c9f5ee9f2fbf92f6a5a4e3951988c97a326fd67ea5936dafea7da9be3.php deleted file mode 100644 index bfee4f4..0000000 --- a/app/cache/dev/twig/c/6/c67bff0c9f5ee9f2fbf92f6a5a4e3951988c97a326fd67ea5936dafea7da9be3.php +++ /dev/null @@ -1,406 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Debug/Profiler/dump.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_a054662f93242a619fe7ffc29ec417b0425b09c180590140483ba844e63d1fab = $this->env->getExtension("native_profiler"); - $__internal_a054662f93242a619fe7ffc29ec417b0425b09c180590140483ba844e63d1fab->enter($__internal_a054662f93242a619fe7ffc29ec417b0425b09c180590140483ba844e63d1fab_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Debug/Profiler/dump.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_a054662f93242a619fe7ffc29ec417b0425b09c180590140483ba844e63d1fab->leave($__internal_a054662f93242a619fe7ffc29ec417b0425b09c180590140483ba844e63d1fab_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_f2b9cdff1b169dd1a22cbb3a5984e1b8e9eec041c1149cf8eeacc7e56ed6c01f = $this->env->getExtension("native_profiler"); - $__internal_f2b9cdff1b169dd1a22cbb3a5984e1b8e9eec041c1149cf8eeacc7e56ed6c01f->enter($__internal_f2b9cdff1b169dd1a22cbb3a5984e1b8e9eec041c1149cf8eeacc7e56ed6c01f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 4 - echo " "; - $context["dumps_count"] = $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array()); - // line 5 - echo " - "; - // line 6 - if ((isset($context["dumps_count"]) ? $context["dumps_count"] : $this->getContext($context, "dumps_count"))) { - // line 7 - echo " "; - ob_start(); - // line 8 - echo " - "; - // line 9 - echo twig_escape_filter($this->env, (isset($context["dumps_count"]) ? $context["dumps_count"] : $this->getContext($context, "dumps_count")), "html", null, true); - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 11 - echo " - "; - // line 12 - ob_start(); - // line 13 - echo "
    - dump() -
    - "; - // line 16 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "getDumps", array(0 => "html"), "method")); - foreach ($context['_seq'] as $context["_key"] => $context["dump"]) { - // line 17 - echo "
    - in - "; - // line 19 - if ($this->getAttribute($context["dump"], "file", array())) { - // line 20 - echo " "; - $context["link"] = $this->env->getExtension('code')->getFileLink($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())); - // line 21 - echo " "; - if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { - // line 22 - echo " env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); - echo "\" title=\""; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); - echo " - "; - } else { - // line 24 - echo " env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); - echo " - "; - } - // line 26 - echo " "; - } else { - // line 27 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); - echo " - "; - } - // line 29 - echo " line "; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "line", array()), "html", null, true); - echo ": - "; - // line 30 - echo $this->getAttribute($context["dump"], "data", array()); - echo " -
    - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['dump'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 33 - echo " (.*?)<\\/script>/g, s; while (s = rx.exec(h)) {eval(s[1]);};\" /> - "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 35 - echo " - "; - // line 36 - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@Debug/Profiler/dump.html.twig", 36)->display(array_merge($context, array("link" => true))); - // line 37 - echo " "; - } - - $__internal_f2b9cdff1b169dd1a22cbb3a5984e1b8e9eec041c1149cf8eeacc7e56ed6c01f->leave($__internal_f2b9cdff1b169dd1a22cbb3a5984e1b8e9eec041c1149cf8eeacc7e56ed6c01f_prof); - - } - - // line 40 - public function block_menu($context, array $blocks = array()) - { - $__internal_0f46a2e9fd024a07fb6a06a3284b9a1151e530402005cc82c85954db83950e42 = $this->env->getExtension("native_profiler"); - $__internal_0f46a2e9fd024a07fb6a06a3284b9a1151e530402005cc82c85954db83950e42->enter($__internal_0f46a2e9fd024a07fb6a06a3284b9a1151e530402005cc82c85954db83950e42_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 41 - echo " - "; - // line 43 - echo ""; - // line 44 - echo ""; - // line 45 - echo ""; - // line 46 - echo " - dump() - - "; - // line 49 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array()), "html", null, true); - echo " - - -"; - - $__internal_0f46a2e9fd024a07fb6a06a3284b9a1151e530402005cc82c85954db83950e42->leave($__internal_0f46a2e9fd024a07fb6a06a3284b9a1151e530402005cc82c85954db83950e42_prof); - - } - - // line 54 - public function block_panel($context, array $blocks = array()) - { - $__internal_a3517d9013199b447b0ebf64834f98aaf640d9c2063e69593e4898e7b26408be = $this->env->getExtension("native_profiler"); - $__internal_a3517d9013199b447b0ebf64834f98aaf640d9c2063e69593e4898e7b26408be->enter($__internal_a3517d9013199b447b0ebf64834f98aaf640d9c2063e69593e4898e7b26408be_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 55 - echo "

    dump()

    - - - - "; - // line 72 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array())) { - // line 73 - echo "
      - "; - // line 74 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "getDumps", array(0 => "html"), "method")); - foreach ($context['_seq'] as $context["_key"] => $context["dump"]) { - // line 75 - echo "
    • - in - "; - // line 77 - if ($this->getAttribute($context["dump"], "line", array())) { - // line 78 - echo " "; - $context["link"] = $this->env->getExtension('code')->getFileLink($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())); - // line 79 - echo " "; - if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { - // line 80 - echo " env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); - echo "\" title=\""; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); - echo " - "; - } else { - // line 82 - echo " env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); - echo " - "; - } - // line 84 - echo " "; - } else { - // line 85 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); - echo " - "; - } - // line 87 - echo " line "; - echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "line", array()), "html", null, true); - echo ": - - - "; - // line 90 - if ($this->getAttribute($context["dump"], "fileExcerpt", array())) { - echo $this->getAttribute($context["dump"], "fileExcerpt", array()); - } else { - echo $this->env->getExtension('code')->fileExcerpt($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())); - } - // line 91 - echo " - - "; - // line 93 - echo $this->getAttribute($context["dump"], "data", array()); - echo " -
    • - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['dump'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 96 - echo "
    - "; - } else { - // line 98 - echo "

    - No dumped variable -

    - "; - } - - $__internal_a3517d9013199b447b0ebf64834f98aaf640d9c2063e69593e4898e7b26408be->leave($__internal_a3517d9013199b447b0ebf64834f98aaf640d9c2063e69593e4898e7b26408be_prof); - - } - - public function getTemplateName() - { - return "@Debug/Profiler/dump.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 279 => 98, 275 => 96, 266 => 93, 262 => 91, 256 => 90, 249 => 87, 243 => 85, 240 => 84, 232 => 82, 222 => 80, 219 => 79, 216 => 78, 214 => 77, 210 => 75, 206 => 74, 203 => 73, 201 => 72, 182 => 55, 176 => 54, 165 => 49, 160 => 46, 158 => 45, 156 => 44, 154 => 43, 151 => 41, 145 => 40, 137 => 37, 135 => 36, 132 => 35, 128 => 33, 119 => 30, 114 => 29, 108 => 27, 105 => 26, 97 => 24, 87 => 22, 84 => 21, 81 => 20, 79 => 19, 75 => 17, 71 => 16, 66 => 13, 64 => 12, 61 => 11, 56 => 9, 53 => 8, 50 => 7, 48 => 6, 45 => 5, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% set dumps_count = collector.dumpsCount %}*/ -/* */ -/* {% if dumps_count %}*/ -/* {% set icon %}*/ -/* */ -/* {{ dumps_count }}*/ -/* {% endset %}*/ -/* */ -/* {% set text %}*/ -/*
    */ -/* dump()*/ -/*
    */ -/* {% for dump in collector.getDumps('html') %}*/ -/*
    */ -/* in*/ -/* {% if dump.file %}*/ -/* {% set link = dump.file|file_link(dump.line) %}*/ -/* {% if link %}*/ -/* {{ dump.name }}*/ -/* {% else %}*/ -/* {{ dump.name }}*/ -/* {% endif %}*/ -/* {% else %}*/ -/* {{ dump.name }}*/ -/* {% endif %}*/ -/* line {{ dump.line }}:*/ -/* {{ dump.data|raw }}*/ -/*
    */ -/* {% endfor %}*/ -/* */ -/* {% endset %}*/ -/* */ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': true } %}*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* {{- "" -}}*/ -/* */ -/* {{- "" -}}*/ -/* */ -/* dump()*/ -/* */ -/* {{ collector.dumpsCount }}*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

    dump()

    */ -/* */ -/* */ -/* */ -/* {% if collector.dumpsCount %}*/ -/*
      */ -/* {% for dump in collector.getDumps('html') %}*/ -/*
    • */ -/* in*/ -/* {% if dump.line %}*/ -/* {% set link = dump.file|file_link(dump.line) %}*/ -/* {% if link %}*/ -/* {{ dump.name }}*/ -/* {% else %}*/ -/* {{ dump.name }}*/ -/* {% endif %}*/ -/* {% else %}*/ -/* {{ dump.name }}*/ -/* {% endif %}*/ -/* line {{ dump.line }}:*/ -/* */ -/* */ -/* {% if dump.fileExcerpt %}{{ dump.fileExcerpt|raw }}{% else %}{{ dump.file|file_excerpt(dump.line) }}{% endif %}*/ -/* */ -/* */ -/* {{ dump.data|raw }}*/ -/*
    • */ -/* {% endfor %}*/ -/*
    */ -/* {% else %}*/ -/*

    */ -/* No dumped variable*/ -/*

    */ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/c/6/c6f924049581cadfacef3d92ec35a5761c5cd321d770aa614f3026b3c2781258.php b/app/cache/dev/twig/c/6/c6f924049581cadfacef3d92ec35a5761c5cd321d770aa614f3026b3c2781258.php deleted file mode 100644 index e088db9..0000000 --- a/app/cache/dev/twig/c/6/c6f924049581cadfacef3d92ec35a5761c5cd321d770aa614f3026b3c2781258.php +++ /dev/null @@ -1,109 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/router.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_e2f6c515073502f2e66c3967ff99fcf781e28d9216b55ecd75891c302e5b27ba = $this->env->getExtension("native_profiler"); - $__internal_e2f6c515073502f2e66c3967ff99fcf781e28d9216b55ecd75891c302e5b27ba->enter($__internal_e2f6c515073502f2e66c3967ff99fcf781e28d9216b55ecd75891c302e5b27ba_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/router.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_e2f6c515073502f2e66c3967ff99fcf781e28d9216b55ecd75891c302e5b27ba->leave($__internal_e2f6c515073502f2e66c3967ff99fcf781e28d9216b55ecd75891c302e5b27ba_prof); - - } - - // line 3 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_dca883daf9352a2c2c06db9795fc5d52f5cb6636b5cf5e830603c6023a1eab84 = $this->env->getExtension("native_profiler"); - $__internal_dca883daf9352a2c2c06db9795fc5d52f5cb6636b5cf5e830603c6023a1eab84->enter($__internal_dca883daf9352a2c2c06db9795fc5d52f5cb6636b5cf5e830603c6023a1eab84_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - - $__internal_dca883daf9352a2c2c06db9795fc5d52f5cb6636b5cf5e830603c6023a1eab84->leave($__internal_dca883daf9352a2c2c06db9795fc5d52f5cb6636b5cf5e830603c6023a1eab84_prof); - - } - - // line 6 - public function block_menu($context, array $blocks = array()) - { - $__internal_85103030b3546940148cf53110249a6de4e24a83b6fee6fa0afc5cec9d55bd28 = $this->env->getExtension("native_profiler"); - $__internal_85103030b3546940148cf53110249a6de4e24a83b6fee6fa0afc5cec9d55bd28->enter($__internal_85103030b3546940148cf53110249a6de4e24a83b6fee6fa0afc5cec9d55bd28_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 7 - echo " - - Routing - -"; - - $__internal_85103030b3546940148cf53110249a6de4e24a83b6fee6fa0afc5cec9d55bd28->leave($__internal_85103030b3546940148cf53110249a6de4e24a83b6fee6fa0afc5cec9d55bd28_prof); - - } - - // line 13 - public function block_panel($context, array $blocks = array()) - { - $__internal_0a5f5afa5b2cf5a1010d909e1cad18d2dbd80adc1c86b79d06a437e62018e506 = $this->env->getExtension("native_profiler"); - $__internal_0a5f5afa5b2cf5a1010d909e1cad18d2dbd80adc1c86b79d06a437e62018e506->enter($__internal_0a5f5afa5b2cf5a1010d909e1cad18d2dbd80adc1c86b79d06a437e62018e506_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 14 - echo " "; - echo $this->env->getExtension('http_kernel')->renderFragment($this->env->getExtension('routing')->getPath("_profiler_router", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))))); - echo " -"; - - $__internal_0a5f5afa5b2cf5a1010d909e1cad18d2dbd80adc1c86b79d06a437e62018e506->leave($__internal_0a5f5afa5b2cf5a1010d909e1cad18d2dbd80adc1c86b79d06a437e62018e506_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/router.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 70 => 14, 64 => 13, 53 => 7, 47 => 6, 36 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Routing*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/* {{ render(path('_profiler_router', {'token': token})) }}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/c/c/ccc7f58c591958c3160ada5dee2d6b723c6afae6ebf21c1ede9fe3b7e67ad65e.php b/app/cache/dev/twig/c/c/ccc7f58c591958c3160ada5dee2d6b723c6afae6ebf21c1ede9fe3b7e67ad65e.php deleted file mode 100644 index f6e3d56..0000000 --- a/app/cache/dev/twig/c/c/ccc7f58c591958c3160ada5dee2d6b723c6afae6ebf21c1ede9fe3b7e67ad65e.php +++ /dev/null @@ -1,113 +0,0 @@ -parent = $this->loadTemplate("TwigBundle::layout.html.twig", "TwigBundle:Exception:exception_full.html.twig", 1); - $this->blocks = array( - 'head' => array($this, 'block_head'), - 'title' => array($this, 'block_title'), - 'body' => array($this, 'block_body'), - ); - } - - protected function doGetParent(array $context) - { - return "TwigBundle::layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_cf49e593f0863d5e2d8bbae4326d4201e4f218b4dbcb922683c6eb53b2fc339c = $this->env->getExtension("native_profiler"); - $__internal_cf49e593f0863d5e2d8bbae4326d4201e4f218b4dbcb922683c6eb53b2fc339c->enter($__internal_cf49e593f0863d5e2d8bbae4326d4201e4f218b4dbcb922683c6eb53b2fc339c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:exception_full.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_cf49e593f0863d5e2d8bbae4326d4201e4f218b4dbcb922683c6eb53b2fc339c->leave($__internal_cf49e593f0863d5e2d8bbae4326d4201e4f218b4dbcb922683c6eb53b2fc339c_prof); - - } - - // line 3 - public function block_head($context, array $blocks = array()) - { - $__internal_d8faae9844741aae6a2db328e994751de0dcec1d0400349b937794c7920b7967 = $this->env->getExtension("native_profiler"); - $__internal_d8faae9844741aae6a2db328e994751de0dcec1d0400349b937794c7920b7967->enter($__internal_d8faae9844741aae6a2db328e994751de0dcec1d0400349b937794c7920b7967_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); - - // line 4 - echo " env, $this->env->getExtension('request')->generateAbsoluteUrl($this->env->getExtension('asset')->getAssetUrl("bundles/framework/css/exception.css")), "html", null, true); - echo "\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" /> -"; - - $__internal_d8faae9844741aae6a2db328e994751de0dcec1d0400349b937794c7920b7967->leave($__internal_d8faae9844741aae6a2db328e994751de0dcec1d0400349b937794c7920b7967_prof); - - } - - // line 7 - public function block_title($context, array $blocks = array()) - { - $__internal_40d3cee406c995dbf27011a3e5463a397b6fd136ddadc096f2b430c3b06d6106 = $this->env->getExtension("native_profiler"); - $__internal_40d3cee406c995dbf27011a3e5463a397b6fd136ddadc096f2b430c3b06d6106->enter($__internal_40d3cee406c995dbf27011a3e5463a397b6fd136ddadc096f2b430c3b06d6106_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); - - // line 8 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true); - echo " ("; - echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); - echo " "; - echo twig_escape_filter($this->env, (isset($context["status_text"]) ? $context["status_text"] : $this->getContext($context, "status_text")), "html", null, true); - echo ") -"; - - $__internal_40d3cee406c995dbf27011a3e5463a397b6fd136ddadc096f2b430c3b06d6106->leave($__internal_40d3cee406c995dbf27011a3e5463a397b6fd136ddadc096f2b430c3b06d6106_prof); - - } - - // line 11 - public function block_body($context, array $blocks = array()) - { - $__internal_7ce052b0777b6528e8c74a31485d32a06aee39508eacc64dad79987f8d586706 = $this->env->getExtension("native_profiler"); - $__internal_7ce052b0777b6528e8c74a31485d32a06aee39508eacc64dad79987f8d586706->enter($__internal_7ce052b0777b6528e8c74a31485d32a06aee39508eacc64dad79987f8d586706_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); - - // line 12 - echo " "; - $this->loadTemplate("TwigBundle:Exception:exception.html.twig", "TwigBundle:Exception:exception_full.html.twig", 12)->display($context); - - $__internal_7ce052b0777b6528e8c74a31485d32a06aee39508eacc64dad79987f8d586706->leave($__internal_7ce052b0777b6528e8c74a31485d32a06aee39508eacc64dad79987f8d586706_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:exception_full.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 78 => 12, 72 => 11, 58 => 8, 52 => 7, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends 'TwigBundle::layout.html.twig' %}*/ -/* */ -/* {% block head %}*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block title %}*/ -/* {{ exception.message }} ({{ status_code }} {{ status_text }})*/ -/* {% endblock %}*/ -/* */ -/* {% block body %}*/ -/* {% include 'TwigBundle:Exception:exception.html.twig' %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/c/f/cf80fef7336df8b1b2d3b72b26698483455e153fbcb48200a5389ea9c7f74d6d.php b/app/cache/dev/twig/c/f/cf80fef7336df8b1b2d3b72b26698483455e153fbcb48200a5389ea9c7f74d6d.php deleted file mode 100644 index 31e754d..0000000 --- a/app/cache/dev/twig/c/f/cf80fef7336df8b1b2d3b72b26698483455e153fbcb48200a5389ea9c7f74d6d.php +++ /dev/null @@ -1,941 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_c4497a7659d54144815cc3588e38b31bf9fbcb8a92ee1a1f7226ab7afe53ab3d = $this->env->getExtension("native_profiler"); - $__internal_c4497a7659d54144815cc3588e38b31bf9fbcb8a92ee1a1f7226ab7afe53ab3d->enter($__internal_c4497a7659d54144815cc3588e38b31bf9fbcb8a92ee1a1f7226ab7afe53ab3d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.css.twig")); - - // line 1 - echo ".sf-minitoolbar { - display: none; - - position: fixed; - bottom: 0; - right: 0; - - padding: 5px 5px 0; - - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #e4e4e4, #ffffff); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#e4e4e4), to(#ffffff)); - background-image: -o-linear-gradient(top, #e4e4e4, #ffffff); - background: linear-gradient(top, #e4e4e4, #ffffff); - - border-radius: 16px 0 0 0; - - z-index: 6000000; -} - -.sf-toolbarreset * { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - vertical-align: baseline; -} - -.sf-toolbarreset { - position: fixed; - background-color: #f7f7f7; - left: 0; - right: 0; - margin: 0; - padding: 0 40px 0 0; - z-index: 6000000; - font: 11px Verdana, Arial, sans-serif; - text-align: left; - color: #2f2f2f; - - background-image: -moz-linear-gradient(top, #e4e4e4, #ffffff); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#e4e4e4), to(#ffffff)); - background-image: -o-linear-gradient(top, #e4e4e4, #ffffff); - background: linear-gradient(top, #e4e4e4, #ffffff); - - bottom: 0; - border-top: 1px solid #bbb; -} -.sf-toolbarreset abbr { - border-bottom: 1px dotted #000000; - cursor: help; -} -.sf-toolbarreset span, -.sf-toolbarreset div, -.sf-toolbarreset td, -.sf-toolbarreset th { - font-size: 11px; -} -.sf-toolbarreset img { - width: auto; - display: inline; -} -.sf-toolbarreset table { - border-collapse: collapse; - border-spacing: 0; - background-color: #000; - margin: 0; - padding: 0; - border: 0; - width: 100%; - table-layout: auto; -} -.sf-toolbarreset .hide-button { - display: block; - position: absolute; - top: 0; - right: 0; - width: 40px; - height: 40px; - cursor: pointer; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAAllBMVEXDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PExMTPz8/Q0NDR0dHT09Pb29vc3Nzf39/h4eHi4uLj4+P6+vr7+/v8/Pz9/f3///+Nh2QuAAAAIXRSTlMABgwPGBswMzk8QktRV4SKjZOWmaKlq7TAxszb3urt+fy1vNEpAAAAiklEQVQIHUXBBxKCQBREwRFzDqjoGh+C2YV//8u5Sll2S0E/dof1tKdKM6GyqCto7PjZRJIS/mbSELgXOSd/BzpKIH1ZefVWpDDTHsi8mZVnwImPi5ndCLbaAZk3M58Bay0h9VbeSvMpjDUAHj4jL55AW1rxN5fU2PLjIgVRzNdxVFOlGzvnJi0Fb1XNGBHA9uQOAAAAAElFTkSuQmCC'); - background-repeat: no-repeat; - background-position: 13px 11px; -} - -.sf-toolbar-block { - white-space: nowrap; - color: #2f2f2f; - display: block; - min-height: 28px; - border-bottom: 1px solid #e4e4e4; - border-right: 1px solid #e4e4e4; - padding: 0; - float: left; - cursor: default; -} - -.sf-toolbar-block span { - display: inline-block; -} - -.sf-toolbar-block .sf-toolbar-info-piece { - line-height: 19px; - margin-bottom: 5px; -} - -.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status { - padding: 0px 5px; - border-radius: 5px; - margin-bottom: 0px; - vertical-align: top; -} - -.sf-toolbar-block .sf-toolbar-info-piece:last-child { - margin-bottom: 0; -} - -.sf-toolbar-block .sf-toolbar-info-piece a, -.sf-toolbar-block .sf-toolbar-info-piece abbr { - color: #2f2f2f; -} - -.sf-toolbar-block .sf-toolbar-info-piece b { - display: inline-block; - min-width: 110px; - vertical-align: top; -} - -.sf-toolbar-block .sf-toolbar-info-with-next-pointer:after { - content: ' :: '; - color: #999; -} - -.sf-toolbar-block .sf-toolbar-info-with-delimiter { - border-right: 1px solid #999; - padding-right: 5px; - margin-right: 5px; -} - -.sf-toolbar-block .sf-toolbar-info { - display: none; - position: absolute; - background-color: #fff; - border: 1px solid #bbb; - padding: 9px 0; - margin-left: -1px; - - bottom: 38px; - border-bottom-width: 0; - border-bottom: 1px solid #bbb; - border-radius: 4px 4px 0 0; -} - -.sf-toolbar-block .sf-toolbar-info:empty { - visibility: hidden; -} - -.sf-toolbar-block .sf-toolbar-status { - display: inline-block; - color: #fff; - background-color: #666; - padding: 3px 6px; - border-radius: 3px; - margin-bottom: 2px; - vertical-align: middle; - min-width: 6px; - min-height: 13px; -} - -.sf-toolbar-block .sf-toolbar-status abbr { - color: #fff; - border-bottom: 1px dotted black; -} - -.sf-toolbar-block .sf-toolbar-status-green { - background-color: #759e1a; -} - -.sf-toolbar-block .sf-toolbar-status-red { - background-color: #a33; -} - -.sf-toolbar-block .sf-toolbar-status-yellow { - background-color: #ffcc00; - color: #000; -} - -.sf-toolbar-block .sf-toolbar-status-black { - background-color: #000; -} - -.sf-toolbar-block .sf-toolbar-icon { - display: block; -} - -.sf-toolbar-block .sf-toolbar-icon > a, -.sf-toolbar-block .sf-toolbar-icon > span { - display: block; - font-weight: normal; - text-decoration: none; - margin: 0; - padding: 5px 8px; - min-width: 20px; - text-align: center; - vertical-align: middle; -} - -.sf-toolbar-block .sf-toolbar-icon > a, -.sf-toolbar-block .sf-toolbar-icon > a:link -.sf-toolbar-block .sf-toolbar-icon > a:hover { - color: black !important; -} - -.sf-toolbar-block .sf-toolbar-icon > a[href]:after { - content: \"\"; -} - -.sf-toolbar-block .sf-toolbar-icon img, .sf-toolbar-block .sf-toolbar-icon svg { - border-width: 0; - vertical-align: middle; -} - -.sf-toolbar-block .sf-toolbar-icon img + span, .sf-toolbar-block .sf-toolbar-icon svg + span { - margin-left: 5px; - margin-top: 2px; -} - -.sf-toolbar-block .sf-toolbar-icon .sf-toolbar-status { - border-radius: 12px; - border-bottom-left-radius: 0; - margin-top: 0; -} - -.sf-toolbar-block .sf-toolbar-info-method { - border-bottom: 1px dashed #ccc; - cursor: help; -} - -.sf-toolbar-block .sf-toolbar-info-method[onclick=\"\"] { - border-bottom: none; - cursor: inherit; -} - -.sf-toolbar-info-php {} -.sf-toolbar-info-php-ext {} - -.sf-toolbar-info-php-ext .sf-toolbar-status { - margin-left: 2px; -} - -.sf-toolbar-info-php-ext .sf-toolbar-status:first-child { - margin-left: 0; -} - -.sf-toolbar-block a .sf-toolbar-info-piece-additional, -.sf-toolbar-block a .sf-toolbar-info-piece-additional-detail { - display: inline-block; -} - -.sf-toolbar-block a .sf-toolbar-info-piece-additional:empty, -.sf-toolbar-block a .sf-toolbar-info-piece-additional-detail:empty { - display: none; -} - -.sf-toolbarreset:hover { - box-shadow: rgba(0, 0, 0, 0.3) 0 0 50px; -} - -.sf-toolbar-block:hover { - box-shadow: rgba(0, 0, 0, 0.35) 0 0 5px; - border-right: none; - margin-right: 1px; - position: relative; -} - -.sf-toolbar-block:hover .sf-toolbar-icon { - background-color: #fff; - border-top: 1px dotted #DDD; - position: relative; - margin-top: -1px; - z-index: 10002; -} - -.sf-toolbar-block:hover .sf-toolbar-info { - display: block; - min-width: -webkit-calc(100% + 2px); - min-width: calc(100% + 2px); - z-index: 10001; - box-sizing: border-box; - padding: 9px; - line-height: 19px; - - max-width: 480px; - max-height: 480px; - word-wrap: break-word; - overflow: hidden; - overflow-y: auto; -} - -.sf-toolbar-ajax-requests th, .sf-toolbar-ajax-requests td { - border-bottom: 1px solid #ddd; - padding: 0 4px; - color: #2f2f2f; - background-color: #fff; -} -.sf-toolbar-ajax-requests th { - background-color: #eee; -} -.sf-ajax-request-url { - max-width: 300px; - line-height: 9px; - overflow: hidden; - text-overflow: ellipsis; -} -.sf-ajax-request-duration { - text-align: right; -} -.sf-ajax-request-error { - color: #a33 !important; -} -.sf-ajax-request-loading { - -webkit-animation: sf-blink .5s ease-in-out infinite; - -o-animation: sf-blink .5s ease-in-out infinite; - -moz-animation: sf-blink .5s ease-in-out infinite; - animation: sf-blink .5s ease-in-out infinite; -} -@-webkit-keyframes sf-blink { - 0% { color: black; } - 50% { color: #bbb; } - 100% { color: black; } -} -@-moz-keyframes sf-blink { - 0% { color: black; } - 50% { color: #bbb; } - 100% { color: black; } -} -@-o-keyframes sf-blink { - 0% { color: black; } - 50% { color: #bbb; } - 100% { color: black; } -} -@keyframes sf-blink { - 0% { color: black; } - 50% { color: #bbb; } - 100% { color: black; } -} - -/***** Override the setting when the toolbar is on the top *****/ -"; - // line 348 - if (((isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")) == "top")) { - // line 349 - echo " .sf-minitoolbar { - top: 0; - bottom: auto; - right: 0; - - background-color: #f7f7f7; - - background-image: -moz-linear-gradient(225deg, #e4e4e4, #ffffff); - background-image: -webkit-gradient(linear, 100% 0%, 0% 0%, from(#e4e4e4), to(#ffffff)); - background-image: -o-linear-gradient(135deg, #e4e4e4, #ffffff); - background: linear-gradient(225deg, #e4e4e4, #ffffff); - - border-radius: 0 0 0 16px; - } - - .sf-toolbarreset { - background-image: -moz-linear-gradient(225deg, #e4e4e4, #ffffff); - background-image: -webkit-gradient(linear, 100% 0%, 0% 0%, from(#e4e4e4), to(#ffffff)); - background-image: -o-linear-gradient(135deg, #e4e4e4, #ffffff); - background: linear-gradient(225deg, #e4e4e4, #ffffff); - - top: 0; - bottom: auto; - border-bottom: 1px solid #bbb; - } - - .sf-toolbar-block .sf-toolbar-info { - top: 39px; - bottom: auto; - border-top-width: 0; - border-radius: 0 0 4px 4px; - } - - .sf-toolbar-block:hover .sf-toolbar-icon { - border-top: none; - border-bottom: 1px dotted #DDD; - margin-top: 0; - margin-bottom: -1px; - } -"; - } - // line 389 - echo " -"; - // line 390 - if ( !(isset($context["floatable"]) ? $context["floatable"] : $this->getContext($context, "floatable"))) { - // line 391 - echo " .sf-toolbarreset { - position: static; - background: #cbcbcb; - - background-image: -moz-linear-gradient(90deg, #cbcbcb, #e8e8e8) !important; - background-image: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#cbcbcb), to(#e8e8e8)) !important; - background-image: -o-linear-gradient(180deg, #cbcbcb, #e8e8e8) !important; - background: linear-gradient(90deg, #cbcbcb, #e8e8e8) !important; - } -"; - } - // line 401 - echo " -/***** Media query *****/ -@media screen and (max-width: 779px) { - .sf-toolbar-block .sf-toolbar-icon > * > :first-child ~ * { - display: none; - } - - .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional, - .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional-detail { - display: none !important; - } -} - -@media screen and (min-width: 880px) { - .sf-toolbar-block .sf-toolbar-icon a[href\$=\"config\"] .sf-toolbar-info-piece-additional { - display: inline-block; - } -} - -@media screen and (min-width: 980px) { - .sf-toolbar-block .sf-toolbar-icon a[href\$=\"security\"] .sf-toolbar-info-piece-additional { - display: inline-block; - } -} - -@media screen and (max-width: 1179px) { - .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional { - display: none; - } -} - -@media screen and (max-width: 1439px) { - .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional-detail { - display: none; - } -} - -/***** Media query print: Do not print the Toolbar. *****/ -@media print { - .sf-toolbar { - display: none; - visibility: hidden; - } -} -"; - - $__internal_c4497a7659d54144815cc3588e38b31bf9fbcb8a92ee1a1f7226ab7afe53ab3d->leave($__internal_c4497a7659d54144815cc3588e38b31bf9fbcb8a92ee1a1f7226ab7afe53ab3d_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Profiler/toolbar.css.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 432 => 401, 420 => 391, 418 => 390, 415 => 389, 373 => 349, 371 => 348, 22 => 1,); - } -} -/* .sf-minitoolbar {*/ -/* display: none;*/ -/* */ -/* position: fixed;*/ -/* bottom: 0;*/ -/* right: 0;*/ -/* */ -/* padding: 5px 5px 0;*/ -/* */ -/* background-color: #f7f7f7;*/ -/* background-image: -moz-linear-gradient(top, #e4e4e4, #ffffff);*/ -/* background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#e4e4e4), to(#ffffff));*/ -/* background-image: -o-linear-gradient(top, #e4e4e4, #ffffff);*/ -/* background: linear-gradient(top, #e4e4e4, #ffffff);*/ -/* */ -/* border-radius: 16px 0 0 0;*/ -/* */ -/* z-index: 6000000;*/ -/* }*/ -/* */ -/* .sf-toolbarreset * {*/ -/* -webkit-box-sizing: content-box;*/ -/* -moz-box-sizing: content-box;*/ -/* box-sizing: content-box;*/ -/* vertical-align: baseline;*/ -/* }*/ -/* */ -/* .sf-toolbarreset {*/ -/* position: fixed;*/ -/* background-color: #f7f7f7;*/ -/* left: 0;*/ -/* right: 0;*/ -/* margin: 0;*/ -/* padding: 0 40px 0 0;*/ -/* z-index: 6000000;*/ -/* font: 11px Verdana, Arial, sans-serif;*/ -/* text-align: left;*/ -/* color: #2f2f2f;*/ -/* */ -/* background-image: -moz-linear-gradient(top, #e4e4e4, #ffffff);*/ -/* background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#e4e4e4), to(#ffffff));*/ -/* background-image: -o-linear-gradient(top, #e4e4e4, #ffffff);*/ -/* background: linear-gradient(top, #e4e4e4, #ffffff);*/ -/* */ -/* bottom: 0;*/ -/* border-top: 1px solid #bbb;*/ -/* }*/ -/* .sf-toolbarreset abbr {*/ -/* border-bottom: 1px dotted #000000;*/ -/* cursor: help;*/ -/* }*/ -/* .sf-toolbarreset span,*/ -/* .sf-toolbarreset div,*/ -/* .sf-toolbarreset td,*/ -/* .sf-toolbarreset th {*/ -/* font-size: 11px;*/ -/* }*/ -/* .sf-toolbarreset img {*/ -/* width: auto;*/ -/* display: inline;*/ -/* }*/ -/* .sf-toolbarreset table {*/ -/* border-collapse: collapse;*/ -/* border-spacing: 0;*/ -/* background-color: #000;*/ -/* margin: 0;*/ -/* padding: 0;*/ -/* border: 0;*/ -/* width: 100%;*/ -/* table-layout: auto;*/ -/* }*/ -/* .sf-toolbarreset .hide-button {*/ -/* display: block;*/ -/* position: absolute;*/ -/* top: 0;*/ -/* right: 0;*/ -/* width: 40px;*/ -/* height: 40px;*/ -/* cursor: pointer;*/ -/* background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAAllBMVEXDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PExMTPz8/Q0NDR0dHT09Pb29vc3Nzf39/h4eHi4uLj4+P6+vr7+/v8/Pz9/f3///+Nh2QuAAAAIXRSTlMABgwPGBswMzk8QktRV4SKjZOWmaKlq7TAxszb3urt+fy1vNEpAAAAiklEQVQIHUXBBxKCQBREwRFzDqjoGh+C2YV//8u5Sll2S0E/dof1tKdKM6GyqCto7PjZRJIS/mbSELgXOSd/BzpKIH1ZefVWpDDTHsi8mZVnwImPi5ndCLbaAZk3M58Bay0h9VbeSvMpjDUAHj4jL55AW1rxN5fU2PLjIgVRzNdxVFOlGzvnJi0Fb1XNGBHA9uQOAAAAAElFTkSuQmCC');*/ -/* background-repeat: no-repeat;*/ -/* background-position: 13px 11px;*/ -/* }*/ -/* */ -/* .sf-toolbar-block {*/ -/* white-space: nowrap;*/ -/* color: #2f2f2f;*/ -/* display: block;*/ -/* min-height: 28px;*/ -/* border-bottom: 1px solid #e4e4e4;*/ -/* border-right: 1px solid #e4e4e4;*/ -/* padding: 0;*/ -/* float: left;*/ -/* cursor: default;*/ -/* }*/ -/* */ -/* .sf-toolbar-block span {*/ -/* display: inline-block;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-piece {*/ -/* line-height: 19px;*/ -/* margin-bottom: 5px;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status {*/ -/* padding: 0px 5px;*/ -/* border-radius: 5px;*/ -/* margin-bottom: 0px;*/ -/* vertical-align: top;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-piece:last-child {*/ -/* margin-bottom: 0;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-piece a,*/ -/* .sf-toolbar-block .sf-toolbar-info-piece abbr {*/ -/* color: #2f2f2f;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-piece b {*/ -/* display: inline-block;*/ -/* min-width: 110px;*/ -/* vertical-align: top;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-with-next-pointer:after {*/ -/* content: ' :: ';*/ -/* color: #999;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-with-delimiter {*/ -/* border-right: 1px solid #999;*/ -/* padding-right: 5px;*/ -/* margin-right: 5px;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info {*/ -/* display: none;*/ -/* position: absolute;*/ -/* background-color: #fff;*/ -/* border: 1px solid #bbb;*/ -/* padding: 9px 0;*/ -/* margin-left: -1px;*/ -/* */ -/* bottom: 38px;*/ -/* border-bottom-width: 0;*/ -/* border-bottom: 1px solid #bbb;*/ -/* border-radius: 4px 4px 0 0;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info:empty {*/ -/* visibility: hidden;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-status {*/ -/* display: inline-block;*/ -/* color: #fff;*/ -/* background-color: #666;*/ -/* padding: 3px 6px;*/ -/* border-radius: 3px;*/ -/* margin-bottom: 2px;*/ -/* vertical-align: middle;*/ -/* min-width: 6px;*/ -/* min-height: 13px;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-status abbr {*/ -/* color: #fff;*/ -/* border-bottom: 1px dotted black;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-status-green {*/ -/* background-color: #759e1a;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-status-red {*/ -/* background-color: #a33;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-status-yellow {*/ -/* background-color: #ffcc00;*/ -/* color: #000;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-status-black {*/ -/* background-color: #000;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon {*/ -/* display: block;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon > a,*/ -/* .sf-toolbar-block .sf-toolbar-icon > span {*/ -/* display: block;*/ -/* font-weight: normal;*/ -/* text-decoration: none;*/ -/* margin: 0;*/ -/* padding: 5px 8px;*/ -/* min-width: 20px;*/ -/* text-align: center;*/ -/* vertical-align: middle;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon > a,*/ -/* .sf-toolbar-block .sf-toolbar-icon > a:link*/ -/* .sf-toolbar-block .sf-toolbar-icon > a:hover {*/ -/* color: black !important;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon > a[href]:after {*/ -/* content: "";*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon img, .sf-toolbar-block .sf-toolbar-icon svg {*/ -/* border-width: 0;*/ -/* vertical-align: middle;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon img + span, .sf-toolbar-block .sf-toolbar-icon svg + span {*/ -/* margin-left: 5px;*/ -/* margin-top: 2px;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon .sf-toolbar-status {*/ -/* border-radius: 12px;*/ -/* border-bottom-left-radius: 0;*/ -/* margin-top: 0;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-method {*/ -/* border-bottom: 1px dashed #ccc;*/ -/* cursor: help;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info-method[onclick=""] {*/ -/* border-bottom: none;*/ -/* cursor: inherit;*/ -/* }*/ -/* */ -/* .sf-toolbar-info-php {}*/ -/* .sf-toolbar-info-php-ext {}*/ -/* */ -/* .sf-toolbar-info-php-ext .sf-toolbar-status {*/ -/* margin-left: 2px;*/ -/* }*/ -/* */ -/* .sf-toolbar-info-php-ext .sf-toolbar-status:first-child {*/ -/* margin-left: 0;*/ -/* }*/ -/* */ -/* .sf-toolbar-block a .sf-toolbar-info-piece-additional,*/ -/* .sf-toolbar-block a .sf-toolbar-info-piece-additional-detail {*/ -/* display: inline-block;*/ -/* }*/ -/* */ -/* .sf-toolbar-block a .sf-toolbar-info-piece-additional:empty,*/ -/* .sf-toolbar-block a .sf-toolbar-info-piece-additional-detail:empty {*/ -/* display: none;*/ -/* }*/ -/* */ -/* .sf-toolbarreset:hover {*/ -/* box-shadow: rgba(0, 0, 0, 0.3) 0 0 50px;*/ -/* }*/ -/* */ -/* .sf-toolbar-block:hover {*/ -/* box-shadow: rgba(0, 0, 0, 0.35) 0 0 5px;*/ -/* border-right: none;*/ -/* margin-right: 1px;*/ -/* position: relative;*/ -/* }*/ -/* */ -/* .sf-toolbar-block:hover .sf-toolbar-icon {*/ -/* background-color: #fff;*/ -/* border-top: 1px dotted #DDD;*/ -/* position: relative;*/ -/* margin-top: -1px;*/ -/* z-index: 10002;*/ -/* }*/ -/* */ -/* .sf-toolbar-block:hover .sf-toolbar-info {*/ -/* display: block;*/ -/* min-width: -webkit-calc(100% + 2px);*/ -/* min-width: calc(100% + 2px);*/ -/* z-index: 10001;*/ -/* box-sizing: border-box;*/ -/* padding: 9px;*/ -/* line-height: 19px;*/ -/* */ -/* max-width: 480px;*/ -/* max-height: 480px;*/ -/* word-wrap: break-word;*/ -/* overflow: hidden;*/ -/* overflow-y: auto;*/ -/* }*/ -/* */ -/* .sf-toolbar-ajax-requests th, .sf-toolbar-ajax-requests td {*/ -/* border-bottom: 1px solid #ddd;*/ -/* padding: 0 4px;*/ -/* color: #2f2f2f;*/ -/* background-color: #fff;*/ -/* }*/ -/* .sf-toolbar-ajax-requests th {*/ -/* background-color: #eee;*/ -/* }*/ -/* .sf-ajax-request-url {*/ -/* max-width: 300px;*/ -/* line-height: 9px;*/ -/* overflow: hidden;*/ -/* text-overflow: ellipsis;*/ -/* }*/ -/* .sf-ajax-request-duration {*/ -/* text-align: right;*/ -/* }*/ -/* .sf-ajax-request-error {*/ -/* color: #a33 !important;*/ -/* }*/ -/* .sf-ajax-request-loading {*/ -/* -webkit-animation: sf-blink .5s ease-in-out infinite;*/ -/* -o-animation: sf-blink .5s ease-in-out infinite;*/ -/* -moz-animation: sf-blink .5s ease-in-out infinite;*/ -/* animation: sf-blink .5s ease-in-out infinite;*/ -/* }*/ -/* @-webkit-keyframes sf-blink {*/ -/* 0% { color: black; }*/ -/* 50% { color: #bbb; }*/ -/* 100% { color: black; }*/ -/* }*/ -/* @-moz-keyframes sf-blink {*/ -/* 0% { color: black; }*/ -/* 50% { color: #bbb; }*/ -/* 100% { color: black; }*/ -/* }*/ -/* @-o-keyframes sf-blink {*/ -/* 0% { color: black; }*/ -/* 50% { color: #bbb; }*/ -/* 100% { color: black; }*/ -/* }*/ -/* @keyframes sf-blink {*/ -/* 0% { color: black; }*/ -/* 50% { color: #bbb; }*/ -/* 100% { color: black; }*/ -/* }*/ -/* */ -/* /***** Override the setting when the toolbar is on the top *****//* */ -/* {% if position == 'top' %}*/ -/* .sf-minitoolbar {*/ -/* top: 0;*/ -/* bottom: auto;*/ -/* right: 0;*/ -/* */ -/* background-color: #f7f7f7;*/ -/* */ -/* background-image: -moz-linear-gradient(225deg, #e4e4e4, #ffffff);*/ -/* background-image: -webkit-gradient(linear, 100% 0%, 0% 0%, from(#e4e4e4), to(#ffffff));*/ -/* background-image: -o-linear-gradient(135deg, #e4e4e4, #ffffff);*/ -/* background: linear-gradient(225deg, #e4e4e4, #ffffff);*/ -/* */ -/* border-radius: 0 0 0 16px;*/ -/* }*/ -/* */ -/* .sf-toolbarreset {*/ -/* background-image: -moz-linear-gradient(225deg, #e4e4e4, #ffffff);*/ -/* background-image: -webkit-gradient(linear, 100% 0%, 0% 0%, from(#e4e4e4), to(#ffffff));*/ -/* background-image: -o-linear-gradient(135deg, #e4e4e4, #ffffff);*/ -/* background: linear-gradient(225deg, #e4e4e4, #ffffff);*/ -/* */ -/* top: 0;*/ -/* bottom: auto;*/ -/* border-bottom: 1px solid #bbb;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-info {*/ -/* top: 39px;*/ -/* bottom: auto;*/ -/* border-top-width: 0;*/ -/* border-radius: 0 0 4px 4px;*/ -/* }*/ -/* */ -/* .sf-toolbar-block:hover .sf-toolbar-icon {*/ -/* border-top: none;*/ -/* border-bottom: 1px dotted #DDD;*/ -/* margin-top: 0;*/ -/* margin-bottom: -1px;*/ -/* }*/ -/* {% endif %}*/ -/* */ -/* {% if not floatable %}*/ -/* .sf-toolbarreset {*/ -/* position: static;*/ -/* background: #cbcbcb;*/ -/* */ -/* background-image: -moz-linear-gradient(90deg, #cbcbcb, #e8e8e8) !important;*/ -/* background-image: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#cbcbcb), to(#e8e8e8)) !important;*/ -/* background-image: -o-linear-gradient(180deg, #cbcbcb, #e8e8e8) !important;*/ -/* background: linear-gradient(90deg, #cbcbcb, #e8e8e8) !important;*/ -/* }*/ -/* {% endif %}*/ -/* */ -/* /***** Media query *****//* */ -/* @media screen and (max-width: 779px) {*/ -/* .sf-toolbar-block .sf-toolbar-icon > * > :first-child ~ * {*/ -/* display: none;*/ -/* }*/ -/* */ -/* .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional,*/ -/* .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional-detail {*/ -/* display: none !important;*/ -/* }*/ -/* }*/ -/* */ -/* @media screen and (min-width: 880px) {*/ -/* .sf-toolbar-block .sf-toolbar-icon a[href$="config"] .sf-toolbar-info-piece-additional {*/ -/* display: inline-block;*/ -/* }*/ -/* }*/ -/* */ -/* @media screen and (min-width: 980px) {*/ -/* .sf-toolbar-block .sf-toolbar-icon a[href$="security"] .sf-toolbar-info-piece-additional {*/ -/* display: inline-block;*/ -/* }*/ -/* }*/ -/* */ -/* @media screen and (max-width: 1179px) {*/ -/* .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional {*/ -/* display: none;*/ -/* }*/ -/* }*/ -/* */ -/* @media screen and (max-width: 1439px) {*/ -/* .sf-toolbar-block .sf-toolbar-icon > * > .sf-toolbar-info-piece-additional-detail {*/ -/* display: none;*/ -/* }*/ -/* }*/ -/* */ -/* /***** Media query print: Do not print the Toolbar. *****//* */ -/* @media print {*/ -/* .sf-toolbar {*/ -/* display: none;*/ -/* visibility: hidden;*/ -/* }*/ -/* }*/ -/* */ diff --git a/app/cache/dev/twig/d/3/d325df3dc47e8c48fc4862671205b5233a4e219e8c39d5950f3ac24c8dc5f05f.php b/app/cache/dev/twig/d/3/d325df3dc47e8c48fc4862671205b5233a4e219e8c39d5950f3ac24c8dc5f05f.php deleted file mode 100644 index f7d9c34..0000000 --- a/app/cache/dev/twig/d/3/d325df3dc47e8c48fc4862671205b5233a4e219e8c39d5950f3ac24c8dc5f05f.php +++ /dev/null @@ -1,76 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_c2d053a32fc055f366ccb55c8a22030e4d0d4443998081c3e9c98f8c23cb2e6f = $this->env->getExtension("native_profiler"); - $__internal_c2d053a32fc055f366ccb55c8a22030e4d0d4443998081c3e9c98f8c23cb2e6f->enter($__internal_c2d053a32fc055f366ccb55c8a22030e4d0d4443998081c3e9c98f8c23cb2e6f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_item.html.twig")); - - // line 1 - if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { - // line 2 - echo " "; - ob_start(); - // line 3 - echo " env, $this->env->getExtension('routing')->getPath("_profiler", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => (isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")))), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, (isset($context["icon"]) ? $context["icon"] : $this->getContext($context, "icon")), "html", null, true); - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - // line 6 - echo "
    -
    "; - // line 7 - echo twig_escape_filter($this->env, ((array_key_exists("icon", $context)) ? (_twig_default_filter((isset($context["icon"]) ? $context["icon"] : $this->getContext($context, "icon")), "")) : ("")), "html", null, true); - echo "
    -
    "; - // line 8 - echo twig_escape_filter($this->env, ((array_key_exists("text", $context)) ? (_twig_default_filter((isset($context["text"]) ? $context["text"] : $this->getContext($context, "text")), "")) : ("")), "html", null, true); - echo "
    -
    -"; - - $__internal_c2d053a32fc055f366ccb55c8a22030e4d0d4443998081c3e9c98f8c23cb2e6f->leave($__internal_c2d053a32fc055f366ccb55c8a22030e4d0d4443998081c3e9c98f8c23cb2e6f_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Profiler/toolbar_item.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 43 => 8, 39 => 7, 36 => 6, 27 => 3, 24 => 2, 22 => 1,); - } -} -/* {% if link %}*/ -/* {% set icon %}*/ -/* {{ icon }}*/ -/* {% endset %}*/ -/* {% endif %}*/ -/*
    */ -/*
    {{ icon|default('') }}
    */ -/*
    {{ text|default('') }}
    */ -/*
    */ -/* */ diff --git a/app/cache/dev/twig/d/8/d8a5f99e38b836e16f4fcdf74e16bb4e7ec2cc19a7f6938427b31339efc622f9.php b/app/cache/dev/twig/d/8/d8a5f99e38b836e16f4fcdf74e16bb4e7ec2cc19a7f6938427b31339efc622f9.php deleted file mode 100644 index 36e6ddd..0000000 --- a/app/cache/dev/twig/d/8/d8a5f99e38b836e16f4fcdf74e16bb4e7ec2cc19a7f6938427b31339efc622f9.php +++ /dev/null @@ -1,216 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_f85dcf65318bf36d56282de45fdd7253e176c80b1911e6d38ec2d27b9c300665 = $this->env->getExtension("native_profiler"); - $__internal_f85dcf65318bf36d56282de45fdd7253e176c80b1911e6d38ec2d27b9c300665->enter($__internal_f85dcf65318bf36d56282de45fdd7253e176c80b1911e6d38ec2d27b9c300665_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_js.html.twig")); - - // line 1 - echo "
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); - echo "\" class=\"sf-toolbar\" style=\"display: none\">
    -"; - // line 2 - $this->loadTemplate("@WebProfiler/Profiler/base_js.html.twig", "@WebProfiler/Profiler/toolbar_js.html.twig", 2)->display($context); - // line 3 - echo " -"; - - $__internal_f85dcf65318bf36d56282de45fdd7253e176c80b1911e6d38ec2d27b9c300665->leave($__internal_f85dcf65318bf36d56282de45fdd7253e176c80b1911e6d38ec2d27b9c300665_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Profiler/toolbar_js.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 120 => 61, 86 => 30, 82 => 29, 78 => 28, 73 => 26, 69 => 25, 65 => 24, 53 => 15, 49 => 14, 45 => 12, 35 => 6, 33 => 5, 29 => 3, 27 => 2, 22 => 1,); - } -} -/* */ -/* {% include '@WebProfiler/Profiler/base_js.html.twig' %}*/ -/* */ -/* */ diff --git a/app/cache/dev/twig/d/a/da415a7180eedfe0c423445195cb25a808be849dc4b6a559cd549f9db7234422.php b/app/cache/dev/twig/d/a/da415a7180eedfe0c423445195cb25a808be849dc4b6a559cd549f9db7234422.php deleted file mode 100644 index d047fc3..0000000 --- a/app/cache/dev/twig/d/a/da415a7180eedfe0c423445195cb25a808be849dc4b6a559cd549f9db7234422.php +++ /dev/null @@ -1,186 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_84d6ea64a8dc8ea6e63323dc02c1a416d1cac282b861d564540d831128c20245 = $this->env->getExtension("native_profiler"); - $__internal_84d6ea64a8dc8ea6e63323dc02c1a416d1cac282b861d564540d831128c20245->enter($__internal_84d6ea64a8dc8ea6e63323dc02c1a416d1cac282b861d564540d831128c20245_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.html.twig")); - - // line 1 - echo " -"; - // line 2 - if (("normal" != (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")))) { - // line 3 - echo " - -
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); - echo "\" style=\"clear: both; height: 38px;\">
    -"; - } - // line 26 - echo " -
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); - echo "\" class=\"sf-toolbarreset clear-fix\" data-no-turbolink> - "; - // line 28 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable((isset($context["templates"]) ? $context["templates"] : $this->getContext($context, "templates"))); - foreach ($context['_seq'] as $context["name"] => $context["template"]) { - // line 29 - echo " "; - echo twig_escape_filter($this->env, $this->getAttribute($context["template"], "renderblock", array(0 => "toolbar", 1 => array("collector" => $this->getAttribute( // line 30 -(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "getcollector", array(0 => $context["name"]), "method"), "profiler_url" => // line 31 -(isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "token" => $this->getAttribute( // line 32 -(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "token", array()), "name" => // line 33 -$context["name"])), "method"), "html", null, true); - // line 35 - echo " - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['name'], $context['template'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 37 - echo " - "; - // line 38 - if (("normal" != (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")))) { - // line 39 - echo " env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); - echo "').style.display = 'block'; - Sfjs.setPreference('toolbar/displayState', 'none'); - \"> - "; - } - // line 47 - echo "
    - -"; - - $__internal_84d6ea64a8dc8ea6e63323dc02c1a416d1cac282b861d564540d831128c20245->leave($__internal_84d6ea64a8dc8ea6e63323dc02c1a416d1cac282b861d564540d831128c20245_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Profiler/toolbar.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 115 => 47, 108 => 43, 102 => 39, 100 => 38, 97 => 37, 90 => 35, 88 => 33, 87 => 32, 86 => 31, 85 => 30, 83 => 29, 79 => 28, 75 => 27, 72 => 26, 67 => 24, 64 => 23, 62 => 22, 49 => 12, 45 => 11, 39 => 8, 35 => 7, 27 => 3, 25 => 2, 22 => 1,); - } -} -/* */ -/* {% if 'normal' != position %}*/ -/*
    */ -/* */ -/* */ -/* */ -/*
    */ -/* */ -/*
    */ -/* {% endif %}*/ -/* */ -/*
    */ -/* {% for name, template in templates %}*/ -/* {{ template.renderblock('toolbar', {*/ -/* 'collector': profile.getcollector(name),*/ -/* 'profiler_url': profiler_url,*/ -/* 'token': profile.token,*/ -/* 'name': name*/ -/* })*/ -/* }}*/ -/* {% endfor %}*/ -/* */ -/* {% if 'normal' != position %}*/ -/* */ -/* {% endif %}*/ -/*
    */ -/* */ -/* */ diff --git a/app/cache/dev/twig/e/0/e00523c6cdf305642d3d7c00a0f24abd3836e388535cb9a730a8155ed8a11f02.php b/app/cache/dev/twig/e/0/e00523c6cdf305642d3d7c00a0f24abd3836e388535cb9a730a8155ed8a11f02.php deleted file mode 100644 index 04c07f1..0000000 --- a/app/cache/dev/twig/e/0/e00523c6cdf305642d3d7c00a0f24abd3836e388535cb9a730a8155ed8a11f02.php +++ /dev/null @@ -1,173 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/exception.html.twig", 1); - $this->blocks = array( - 'head' => array($this, 'block_head'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_8bedcd2c1db56c2c9aa329283df44003d328471371ebbf51ce8bf94404110ed1 = $this->env->getExtension("native_profiler"); - $__internal_8bedcd2c1db56c2c9aa329283df44003d328471371ebbf51ce8bf94404110ed1->enter($__internal_8bedcd2c1db56c2c9aa329283df44003d328471371ebbf51ce8bf94404110ed1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/exception.html.twig")); - - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_8bedcd2c1db56c2c9aa329283df44003d328471371ebbf51ce8bf94404110ed1->leave($__internal_8bedcd2c1db56c2c9aa329283df44003d328471371ebbf51ce8bf94404110ed1_prof); - - } - - // line 3 - public function block_head($context, array $blocks = array()) - { - $__internal_692aa8693a9eef84a87e6f2f13d15c45c321f178c04154ff09a082f3fb2db9a7 = $this->env->getExtension("native_profiler"); - $__internal_692aa8693a9eef84a87e6f2f13d15c45c321f178c04154ff09a082f3fb2db9a7->enter($__internal_692aa8693a9eef84a87e6f2f13d15c45c321f178c04154ff09a082f3fb2db9a7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); - - // line 4 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { - // line 5 - echo " - "; - } - // line 9 - echo " "; - $this->displayParentBlock("head", $context, $blocks); - echo " -"; - - $__internal_692aa8693a9eef84a87e6f2f13d15c45c321f178c04154ff09a082f3fb2db9a7->leave($__internal_692aa8693a9eef84a87e6f2f13d15c45c321f178c04154ff09a082f3fb2db9a7_prof); - - } - - // line 12 - public function block_menu($context, array $blocks = array()) - { - $__internal_592a8d4f14a1ec1780a3ea8c120e7265525647cff134e208e5915e1570765848 = $this->env->getExtension("native_profiler"); - $__internal_592a8d4f14a1ec1780a3ea8c120e7265525647cff134e208e5915e1570765848->enter($__internal_592a8d4f14a1ec1780a3ea8c120e7265525647cff134e208e5915e1570765848_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 13 - echo " - - Exception - - "; - // line 17 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { - // line 18 - echo " 1 - "; - } - // line 20 - echo " - -"; - - $__internal_592a8d4f14a1ec1780a3ea8c120e7265525647cff134e208e5915e1570765848->leave($__internal_592a8d4f14a1ec1780a3ea8c120e7265525647cff134e208e5915e1570765848_prof); - - } - - // line 24 - public function block_panel($context, array $blocks = array()) - { - $__internal_c3180cdc43651a43f450305cfa113719be07cfacd447efab2d1b6a45a2ce7504 = $this->env->getExtension("native_profiler"); - $__internal_c3180cdc43651a43f450305cfa113719be07cfacd447efab2d1b6a45a2ce7504->enter($__internal_c3180cdc43651a43f450305cfa113719be07cfacd447efab2d1b6a45a2ce7504_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 25 - echo "

    Exception

    - - "; - // line 27 - if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { - // line 28 - echo "

    - No exception was thrown and uncaught during the request. -

    - "; - } else { - // line 32 - echo "
    - "; - // line 33 - echo $this->env->getExtension('http_kernel')->renderFragment($this->env->getExtension('routing')->getPath("_profiler_exception", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))))); - echo " -
    - "; - } - - $__internal_c3180cdc43651a43f450305cfa113719be07cfacd447efab2d1b6a45a2ce7504->leave($__internal_c3180cdc43651a43f450305cfa113719be07cfacd447efab2d1b6a45a2ce7504_prof); - - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/exception.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 112 => 33, 109 => 32, 103 => 28, 101 => 27, 97 => 25, 91 => 24, 82 => 20, 78 => 18, 76 => 17, 70 => 13, 64 => 12, 54 => 9, 48 => 6, 45 => 5, 42 => 4, 36 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% block head %}*/ -/* {% if collector.hasexception %}*/ -/* */ -/* {% endif %}*/ -/* {{ parent() }}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Exception*/ -/* */ -/* {% if collector.hasexception %}*/ -/* 1*/ -/* {% endif %}*/ -/* */ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

    Exception

    */ -/* */ -/* {% if not collector.hasexception %}*/ -/*

    */ -/* No exception was thrown and uncaught during the request.*/ -/*

    */ -/* {% else %}*/ -/*
    */ -/* {{ render(path('_profiler_exception', { 'token': token })) }}*/ -/*
    */ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ diff --git a/app/cache/dev/twig/e/3/e3d45b5641d2b07a724f2fc7350cc6dbc17b66c009f495272011b36cff3ef39b.php b/app/cache/dev/twig/e/3/e3d45b5641d2b07a724f2fc7350cc6dbc17b66c009f495272011b36cff3ef39b.php deleted file mode 100644 index cd08031..0000000 --- a/app/cache/dev/twig/e/3/e3d45b5641d2b07a724f2fc7350cc6dbc17b66c009f495272011b36cff3ef39b.php +++ /dev/null @@ -1,73 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_02f15e301767415e4d96e6c7e06ff636e64af998d85c22633300a060dfd574f7 = $this->env->getExtension("native_profiler"); - $__internal_02f15e301767415e4d96e6c7e06ff636e64af998d85c22633300a060dfd574f7->enter($__internal_02f15e301767415e4d96e6c7e06ff636e64af998d85c22633300a060dfd574f7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:trace.txt.twig")); - - // line 1 - if ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) { - // line 2 - echo " at "; - echo (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "class", array()) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "type", array())) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())); - echo "("; - echo $this->env->getExtension('code')->formatArgsAsText($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "args", array())); - echo ") -"; - } else { - // line 4 - echo " at n/a -"; - } - // line 6 - if (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "file", array(), "any", true, true) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "line", array(), "any", true, true))) { - // line 7 - echo " in "; - echo $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()); - echo " line "; - echo $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array()); - echo " -"; - } - - $__internal_02f15e301767415e4d96e6c7e06ff636e64af998d85c22633300a060dfd574f7->leave($__internal_02f15e301767415e4d96e6c7e06ff636e64af998d85c22633300a060dfd574f7_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:trace.txt.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 38 => 7, 36 => 6, 32 => 4, 24 => 2, 22 => 1,); - } -} -/* {% if trace.function %}*/ -/* at {{ trace.class ~ trace.type ~ trace.function }}({{ trace.args|format_args_as_text }})*/ -/* {% else %}*/ -/* at n/a*/ -/* {% endif %}*/ -/* {% if trace.file is defined and trace.line is defined %}*/ -/* in {{ trace.file }} line {{ trace.line }}*/ -/* {% endif %}*/ -/* */ diff --git a/app/cache/dev/twig/e/8/e8ea7a31e18813de5cc418f14fe969d1b13308b83275fe832850688262b9495b.php b/app/cache/dev/twig/e/8/e8ea7a31e18813de5cc418f14fe969d1b13308b83275fe832850688262b9495b.php deleted file mode 100644 index 7fb086c..0000000 --- a/app/cache/dev/twig/e/8/e8ea7a31e18813de5cc418f14fe969d1b13308b83275fe832850688262b9495b.php +++ /dev/null @@ -1,63 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_735cc2c79054b333aaa4724a59f71550763e8f3d6bfe1358caa09d8d0345f227 = $this->env->getExtension("native_profiler"); - $__internal_735cc2c79054b333aaa4724a59f71550763e8f3d6bfe1358caa09d8d0345f227->enter($__internal_735cc2c79054b333aaa4724a59f71550763e8f3d6bfe1358caa09d8d0345f227_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:traces.txt.twig")); - - // line 1 - if (twig_length_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array()))) { - // line 2 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array())); - foreach ($context['_seq'] as $context["_key"] => $context["trace"]) { - // line 3 - $this->loadTemplate("TwigBundle:Exception:trace.txt.twig", "TwigBundle:Exception:traces.txt.twig", 3)->display(array("trace" => $context["trace"])); - // line 4 - echo " -"; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['trace'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - } - - $__internal_735cc2c79054b333aaa4724a59f71550763e8f3d6bfe1358caa09d8d0345f227->leave($__internal_735cc2c79054b333aaa4724a59f71550763e8f3d6bfe1358caa09d8d0345f227_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:traces.txt.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 30 => 4, 28 => 3, 24 => 2, 22 => 1,); - } -} -/* {% if exception.trace|length %}*/ -/* {% for trace in exception.trace %}*/ -/* {% include 'TwigBundle:Exception:trace.txt.twig' with { 'trace': trace } only %}*/ -/* */ -/* {% endfor %}*/ -/* {% endif %}*/ -/* */ diff --git a/app/cache/dev/twig/f/6/f63b156946f217e4c22fe8bd466b3ffc665625bcc10f984ba6cf69f719b83bfa.php b/app/cache/dev/twig/f/6/f63b156946f217e4c22fe8bd466b3ffc665625bcc10f984ba6cf69f719b83bfa.php deleted file mode 100644 index 83d6e6a..0000000 --- a/app/cache/dev/twig/f/6/f63b156946f217e4c22fe8bd466b3ffc665625bcc10f984ba6cf69f719b83bfa.php +++ /dev/null @@ -1,137 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_4e9f7de523f76c2631bb2c4465007ac577d91501fca3442068ccdadc3c455132 = $this->env->getExtension("native_profiler"); - $__internal_4e9f7de523f76c2631bb2c4465007ac577d91501fca3442068ccdadc3c455132->enter($__internal_4e9f7de523f76c2631bb2c4465007ac577d91501fca3442068ccdadc3c455132_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "TwigBundle:Exception:trace.html.twig")); - - // line 1 - if ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) { - // line 2 - echo " at - - env, $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "class", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "short_class", array()), "html", null, true); - echo " - "; - // line 5 - echo twig_escape_filter($this->env, ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "type", array()) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())), "html", null, true); - echo " - - ("; - // line 7 - echo $this->env->getExtension('code')->formatArgs($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "args", array())); - echo ") -"; - } - // line 9 - echo " -"; - // line 10 - if (((($this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "file", array(), "any", true, true) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array())) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "line", array(), "any", true, true)) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array()))) { - // line 11 - echo " "; - echo (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) ? ("
    ") : ("")); - echo " - in "; - // line 12 - echo $this->env->getExtension('code')->formatFile($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()), $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array())); - echo "  - "; - // line 13 - ob_start(); - // line 14 - echo " env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); - echo "'); switchIcons('icon-"; - echo twig_escape_filter($this->env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); - echo "-open', 'icon-"; - echo twig_escape_filter($this->env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); - echo "-close'); return false;\"> - env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); - echo "-close\" alt=\"-\" src=\"data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=\" style=\"display: "; - echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("inline") : ("none")); - echo "\" /> - env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); - echo "-open\" alt=\"+\" src=\"data:image/gif;base64,R0lGODlhEgASAMQTANft99/v+Ga44bHb8ITG52S44dXs9+z1+uPx+YvK6WC24G+944/M6W28443L6dnu+Ge54v/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAASABIAQAVS4DQBTiOd6LkwgJgeUSzHSDoNaZ4PU6FLgYBA5/vFID/DbylRGiNIZu74I0h1hNsVxbNuUV4d9SsZM2EzWe1qThVzwWFOAFCQFa1RQq6DJB4iIQA7\" style=\"display: "; - echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("none") : ("inline")); - echo "\" /> - - "; - echo trim(preg_replace('/>\s+<', ob_get_clean())); - // line 19 - echo "
    env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); - echo "\" style=\"display: "; - echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("block") : ("none")); - echo "\" class=\"trace\"> - "; - // line 20 - echo $this->env->getExtension('code')->fileExcerpt($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()), $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array())); - echo " -
    -"; - } - - $__internal_4e9f7de523f76c2631bb2c4465007ac577d91501fca3442068ccdadc3c455132->leave($__internal_4e9f7de523f76c2631bb2c4465007ac577d91501fca3442068ccdadc3c455132_prof); - - } - - public function getTemplateName() - { - return "TwigBundle:Exception:trace.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 90 => 20, 83 => 19, 75 => 16, 69 => 15, 60 => 14, 58 => 13, 54 => 12, 49 => 11, 47 => 10, 44 => 9, 39 => 7, 34 => 5, 28 => 4, 24 => 2, 22 => 1,); - } -} -/* {% if trace.function %}*/ -/* at*/ -/* */ -/* {{ trace.short_class }}*/ -/* {{ trace.type ~ trace.function }}*/ -/* */ -/* ({{ trace.args|format_args }})*/ -/* {% endif %}*/ -/* */ -/* {% if trace.file is defined and trace.file and trace.line is defined and trace.line %}*/ -/* {{ trace.function ? '
    ' : '' }}*/ -/* in {{ trace.file|format_file(trace.line) }} */ -/* {% spaceless %}*/ -/* */ -/* -*/ -/* +*/ -/* */ -/* {% endspaceless %}*/ -/*
    */ -/* {{ trace.file|file_excerpt(trace.line) }}*/ -/*
    */ -/* {% endif %}*/ -/* */ diff --git a/app/cache/dev/twig/f/8/f837674a51851669eee3935507ed4d13dd3945a6b300a1c709bcff0743a9d260.php b/app/cache/dev/twig/f/8/f837674a51851669eee3935507ed4d13dd3945a6b300a1c709bcff0743a9d260.php deleted file mode 100644 index 6c06f76..0000000 --- a/app/cache/dev/twig/f/8/f837674a51851669eee3935507ed4d13dd3945a6b300a1c709bcff0743a9d260.php +++ /dev/null @@ -1,678 +0,0 @@ -parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/logger.html.twig", 1); - $this->blocks = array( - 'toolbar' => array($this, 'block_toolbar'), - 'menu' => array($this, 'block_menu'), - 'panel' => array($this, 'block_panel'), - ); - } - - protected function doGetParent(array $context) - { - return "@WebProfiler/Profiler/layout.html.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $__internal_c18a99f136ce73f4e229fc94bea077cc0cdce7a537611bed921646c76831c899 = $this->env->getExtension("native_profiler"); - $__internal_c18a99f136ce73f4e229fc94bea077cc0cdce7a537611bed921646c76831c899->enter($__internal_c18a99f136ce73f4e229fc94bea077cc0cdce7a537611bed921646c76831c899_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/logger.html.twig")); - - // line 3 - $context["logger"] = $this; - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - - $__internal_c18a99f136ce73f4e229fc94bea077cc0cdce7a537611bed921646c76831c899->leave($__internal_c18a99f136ce73f4e229fc94bea077cc0cdce7a537611bed921646c76831c899_prof); - - } - - // line 5 - public function block_toolbar($context, array $blocks = array()) - { - $__internal_08986c3a7e9538d064f6bf5d5fcebf8b8168298aec0008e91b37eb62d1de31b0 = $this->env->getExtension("native_profiler"); - $__internal_08986c3a7e9538d064f6bf5d5fcebf8b8168298aec0008e91b37eb62d1de31b0->enter($__internal_08986c3a7e9538d064f6bf5d5fcebf8b8168298aec0008e91b37eb62d1de31b0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); - - // line 6 - echo " "; - if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countscreams", array()))) { - // line 7 - echo " "; - ob_start(); - // line 8 - echo " - "; - // line 9 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) { - // line 10 - echo " "; - $context["status_color"] = "red"; - // line 11 - echo " "; - } elseif ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) { - // line 12 - echo " "; - $context["status_color"] = "yellow"; - // line 13 - echo " "; - } - // line 14 - echo " "; - $context["error_count"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countscreams", array())); - // line 15 - echo " env, (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")), "html", null, true); - } - echo "\">"; - echo twig_escape_filter($this->env, (isset($context["error_count"]) ? $context["error_count"] : $this->getContext($context, "error_count")), "html", null, true); - echo " - "; - $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 17 - echo " "; - ob_start(); - // line 18 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) { - // line 19 - echo "
    - Errors - "; - // line 21 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()), "html", null, true); - echo " -
    - "; - } - // line 24 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) { - // line 25 - echo "
    - Deprecated Calls - "; - // line 27 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array()), "html", null, true); - echo " -
    - "; - } - // line 30 - echo " "; - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countscreams", array())) { - // line 31 - echo "
    - Silenced Errors - "; - // line 33 - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countscreams", array()), "html", null, true); - echo " -
    - "; - } - // line 36 - echo " "; - $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - // line 37 - echo " "; - $this->loadTemplate("@WebProfiler/Profiler/toolbar_item.html.twig", "@WebProfiler/Collector/logger.html.twig", 37)->display(array_merge($context, array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))))); - // line 38 - echo " "; - } - - $__internal_08986c3a7e9538d064f6bf5d5fcebf8b8168298aec0008e91b37eb62d1de31b0->leave($__internal_08986c3a7e9538d064f6bf5d5fcebf8b8168298aec0008e91b37eb62d1de31b0_prof); - - } - - // line 41 - public function block_menu($context, array $blocks = array()) - { - $__internal_e27c7bd744a76d7c25b3a26ff38caa33fd92ab3ddc3bd47c73db28020e62434e = $this->env->getExtension("native_profiler"); - $__internal_e27c7bd744a76d7c25b3a26ff38caa33fd92ab3ddc3bd47c73db28020e62434e->enter($__internal_e27c7bd744a76d7c25b3a26ff38caa33fd92ab3ddc3bd47c73db28020e62434e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); - - // line 42 - echo " - - Logs - "; - // line 45 - if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countscreams", array()))) { - // line 46 - echo " "; - $context["error_count"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countscreams", array())); - // line 47 - echo " - "; - // line 48 - echo twig_escape_filter($this->env, (isset($context["error_count"]) ? $context["error_count"] : $this->getContext($context, "error_count")), "html", null, true); - echo " - - "; - } - // line 51 - echo " -"; - - $__internal_e27c7bd744a76d7c25b3a26ff38caa33fd92ab3ddc3bd47c73db28020e62434e->leave($__internal_e27c7bd744a76d7c25b3a26ff38caa33fd92ab3ddc3bd47c73db28020e62434e_prof); - - } - - // line 54 - public function block_panel($context, array $blocks = array()) - { - $__internal_65fee112d90bbfc3fbc1c4a9c76cd7a2c37d235af53b9c4eb68808cb5c47322f = $this->env->getExtension("native_profiler"); - $__internal_65fee112d90bbfc3fbc1c4a9c76cd7a2c37d235af53b9c4eb68808cb5c47322f->enter($__internal_65fee112d90bbfc3fbc1c4a9c76cd7a2c37d235af53b9c4eb68808cb5c47322f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); - - // line 55 - echo "

    Logs

    - - "; - // line 57 - $context["priority"] = $this->getAttribute($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "query", array()), "get", array(0 => "priority", 1 => 0), "method"); - // line 58 - echo " - - - - - -
    Filter -
    - - - - -
    -
    - - "; - // line 89 - if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array())) { - // line 90 - echo "
      - "; - // line 91 - $context["log_loop_index"] = 0; - // line 92 - echo " "; - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array())); - $context['_iterated'] = false; - $context['loop'] = array( - 'parent' => $context['_parent'], - 'index0' => 0, - 'index' => 1, - 'first' => true, - ); - if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { - $length = count($context['_seq']); - $context['loop']['revindex0'] = $length - 1; - $context['loop']['revindex'] = $length; - $context['loop']['length'] = $length; - $context['loop']['last'] = 1 === $length; - } - foreach ($context['_seq'] as $context["_key"] => $context["log"]) { - // line 93 - echo " "; - $context["is_deprecation"] = (($this->getAttribute($this->getAttribute($context["log"], "context", array(), "any", false, true), "level", array(), "any", true, true) && $this->getAttribute($this->getAttribute($context["log"], "context", array(), "any", false, true), "type", array(), "any", true, true)) && ((twig_constant("E_DEPRECATED") == $this->getAttribute($this->getAttribute($context["log"], "context", array()), "type", array())) || (twig_constant("E_USER_DEPRECATED") == $this->getAttribute($this->getAttribute($context["log"], "context", array()), "type", array())))); - // line 94 - echo " "; - if (((((isset($context["priority"]) ? $context["priority"] : $this->getContext($context, "priority")) == "-100")) ? ((isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))) : (($this->getAttribute($context["log"], "priority", array()) >= (isset($context["priority"]) ? $context["priority"] : $this->getContext($context, "priority")))))) { - // line 95 - echo " "; - $context["log_loop_index"] = ((isset($context["log_loop_index"]) ? $context["log_loop_index"] : $this->getContext($context, "log_loop_index")) + 1); - // line 96 - echo "
    • env, twig_cycle(array(0 => "odd", 1 => "even"), (isset($context["log_loop_index"]) ? $context["log_loop_index"] : $this->getContext($context, "log_loop_index"))), "html", null, true); - if ($this->getAttribute($this->getAttribute($context["log"], "context", array(), "any", false, true), "scream", array(), "any", true, true)) { - echo " scream"; - } elseif (($this->getAttribute($context["log"], "priority", array()) >= 400)) { - echo " error"; - } elseif ((($this->getAttribute($context["log"], "priority", array()) >= 300) || (isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation")))) { - echo " warning"; - } - echo "\"> - "; - // line 97 - echo $context["logger"]->getdisplay_message($this->getAttribute($context["loop"], "index", array()), $context["log"], (isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))); - echo " -
    • - "; - } - // line 100 - echo " "; - $context['_iterated'] = true; - ++$context['loop']['index0']; - ++$context['loop']['index']; - $context['loop']['first'] = false; - if (isset($context['loop']['length'])) { - --$context['loop']['revindex0']; - --$context['loop']['revindex']; - $context['loop']['last'] = 0 === $context['loop']['revindex0']; - } - } - if (!$context['_iterated']) { - // line 101 - echo "
    • No logs available for this priority.
    • - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 103 - echo "
    - "; - } else { - // line 105 - echo "

    - No logs available. -

    - "; - } - - $__internal_65fee112d90bbfc3fbc1c4a9c76cd7a2c37d235af53b9c4eb68808cb5c47322f->leave($__internal_65fee112d90bbfc3fbc1c4a9c76cd7a2c37d235af53b9c4eb68808cb5c47322f_prof); - - } - - // line 112 - public function getdisplay_message($__log_index__ = null, $__log__ = null, $__is_deprecation__ = null) - { - $context = $this->env->mergeGlobals(array( - "log_index" => $__log_index__, - "log" => $__log__, - "is_deprecation" => $__is_deprecation__, - "varargs" => func_num_args() > 3 ? array_slice(func_get_args(), 3) : array(), - )); - - $blocks = array(); - - ob_start(); - try { - $__internal_3a4ac800409415f4eab571acdb48428ea61adfd1cf90181f2824a256790db67d = $this->env->getExtension("native_profiler"); - $__internal_3a4ac800409415f4eab571acdb48428ea61adfd1cf90181f2824a256790db67d->enter($__internal_3a4ac800409415f4eab571acdb48428ea61adfd1cf90181f2824a256790db67d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "display_message")); - - // line 113 - echo " "; - echo twig_escape_filter($this->env, (((isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))) ? ("DEPRECATED") : ($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "priorityName", array()))), "html", null, true); - echo " - "; - echo twig_escape_filter($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "message", array()), "html", null, true); - echo " - - "; - // line 115 - if ((isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))) { - // line 116 - echo " "; - $context["stack"] = (($this->getAttribute($this->getAttribute((isset($context["log"]) ? $context["log"] : null), "context", array(), "any", false, true), "stack", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["log"]) ? $context["log"] : null), "context", array(), "any", false, true), "stack", array()), array())) : (array())); - // line 117 - echo " "; - $context["id"] = ("sf-call-stack-" . (isset($context["log_index"]) ? $context["log_index"] : $this->getContext($context, "log_index"))); - // line 118 - echo " - "; - // line 119 - if ($this->getAttribute($this->getAttribute((isset($context["log"]) ? $context["log"] : null), "context", array(), "any", false, true), "errorCount", array(), "any", true, true)) { - // line 120 - echo " ("; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array()), "errorCount", array()), "html", null, true); - echo "x) - "; - } - // line 122 - echo " - "; - // line 123 - if ((isset($context["stack"]) ? $context["stack"] : $this->getContext($context, "stack"))) { - // line 124 - echo " env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); - echo "', document.getElementById('"; - echo twig_escape_filter($this->env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); - echo "-on'), document.getElementById('"; - echo twig_escape_filter($this->env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); - echo "-off')); return false;\"> - env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); - echo "-off\" alt=\"-\" src=\"data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=\" style=\"display:none\"> - env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); - echo "-on\" alt=\"+\" src=\"data:image/gif;base64,R0lGODlhEgASAMQTANft99/v+Ga44bHb8ITG52S44dXs9+z1+uPx+YvK6WC24G+944/M6W28443L6dnu+Ge54v/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAASABIAQAVS4DQBTiOd6LkwgJgeUSzHSDoNaZ4PU6FLgYBA5/vFID/DbylRGiNIZu74I0h1hNsVxbNuUV4d9SsZM2EzWe1qThVzwWFOAFCQFa1RQq6DJB4iIQA7\" style=\"display:inline\"> - - "; - } - // line 129 - echo " - "; - // line 130 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable((isset($context["stack"]) ? $context["stack"] : $this->getContext($context, "stack"))); - foreach ($context['_seq'] as $context["index"] => $context["call"]) { - if (($context["index"] > 1)) { - // line 131 - echo " "; - if (($context["index"] == 2)) { - // line 132 - echo "
      env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); - echo "\" style=\"display: none\"> - "; - } - // line 134 - echo " "; - if ($this->getAttribute($context["call"], "class", array(), "any", true, true)) { - // line 135 - echo " "; - $context["from"] = (($this->env->getExtension('code')->abbrClass($this->getAttribute($context["call"], "class", array())) . "::") . $this->env->getExtension('code')->abbrMethod($this->getAttribute($context["call"], "function", array()))); - // line 136 - echo " "; - } elseif ($this->getAttribute($context["call"], "function", array(), "any", true, true)) { - // line 137 - echo " "; - $context["from"] = $this->env->getExtension('code')->abbrMethod($this->getAttribute($context["call"], "function", array())); - // line 138 - echo " "; - } elseif ($this->getAttribute($context["call"], "file", array(), "any", true, true)) { - // line 139 - echo " "; - $context["from"] = $this->getAttribute($context["call"], "file", array()); - // line 140 - echo " "; - } else { - // line 141 - echo " "; - $context["from"] = "-"; - // line 142 - echo " "; - } - // line 143 - echo " -
    • Called from "; - // line 144 - echo ((($this->getAttribute($context["call"], "file", array(), "any", true, true) && $this->getAttribute($context["call"], "line", array(), "any", true, true))) ? ($this->env->getExtension('code')->formatFile($this->getAttribute($context["call"], "file", array()), $this->getAttribute($context["call"], "line", array()), (isset($context["from"]) ? $context["from"] : $this->getContext($context, "from")))) : ((isset($context["from"]) ? $context["from"] : $this->getContext($context, "from")))); - echo "
    • - - "; - // line 146 - if (($context["index"] == (twig_length_filter($this->env, (isset($context["stack"]) ? $context["stack"] : $this->getContext($context, "stack"))) - 1))) { - // line 147 - echo "
    - "; - } - // line 149 - echo " "; - } - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['index'], $context['call'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 150 - echo " "; - } else { - // line 151 - echo " "; - if (($this->getAttribute((isset($context["log"]) ? $context["log"] : null), "context", array(), "any", true, true) && !twig_test_empty($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array())))) { - // line 152 - echo "
    - - Context: "; - // line 154 - echo twig_escape_filter($this->env, twig_jsonencode_filter($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array()), (64 | 256)), "html", null, true); - echo " - - "; - } - // line 157 - echo " "; - } - - $__internal_3a4ac800409415f4eab571acdb48428ea61adfd1cf90181f2824a256790db67d->leave($__internal_3a4ac800409415f4eab571acdb48428ea61adfd1cf90181f2824a256790db67d_prof); - - } catch (Exception $e) { - ob_end_clean(); - - throw $e; - } - - return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); - } - - public function getTemplateName() - { - return "@WebProfiler/Collector/logger.html.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 491 => 157, 485 => 154, 481 => 152, 478 => 151, 475 => 150, 468 => 149, 464 => 147, 462 => 146, 457 => 144, 454 => 143, 451 => 142, 448 => 141, 445 => 140, 442 => 139, 439 => 138, 436 => 137, 433 => 136, 430 => 135, 427 => 134, 421 => 132, 418 => 131, 413 => 130, 410 => 129, 404 => 126, 400 => 125, 391 => 124, 389 => 123, 386 => 122, 380 => 120, 378 => 119, 375 => 118, 372 => 117, 369 => 116, 367 => 115, 359 => 113, 342 => 112, 331 => 105, 327 => 103, 320 => 101, 307 => 100, 301 => 97, 289 => 96, 286 => 95, 283 => 94, 280 => 93, 261 => 92, 259 => 91, 256 => 90, 254 => 89, 243 => 80, 235 => 78, 232 => 77, 229 => 76, 226 => 75, 223 => 74, 208 => 72, 205 => 71, 202 => 70, 199 => 69, 194 => 68, 183 => 58, 181 => 57, 177 => 55, 171 => 54, 163 => 51, 157 => 48, 154 => 47, 151 => 46, 149 => 45, 144 => 42, 138 => 41, 130 => 38, 127 => 37, 124 => 36, 118 => 33, 114 => 31, 111 => 30, 105 => 27, 101 => 25, 98 => 24, 92 => 21, 88 => 19, 85 => 18, 82 => 17, 71 => 15, 68 => 14, 65 => 13, 62 => 12, 59 => 11, 56 => 10, 54 => 9, 51 => 8, 48 => 7, 45 => 6, 39 => 5, 32 => 1, 30 => 3, 11 => 1,); - } -} -/* {% extends '@WebProfiler/Profiler/layout.html.twig' %}*/ -/* */ -/* {% import _self as logger %}*/ -/* */ -/* {% block toolbar %}*/ -/* {% if collector.counterrors or collector.countdeprecations or collector.countscreams %}*/ -/* {% set icon %}*/ -/* */ -/* {% if collector.counterrors %}*/ -/* {% set status_color = "red" %}*/ -/* {% elseif collector.countdeprecations %}*/ -/* {% set status_color = "yellow" %}*/ -/* {% endif %}*/ -/* {% set error_count = collector.counterrors + collector.countdeprecations + collector.countscreams %}*/ -/* {{ error_count }}*/ -/* {% endset %}*/ -/* {% set text %}*/ -/* {% if collector.counterrors %}*/ -/*
    */ -/* Errors*/ -/* {{ collector.counterrors }}*/ -/*
    */ -/* {% endif %}*/ -/* {% if collector.countdeprecations %}*/ -/*
    */ -/* Deprecated Calls*/ -/* {{ collector.countdeprecations }}*/ -/*
    */ -/* {% endif %}*/ -/* {% if collector.countscreams %}*/ -/*
    */ -/* Silenced Errors*/ -/* {{ collector.countscreams }}*/ -/*
    */ -/* {% endif %}*/ -/* {% endset %}*/ -/* {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %}*/ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* {% block menu %}*/ -/* */ -/* */ -/* Logs*/ -/* {% if collector.counterrors or collector.countdeprecations or collector.countscreams %}*/ -/* {% set error_count = collector.counterrors + collector.countdeprecations + collector.countscreams %}*/ -/* */ -/* {{ error_count }}*/ -/* */ -/* {% endif %}*/ -/* */ -/* {% endblock %}*/ -/* */ -/* {% block panel %}*/ -/*

    Logs

    */ -/* */ -/* {% set priority = request.query.get('priority', 0) %}*/ -/* */ -/* */ -/* */ -/* */ -/* */ -/* */ -/*
    Filter*/ -/*
    */ -/* */ -/* */ -/* */ -/* */ -/*
    */ -/*
    */ -/* */ -/* {% if collector.logs %}*/ -/*
      */ -/* {% set log_loop_index = 0 %}*/ -/* {% for log in collector.logs %}*/ -/* {% set is_deprecation = log.context.level is defined and log.context.type is defined and (constant('E_DEPRECATED') == log.context.type or constant('E_USER_DEPRECATED') == log.context.type) %}*/ -/* {% if priority == '-100' ? is_deprecation : log.priority >= priority %}*/ -/* {% set log_loop_index = log_loop_index + 1 %}*/ -/*
    • */ -/* {{ logger.display_message(loop.index, log, is_deprecation) }}*/ -/*
    • */ -/* {% endif %}*/ -/* {% else %}*/ -/*
    • No logs available for this priority.
    • */ -/* {% endfor %}*/ -/*
    */ -/* {% else %}*/ -/*

    */ -/* No logs available.*/ -/*

    */ -/* {% endif %}*/ -/* {% endblock %}*/ -/* */ -/* */ -/* {% macro display_message(log_index, log, is_deprecation) %}*/ -/* {{ is_deprecation ? 'DEPRECATED' : log.priorityName }} - {{ log.message }}*/ -/* */ -/* {% if is_deprecation %}*/ -/* {% set stack = log.context.stack|default([]) %}*/ -/* {% set id = 'sf-call-stack-' ~ log_index %}*/ -/* */ -/* {% if log.context.errorCount is defined %}*/ -/* ({{ log.context.errorCount }}x)*/ -/* {% endif %}*/ -/* */ -/* {% if stack %}*/ -/* */ -/* */ -/* +*/ -/* */ -/* {% endif %}*/ -/* */ -/* {% for index, call in stack if index > 1 %}*/ -/* {% if index == 2 %}*/ -/* */ -/* {% endif %}*/ -/* {% endfor %}*/ -/* {% else %}*/ -/* {% if log.context is defined and log.context is not empty %}*/ -/*
    */ -/* */ -/* Context: {{ log.context|json_encode(64 b-or 256) }}*/ -/* */ -/* {% endif %}*/ -/* {% endif %}*/ -/* {% endmacro %}*/ -/* */ diff --git a/app/config/routing.yml b/app/config/routing.yml index 637b813..3c7fda7 100755 --- a/app/config/routing.yml +++ b/app/config/routing.yml @@ -1,8 +1,4 @@ xav_site: resource: "@XavSiteBundle/Controller/" type: annotation - prefix: / - -app: - resource: "@AppBundle/Controller/" - type: annotation + prefix: / \ No newline at end of file diff --git a/app/logs/dev.log b/app/logs/dev.log index 3271cde..3ee0871 100644 --- a/app/logs/dev.log +++ b/app/logs/dev.log @@ -369,3 +369,229 @@ [2015-10-07 14:56:41] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] [2015-10-07 14:56:41] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] [2015-10-07 14:56:41] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] [] +[2015-10-21 16:43:39] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] +[2015-10-21 16:43:39] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". [] [] +[2015-10-21 16:43:39] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". [] [] +[2015-10-21 16:43:39] php.DEBUG: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"type":2,"file":"/var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php","line":55,"level":28928} [] +[2015-10-21 16:43:39] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:43:39] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate". [] [] +[2015-10-21 16:43:39] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate". [] [] +[2015-10-21 16:43:51] request.INFO: Matched route "homepage". {"route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://127.0.0.1:8000/"} [] +[2015-10-21 16:43:51] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". [] [] +[2015-10-21 16:43:51] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] [] +[2015-10-21 16:43:52] request.INFO: Matched route "_wdt". {"route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"d519e9","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/d519e9"} [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:43:52] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] [] +[2015-10-21 16:44:44] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Config\Exception\FileLoaderLoadException: "Cannot load resource "@AppBundle/Controller/". Make sure the "AppBundle" bundle is correctly registered and loaded in the application kernel class. If the bundle is registered, make sure the bundle path "@AppBundle/Controller/" is not empty." at /var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Config/Loader/Loader.php line 73 {"exception":"[object] (Symfony\\Component\\Config\\Exception\\FileLoaderLoadException(code: 0): Cannot load resource \"@AppBundle/Controller/\". Make sure the \"AppBundle\" bundle is correctly registered and loaded in the application kernel class. If the bundle is registered, make sure the bundle path \"@AppBundle/Controller/\" is not empty. at /var/www/html/portfolio-photo/vendor/symfony/symfony/src/Symfony/Component/Config/Loader/Loader.php:73)"} [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". [] [] +[2015-10-21 16:44:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException". [] [] +[2015-10-21 16:44:45] event.DEBUG: Listener "Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException" stopped propagation of the event "kernel.exception". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:44:45] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] [] +[2015-10-21 16:45:15] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /"" at /var/www/html/portfolio-photo/app/cache/dev/classes.php line 2056 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /\" at /var/www/html/portfolio-photo/app/cache/dev/classes.php:2056, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): at /var/www/html/portfolio-photo/app/cache/dev/appDevUrlMatcher.php:135)"} [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\EventDispatcher\Debug\WrappedListener::__invoke". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException". [] [] +[2015-10-21 16:45:15] event.DEBUG: Listener "Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException" stopped propagation of the event "kernel.exception". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] [] +[2015-10-21 16:45:15] request.INFO: Matched route "_wdt". {"route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"df622f","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/df622f"} [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:45:15] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] [] +[2015-10-21 16:45:43] request.INFO: Matched route "xav_site_default_index". {"route_parameters":{"_controller":"Xav\\SiteBundle\\Controller\\DefaultController::indexAction","name":"xavier","_route":"xav_site_default_index"},"request_uri":"http://127.0.0.1:8000/hello/xavier"} [] +[2015-10-21 16:45:43] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.view" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView". [] [] +[2015-10-21 16:45:43] event.DEBUG: Listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView" stopped propagation of the event "kernel.view". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SaveSessionListener::onKernelResponse". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.finish_request" to listener "Symfony\Component\Security\Http\Firewall::onKernelFinishRequest". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:45:43] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] [] +[2015-10-21 16:48:43] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] +[2015-10-21 16:48:43] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". [] [] +[2015-10-21 16:48:43] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". [] [] +[2015-10-21 16:48:43] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:48:43] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate". [] [] +[2015-10-21 16:48:43] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate". [] [] +[2015-10-21 16:48:44] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] +[2015-10-21 16:48:44] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". [] [] +[2015-10-21 16:48:44] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". [] [] +[2015-10-21 16:48:44] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] +[2015-10-21 16:48:44] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate". [] [] +[2015-10-21 16:48:44] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate". [] [] diff --git a/composer.json b/composer.json index 0afe860..35bf6d5 100755 --- a/composer.json +++ b/composer.json @@ -17,7 +17,8 @@ "symfony/monolog-bundle": "~2.4", "sensio/distribution-bundle": "~4.0", "sensio/framework-extra-bundle": "^3.0.2", - "incenteev/composer-parameter-handler": "~2.0" + "incenteev/composer-parameter-handler": "~2.0", + "friendsofsymfony/rest-bundle": "^1.7" }, "require-dev": { "sensio/generator-bundle": "~2.3" diff --git a/composer.lock b/composer.lock index 790e18b..a82fc2d 100755 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "f6f459ab097a77f0dcc522a3f2565cd6", - "content-hash": "97a65ddfd75e56eb06298c9192afa45f", + "hash": "2929d6edd917a517f6807e67e454996a", + "content-hash": "589f8a55ece6dc659e47d11c90f0fb9b", "packages": [ { "name": "doctrine/annotations", @@ -769,6 +769,91 @@ ], "time": "2015-08-31 12:59:39" }, + { + "name": "friendsofsymfony/rest-bundle", + "version": "1.7.2", + "target-dir": "FOS/RestBundle", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git", + "reference": "70db6f7af4bb198881bfc9106aea633fa3e818c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/70db6f7af4bb198881bfc9106aea633fa3e818c0", + "reference": "70db6f7af4bb198881bfc9106aea633fa3e818c0", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.0", + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/framework-bundle": "~2.3", + "symfony/http-kernel": "~2.3,>=2.3.24", + "willdurand/jsonp-callback-validator": "~1.0", + "willdurand/negotiation": "~1.2" + }, + "conflict": { + "jms/serializer": "<0.12", + "jms/serializer-bundle": "<0.11", + "symfony/validator": ">=2.5.0,<2.5.5" + }, + "require-dev": { + "jms/serializer": "~0.13|~1.0", + "jms/serializer-bundle": "~0.12|~1.0", + "phpoption/phpoption": "~1.1.0", + "sensio/framework-extra-bundle": "~3.0", + "sllh/php-cs-fixer-styleci-bridge": "^1.3", + "symfony/browser-kit": "~2.3", + "symfony/dependency-injection": "~2.3", + "symfony/form": "~2.3", + "symfony/security": "~2.3", + "symfony/serializer": "~2.3", + "symfony/validator": "~2.3", + "symfony/yaml": "~2.3" + }, + "suggest": { + "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended, requires ~0.12||~1.0", + "sensio/framework-extra-bundle": "Add support for route annotations and the view response listener, requires ~3.0", + "symfony/serializer": "Add support for basic serialization capabilities and xml decoding, requires ~2.3", + "symfony/validator": "Add support for validation capabilities in the ParamFetcher, requires ~2.3" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-0": { + "FOS\\RestBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lukas Kahwe Smith", + "email": "smith@pooteeweet.org" + }, + { + "name": "FriendsOfSymfony Community", + "homepage": "https://github.com/friendsofsymfony/FOSRestBundle/contributors" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "This Bundle provides various tools to rapidly develop RESTful API's with Symfony2", + "homepage": "http://friendsofsymfony.github.com", + "keywords": [ + "rest" + ], + "time": "2015-10-16 07:05:52" + }, { "name": "incenteev/composer-parameter-handler", "version": "v2.1.1", @@ -1642,6 +1727,95 @@ "templating" ], "time": "2015-09-22 13:59:32" + }, + { + "name": "willdurand/jsonp-callback-validator", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/JsonpCallbackValidator.git", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonpCallbackValidator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com", + "homepage": "http://www.willdurand.fr" + } + ], + "description": "JSONP callback validator.", + "time": "2014-01-20 22:35:06" + }, + { + "name": "willdurand/negotiation", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/2a59f2376557303e3fa91465ab691abb82945edf", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Negotiation\\": "src/Negotiation" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com" + } + ], + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ], + "time": "2015-10-01 07:42:40" } ], "packages-dev": [ diff --git a/src/AppBundle/AppBundle.php b/src/AppBundle/AppBundle.php deleted file mode 100755 index 05123b6..0000000 --- a/src/AppBundle/AppBundle.php +++ /dev/null @@ -1,9 +0,0 @@ -render('default/index.html.twig', array( - 'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'), - )); - } -} diff --git a/src/AppBundle/Tests/Controller/DefaultControllerTest.php b/src/AppBundle/Tests/Controller/DefaultControllerTest.php deleted file mode 100755 index 87989da..0000000 --- a/src/AppBundle/Tests/Controller/DefaultControllerTest.php +++ /dev/null @@ -1,18 +0,0 @@ -request('GET', '/'); - - $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->assertContains('Welcome to Symfony', $crawler->filter('#container h1')->text()); - } -} diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 035cc43..10d63b5 100755 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -11,6 +11,8 @@ 'Sensio\\Bundle\\DistributionBundle' => array($vendorDir . '/sensio/distribution-bundle'), 'SensioLabs\\Security' => array($vendorDir . '/sensiolabs/security-checker'), 'Psr\\Log\\' => array($vendorDir . '/psr/log'), + 'JsonpCallbackValidator' => array($vendorDir . '/willdurand/jsonp-callback-validator/src'), + 'FOS\\RestBundle' => array($vendorDir . '/friendsofsymfony/rest-bundle'), 'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'), 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib'), 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'), diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 1be5594..7266e67 100755 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -17,6 +17,7 @@ 'Symfony\\Bridge\\Monolog\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bridge/Monolog'), 'Symfony\\Bridge\\Doctrine\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bridge/Doctrine'), 'Sensio\\Bundle\\FrameworkExtraBundle\\' => array($vendorDir . '/sensio/framework-extra-bundle'), + 'Negotiation\\' => array($vendorDir . '/willdurand/negotiation/src/Negotiation'), 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), 'Incenteev\\ParameterHandler\\' => array($vendorDir . '/incenteev/composer-parameter-handler'), 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index dd19dd1..9d7a1a2 100755 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1734,5 +1734,185 @@ } ], "description": "This bundle generates code for you" + }, + { + "name": "willdurand/jsonp-callback-validator", + "version": "v1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/JsonpCallbackValidator.git", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "time": "2014-01-20 22:35:06", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "JsonpCallbackValidator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com", + "homepage": "http://www.willdurand.fr" + } + ], + "description": "JSONP callback validator." + }, + { + "name": "willdurand/negotiation", + "version": "1.5.0", + "version_normalized": "1.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/2a59f2376557303e3fa91465ab691abb82945edf", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2015-10-01 07:42:40", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Negotiation\\": "src/Negotiation" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com" + } + ], + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ] + }, + { + "name": "friendsofsymfony/rest-bundle", + "version": "1.7.2", + "version_normalized": "1.7.2.0", + "target-dir": "FOS/RestBundle", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git", + "reference": "70db6f7af4bb198881bfc9106aea633fa3e818c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/70db6f7af4bb198881bfc9106aea633fa3e818c0", + "reference": "70db6f7af4bb198881bfc9106aea633fa3e818c0", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.0", + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/framework-bundle": "~2.3", + "symfony/http-kernel": "~2.3,>=2.3.24", + "willdurand/jsonp-callback-validator": "~1.0", + "willdurand/negotiation": "~1.2" + }, + "conflict": { + "jms/serializer": "<0.12", + "jms/serializer-bundle": "<0.11", + "symfony/validator": ">=2.5.0,<2.5.5" + }, + "require-dev": { + "jms/serializer": "~0.13|~1.0", + "jms/serializer-bundle": "~0.12|~1.0", + "phpoption/phpoption": "~1.1.0", + "sensio/framework-extra-bundle": "~3.0", + "sllh/php-cs-fixer-styleci-bridge": "^1.3", + "symfony/browser-kit": "~2.3", + "symfony/dependency-injection": "~2.3", + "symfony/form": "~2.3", + "symfony/security": "~2.3", + "symfony/serializer": "~2.3", + "symfony/validator": "~2.3", + "symfony/yaml": "~2.3" + }, + "suggest": { + "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended, requires ~0.12||~1.0", + "sensio/framework-extra-bundle": "Add support for route annotations and the view response listener, requires ~3.0", + "symfony/serializer": "Add support for basic serialization capabilities and xml decoding, requires ~2.3", + "symfony/validator": "Add support for validation capabilities in the ParamFetcher, requires ~2.3" + }, + "time": "2015-10-16 07:05:52", + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "FOS\\RestBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lukas Kahwe Smith", + "email": "smith@pooteeweet.org" + }, + { + "name": "FriendsOfSymfony Community", + "homepage": "https://github.com/friendsofsymfony/FOSRestBundle/contributors" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "This Bundle provides various tools to rapidly develop RESTful API's with Symfony2", + "homepage": "http://friendsofsymfony.github.com", + "keywords": [ + "rest" + ] } ] diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.gitignore b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.gitignore new file mode 100644 index 0000000..73d464d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.gitignore @@ -0,0 +1,5 @@ +phpunit.xml +vendor +composer.lock +composer.phar +.php_cs.cache diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.php_cs b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.php_cs new file mode 100644 index 0000000..79c109a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.php_cs @@ -0,0 +1,21 @@ + + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +EOF; + +HeaderCommentFixer::setHeader($header); + +return ConfigBridge::create() + ->setUsingCache(true) +; diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.styleci.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.styleci.yml new file mode 100644 index 0000000..974f5fa --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.styleci.yml @@ -0,0 +1 @@ +preset: symfony diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.travis.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.travis.yml new file mode 100644 index 0000000..f0e2b55 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/.travis.yml @@ -0,0 +1,51 @@ +language: php + +php: + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - nightly + - hhvm + +sudo: false + +cache: + directories: + - $HOME/.composer/cache + +branches: + only: + - master + - /^\d+\.\d+$/ + +matrix: + fast_finish: true + include: + - php: 5.3 + env: SYMFONY_VERSION=2.3.* COMPOSER_FLAGS="--prefer-lowest" + - php: 5.5 + env: SYMFONY_VERSION='2.3.* symfony/expression-language:2.4.*' + - php: 5.5 + env: SYMFONY_VERSION='2.3.* sensio/framework-extra-bundle:2.*' + - php: 5.5 + env: SYMFONY_VERSION=2.4.* + - php: 5.5 + env: SYMFONY_VERSION=2.6.* + - php: 5.5 + env: SYMFONY_VERSION='2.7.*' + - php: 5.5 + env: SYMFONY_VERSION='2.8.*@dev symfony/security-acl:2.8.*@dev' + allow_failures: + - php: nightly + +before_install: + - composer self-update + - if [ "$SYMFONY_VERSION" != "" ]; then composer require --dev --no-update symfony/symfony=$SYMFONY_VERSION; fi + +install: composer update $COMPOSER_FLAGS --prefer-dist + +script: if [ "$TRAVIS_PHP_VERSION" == "5.6" ]; then phpunit --coverage-clover=coverage.clover; else phpunit; fi + +after_script: + - if [ "$TRAVIS_PHP_VERSION" == "5.6" ]; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Delete.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Delete.php new file mode 100644 index 0000000..6c7dfa4 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Delete.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * DELETE Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Delete extends Route +{ + public function getMethod() + { + return 'DELETE'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Get.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Get.php new file mode 100644 index 0000000..d1d61c9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Get.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * GET Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Get extends Route +{ + public function getMethod() + { + return 'GET'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Head.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Head.php new file mode 100644 index 0000000..a849609 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Head.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * HEAD Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Head extends Route +{ + public function getMethod() + { + return 'HEAD'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Link.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Link.php new file mode 100644 index 0000000..26cace5 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Link.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * LINK Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Link extends Route +{ + public function getMethod() + { + return 'LINK'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NamePrefix.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NamePrefix.php new file mode 100644 index 0000000..180f7c5 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NamePrefix.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +use Doctrine\Common\Annotations\Annotation; + +/** + * NamePrefix Route annotation class. + * + * @Annotation + * @Target("CLASS") + */ +class NamePrefix extends Annotation +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NoRoute.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NoRoute.php new file mode 100644 index 0000000..dcf07a3 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/NoRoute.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * No Route annotation class. + * + * @Annotation + * @Target({"METHOD","CLASS"}) + */ +class NoRoute extends Route +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Options.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Options.php new file mode 100644 index 0000000..07396e6 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Options.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * OPTIONS Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Options extends Route +{ + public function getMethod() + { + return 'OPTIONS'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Param.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Param.php new file mode 100644 index 0000000..1cfaa37 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Param.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * Represents a parameter that can be present in GET or POST data. + * + * @author Jordi Boggiano + * @author Boris Guéry + */ +abstract class Param +{ + /** @var string */ + public $name; + /** @var string */ + public $key = null; + /** @var mixed */ + public $requirements = null; + /** @var mixed */ + public $default = null; + /** @var string */ + public $description; + /** @var bool */ + public $strict = false; + /** @var bool */ + public $array = false; + /** @var bool */ + public $nullable = false; + /** @var bool */ + public $allowBlank = true; + /** @var array */ + public $incompatibles = array(); + + /** + * @return string + */ + public function getKey() + { + return $this->key ?: $this->name; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Patch.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Patch.php new file mode 100644 index 0000000..bd4d387 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Patch.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * PATCH Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Patch extends Route +{ + public function getMethod() + { + return 'PATCH'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Post.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Post.php new file mode 100644 index 0000000..4bec956 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Post.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * POST Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Post extends Route +{ + public function getMethod() + { + return 'POST'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Prefix.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Prefix.php new file mode 100644 index 0000000..7619f70 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Prefix.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +use Doctrine\Common\Annotations\Annotation; + +/** + * Prefix Route annotation class. + * + * @Annotation + * @Target("CLASS") + */ +class Prefix extends Annotation +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Put.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Put.php new file mode 100644 index 0000000..c294a49 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Put.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * PUT Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Put extends Route +{ + public function getMethod() + { + return 'PUT'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/QueryParam.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/QueryParam.php new file mode 100644 index 0000000..38cdc53 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/QueryParam.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * Represents a parameter that must be present in GET data. + * + * @Annotation + * @Target({"CLASS", "METHOD"}) + * + * @author Alexander + */ +class QueryParam extends Param +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RequestParam.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RequestParam.php new file mode 100644 index 0000000..c477487 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RequestParam.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * Represents a parameter that must be present in POST data. + * + * @Annotation + * @Target("METHOD") + * + * @author Jordi Boggiano + * @author Boris Guéry + */ +class RequestParam extends Param +{ + /** @var bool */ + public $strict = true; +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Route.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Route.php new file mode 100644 index 0000000..8c0abc9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Route.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route as BaseRoute; + +/** + * Route annotation class. + * + * @Annotation + */ +class Route extends BaseRoute +{ + public function __construct(array $data) + { + parent::__construct($data); + + if (!$this->getMethods()) { + $this->setMethods((array) $this->getMethod()); + } + } + + /** + * @return string|null + */ + public function getMethod() + { + return; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RouteResource.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RouteResource.php new file mode 100644 index 0000000..6e62454 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/RouteResource.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * RouteResource annotation class. + * + * @Annotation + * @Target("CLASS") + */ +class RouteResource +{ + /** @var string required */ + public $resource; +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Unlink.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Unlink.php new file mode 100644 index 0000000..a82cc51 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/Unlink.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +/** + * UNLINK Route annotation class. + * + * @Annotation + * @Target("METHOD") + */ +class Unlink extends Route +{ + public function getMethod() + { + return 'UNLINK'; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/View.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/View.php new file mode 100644 index 0000000..8daef9e --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/Annotations/View.php @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller\Annotations; + +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; + +/** + * View annotation class. + * + * @Annotation + * @Target({"METHOD","CLASS"}) + */ +class View extends Template +{ + /** + * @var string + */ + protected $templateVar; + + /** + * @var int + */ + protected $statusCode; + + /** + * @var array + */ + protected $serializerGroups; + + /** + * @var bool + */ + protected $populateDefaultVars = true; + + /** + * @var bool + */ + protected $serializerEnableMaxDepthChecks; + + /** + * Returns the annotation alias name. + * + * @return string + * + * @see Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface + */ + public function getAliasName() + { + return 'view'; + } + + /** + * Sets the template var name to be used for templating formats. + * + * @param string $templateVar + */ + public function setTemplateVar($templateVar) + { + $this->templateVar = $templateVar; + } + + /** + * Returns the template var name to be used for templating formats. + * + * @return string + */ + public function getTemplateVar() + { + return $this->templateVar; + } + + /** + * @param int $statusCode + */ + public function setStatusCode($statusCode) + { + $this->statusCode = $statusCode; + } + + /** + * @return int + */ + public function getStatusCode() + { + return $this->statusCode; + } + + /** + * @var array + */ + public function setSerializerGroups($serializerGroups) + { + $this->serializerGroups = $serializerGroups; + } + + /** + * @return array + */ + public function getSerializerGroups() + { + return $this->serializerGroups; + } + + /** + * @param bool $populateDefaultVars + */ + public function setPopulateDefaultVars($populateDefaultVars) + { + $this->populateDefaultVars = (bool) $populateDefaultVars; + } + + /** + * @return bool + */ + public function isPopulateDefaultVars() + { + return $this->populateDefaultVars; + } + + /** + * @param bool $serializerEnableMaxDepthChecks + */ + public function setSerializerEnableMaxDepthChecks($serializerEnableMaxDepthChecks) + { + $this->serializerEnableMaxDepthChecks = $serializerEnableMaxDepthChecks; + } + + /** + * @return bool + */ + public function getSerializerEnableMaxDepthChecks() + { + return $this->serializerEnableMaxDepthChecks; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/ExceptionController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/ExceptionController.php new file mode 100644 index 0000000..8634890 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/ExceptionController.php @@ -0,0 +1,299 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller; + +use FOS\RestBundle\Util\StopFormatListenerException; +use FOS\RestBundle\View\ExceptionWrapperHandlerInterface; +use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; +use Symfony\Component\HttpKernel\Exception\FlattenException as HttpFlattenException; +use Symfony\Component\Debug\Exception\FlattenException as DebugFlattenException; +use Symfony\Component\DependencyInjection\ContainerAware; +use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use FOS\RestBundle\Util\Codes; +use FOS\RestBundle\View\ViewHandler; +use FOS\RestBundle\View\View; +use FOS\RestBundle\Util\ExceptionWrapper; + +/** + * Custom ExceptionController that uses the view layer and supports HTTP response status code mapping. + */ +class ExceptionController extends ContainerAware +{ + /** + * Creates a new ExceptionWrapper instance that can be overwritten by a custom + * ExceptionController class. + * + * @param array $parameters Template parameters + * + * @return ExceptionWrapper ExceptionWrapper instance + */ + protected function createExceptionWrapper(array $parameters) + { + /** @var ExceptionWrapperHandlerInterface $exceptionWrapperHandler */ + $exceptionWrapperHandler = $this->container->get('fos_rest.exception_handler'); + + return $exceptionWrapperHandler->wrap($parameters); + } + + /** + * Converts an Exception to a Response. + * + * @param Request $request + * @param HttpFlattenException|DebugFlattenException $exception + * @param DebugLoggerInterface $logger + * + * @return Response + * + * @throws \InvalidArgumentException + */ + public function showAction(Request $request, $exception, DebugLoggerInterface $logger = null) + { + /* + * Validates that the exception that is handled by the Exception controller is either a DebugFlattenException + * or HttpFlattenException. + * Type hinting has been removed due to a BC change in symfony/symfony 2.3.5. + * + * @see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/565 + */ + if (!$exception instanceof DebugFlattenException && !$exception instanceof HttpFlattenException) { + throw new \InvalidArgumentException(sprintf( + 'ExceptionController::showAction can only accept some exceptions (%s, %s), "%s" given', + 'Symfony\Component\HttpKernel\Exception\FlattenException', + 'Symfony\Component\Debug\Exception\FlattenException', + get_class($exception) + )); + } + + $format = $this->getFormat($request, $request->getRequestFormat()); + if (null === $format) { + $message = 'No matching accepted Response format could be determined, while handling: '; + $message .= $this->getExceptionMessage($exception); + + return new Response($message, Codes::HTTP_NOT_ACCEPTABLE, $exception->getHeaders()); + } + + $currentContent = $this->getAndCleanOutputBuffering(); + $code = $this->getStatusCode($exception); + $viewHandler = $this->container->get('fos_rest.view_handler'); + $parameters = $this->getParameters($viewHandler, $currentContent, $code, $exception, $logger, $format); + $showException = $request->attributes->get('showException', $this->container->get('kernel')->isDebug()); + + try { + if (!$viewHandler->isFormatTemplating($format)) { + $parameters = $this->createExceptionWrapper($parameters); + } + + $view = View::create($parameters, $code, $exception->getHeaders()); + $view->setFormat($format); + + if ($viewHandler->isFormatTemplating($format)) { + $view->setTemplate($this->findTemplate($request, $format, $code, $showException)); + } + + $response = $viewHandler->handle($view); + } catch (\Exception $e) { + $message = 'An Exception was thrown while handling: '; + $message .= $this->getExceptionMessage($exception); + $response = new Response($message, Codes::HTTP_INTERNAL_SERVER_ERROR, $exception->getHeaders()); + } + + return $response; + } + + /** + * Gets and cleans any content that was already outputted. + * + * This code comes from Symfony and should be synchronized on a regular basis + * see src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php + * + * @return string + */ + protected function getAndCleanOutputBuffering() + { + $startObLevel = $this->container->get('request')->headers->get('X-Php-Ob-Level', -1); + + // ob_get_level() never returns 0 on some Windows configurations, so if + // the level is the same two times in a row, the loop should be stopped. + $previousObLevel = null; + $currentContent = ''; + + while (($obLevel = ob_get_level()) > $startObLevel && $obLevel !== $previousObLevel) { + $previousObLevel = $obLevel; + $currentContent .= ob_get_clean(); + } + + return $currentContent; + } + + /** + * Extracts the exception message. + * + * @param HttpFlattenException|DebugFlattenException $exception + * @param array $exceptionMap + * + * @return int|false + */ + protected function isSubclassOf($exception, $exceptionMap) + { + $exceptionClass = $exception->getClass(); + $reflectionExceptionClass = new \ReflectionClass($exceptionClass); + try { + foreach ($exceptionMap as $exceptionMapClass => $value) { + if ($value + && ($exceptionClass === $exceptionMapClass || $reflectionExceptionClass->isSubclassOf($exceptionMapClass)) + ) { + return $value; + } + } + } catch (\ReflectionException $re) { + return 'FOSUserBundle: Invalid class in fos_res.exception.messages: ' + .$re->getMessage(); + } + + return false; + } + + /** + * Extracts the exception message. + * + * @param HttpFlattenException|DebugFlattenException $exception + * + * @return string Message + */ + protected function getExceptionMessage($exception) + { + $exceptionMap = $this->container->getParameter('fos_rest.exception.messages'); + $showExceptionMessage = $this->isSubclassOf($exception, $exceptionMap); + + if ($showExceptionMessage || $this->container->get('kernel')->isDebug()) { + return $exception->getMessage(); + } + + $statusCode = $this->getStatusCode($exception); + + return array_key_exists($statusCode, Response::$statusTexts) ? Response::$statusTexts[$statusCode] : 'error'; + } + + /** + * Determines the status code to use for the response. + * + * @param HttpFlattenException|DebugFlattenException $exception + * + * @return int + */ + protected function getStatusCode($exception) + { + $exceptionMap = $this->container->getParameter('fos_rest.exception.codes'); + $isExceptionMappedToStatusCode = $this->isSubclassOf($exception, $exceptionMap); + + return $isExceptionMappedToStatusCode ?: $exception->getStatusCode(); + } + + /** + * Determines the format to use for the response. + * + * @param Request $request + * @param string $format + * + * @return string + */ + protected function getFormat(Request $request, $format) + { + try { + $formatNegotiator = $this->container->get('fos_rest.exception_format_negotiator'); + $format = $formatNegotiator->getBestFormat($request) ?: $format; + $request->attributes->set('_format', $format); + } catch (StopFormatListenerException $e) { + $format = $request->getRequestFormat(); + } + + return $format; + } + + /** + * Determines the parameters to pass to the view layer. + * + * Overwrite it in a custom ExceptionController class to add additionally parameters + * that should be passed to the view layer. + * + * @param ViewHandler $viewHandler + * @param string $currentContent + * @param int $code + * @param HttpFlattenException|DebugFlattenException $exception + * @param DebugLoggerInterface $logger + * @param string $format + * + * @return array + */ + protected function getParameters(ViewHandler $viewHandler, $currentContent, $code, $exception, DebugLoggerInterface $logger = null, $format = 'html') + { + $parameters = array( + 'status' => 'error', + 'status_code' => $code, + 'status_text' => array_key_exists($code, Response::$statusTexts) ? Response::$statusTexts[$code] : 'error', + 'currentContent' => $currentContent, + 'message' => $this->getExceptionMessage($exception), + 'exception' => $exception, + ); + + if ($viewHandler->isFormatTemplating($format)) { + $parameters['logger'] = $logger; + } + + return $parameters; + } + + /** + * Finds the template for the given format and status code. + * + * Note this method needs to be overridden in case another + * engine than Twig should be supported; + * + * This code is inspired by TwigBundle and should be synchronized on a regular basis + * see src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php + * + * @param Request $request + * @param string $format + * @param int $statusCode + * @param bool $showException + * + * @return TemplateReference + */ + protected function findTemplate(Request $request, $format, $statusCode, $showException) + { + $name = $showException ? 'exception' : 'error'; + if ($showException && 'html' == $format) { + $name = 'exception_full'; + } + + // when not in debug, try to find a template for the specific HTTP status code and format + if (!$showException) { + $template = new TemplateReference('TwigBundle', 'Exception', $name.$statusCode, $format, 'twig'); + if ($this->container->get('templating')->exists($template)) { + return $template; + } + } + + // try to find a template for the given format + $template = new TemplateReference('TwigBundle', 'Exception', $name, $format, 'twig'); + if ($this->container->get('templating')->exists($template)) { + return $template; + } + + // default to a generic HTML exception + $request->setRequestFormat('html'); + + return new TemplateReference('TwigBundle', 'Exception', $showException ? 'exception_full' : $name, 'html', 'twig'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/FOSRestController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/FOSRestController.php new file mode 100644 index 0000000..98f6bcc --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Controller/FOSRestController.php @@ -0,0 +1,89 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Response; +use FOS\RestBundle\View\View; +use FOS\RestBundle\Util\Codes; + +/** + * Base Controller for Controllers using the View functionality of FOSRestBundle. + * + * @author Benjamin Eberlei + */ +abstract class FOSRestController extends Controller +{ + /** + * Creates a view. + * + * Convenience method to allow for a fluent interface. + * + * @param mixed $data + * @param int $statusCode + * @param array $headers + * + * @return View + */ + protected function view($data = null, $statusCode = null, array $headers = array()) + { + return View::create($data, $statusCode, $headers); + } + + /** + * Creates a Redirect view. + * + * Convenience method to allow for a fluent interface. + * + * @param string $url + * @param int $statusCode + * @param array $headers + * + * @return View + */ + protected function redirectView($url, $statusCode = Codes::HTTP_FOUND, array $headers = array()) + { + return View::createRedirect($url, $statusCode, $headers); + } + + /** + * Creates a Route Redirect View. + * + * Convenience method to allow for a fluent interface. + * + * @param string $route + * @param mixed $parameters + * @param int $statusCode + * @param array $headers + * + * @return View + */ + protected function routeRedirectView($route, array $parameters = array(), $statusCode = Codes::HTTP_CREATED, array $headers = array()) + { + return View::createRouteRedirect($route, $parameters, $statusCode, $headers); + } + + /** + * Converts view into a response object. + * + * Not necessary to use, if you are using the "ViewResponseListener", which + * does this conversion automatically in kernel event "onKernelView". + * + * @param View $view + * + * @return Response + */ + protected function handleView(View $view) + { + return $this->get('fos_rest.view_handler')->handle($view); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/ContainerDecoderProvider.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/ContainerDecoderProvider.php new file mode 100644 index 0000000..c407d13 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/ContainerDecoderProvider.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Decoder; + +use Symfony\Component\DependencyInjection\ContainerAware; + +/** + * Provides encoders through the Symfony2 DIC. + * + * @author Igor Wiedler + */ +class ContainerDecoderProvider extends ContainerAware implements DecoderProviderInterface +{ + private $decoders; + + /** + * Constructor. + * + * @param array $decoders List of key (format) value (service ids) of decoders + */ + public function __construct(array $decoders) + { + $this->decoders = $decoders; + } + + /** + * {@inheritdoc} + */ + public function supports($format) + { + return isset($this->decoders[$format]); + } + + /** + * {@inheritdoc} + */ + public function getDecoder($format) + { + if (!$this->supports($format)) { + throw new \InvalidArgumentException( + sprintf("Format '%s' is not supported by ContainerDecoderProvider.", $format) + ); + } + + return $this->container->get($this->decoders[$format]); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderInterface.php new file mode 100644 index 0000000..7522cc3 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderInterface.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Decoder; + +/** + * Defines the interface of decoders. + * + * @author Jordi Boggiano + */ +interface DecoderInterface +{ + /** + * Decodes a string into PHP data. + * + * @param string $data + * + * @return array|bool False in case the content could not be decoded, else an array + */ + public function decode($data); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderProviderInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderProviderInterface.php new file mode 100644 index 0000000..4afe0c2 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/DecoderProviderInterface.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Decoder; + +/** + * Defines the interface of decoder providers. + * + * @author Igor Wiedler + */ +interface DecoderProviderInterface +{ + /** + * Checks if a certain format is supported. + * + * @param string $format + * + * @return bool + */ + public function supports($format); + + /** + * Provides decoders, possibly lazily. + * + * @param string $format + * + * @return \FOS\RestBundle\Decoder\DecoderInterface + */ + public function getDecoder($format); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonDecoder.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonDecoder.php new file mode 100644 index 0000000..1706a3d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonDecoder.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Decoder; + +/** + * Decodes JSON data. + * + * @author Jordi Boggiano + */ +class JsonDecoder implements DecoderInterface +{ + /** + * {@inheritdoc} + */ + public function decode($data) + { + return @json_decode($data, true); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonToFormDecoder.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonToFormDecoder.php new file mode 100644 index 0000000..b25289f --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/JsonToFormDecoder.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Decoder; + +/** + * Decodes JSON data and make it compliant with application/x-www-form-encoded style. + * + * @author Kévin Dunglas + */ +class JsonToFormDecoder implements DecoderInterface +{ + /** + * Makes data decoded from JSON application/x-www-form-encoded compliant. + * + * @param array $data + */ + private function xWwwFormEncodedLike(&$data) + { + foreach ($data as $key => &$value) { + if (is_array($value)) { + // Encode recursively + $this->xWwwFormEncodedLike($value); + } elseif (false === $value) { + // Checkbox-like behavior removes false data but PATCH HTTP method with just checkboxes does not work + // To fix this issue we prefer transform false data to null + // See https://github.com/FriendsOfSymfony/FOSRestBundle/pull/883 + $value = null; + } elseif (!is_string($value)) { + // Convert everything to string + // true values will be converted to '1', this is the default checkbox behavior + $value = strval($value); + } + } + } + + /** + * {@inheritdoc} + */ + public function decode($data) + { + $decodedData = @json_decode($data, true); + if ($decodedData) { + $this->xWwwFormEncodedLike($decodedData); + } + + return $decodedData; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/XmlDecoder.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/XmlDecoder.php new file mode 100644 index 0000000..50daefa --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Decoder/XmlDecoder.php @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Decoder; + +use Symfony\Component\Serializer\Encoder\XmlEncoder; +use Symfony\Component\Serializer\Exception\UnexpectedValueException; + +/** + * Decodes XML data. + * + * @author Jordi Boggiano + * @author John Wards + * @author Fabian Vogler + */ +class XmlDecoder implements DecoderInterface +{ + private $encoder; + + public function __construct() + { + $this->encoder = new XmlEncoder(); + } + + /** + * {@inheritdoc} + */ + public function decode($data) + { + try { + return $this->encoder->decode($data, 'xml'); + } catch (UnexpectedValueException $e) { + return; + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ConfigurationCheckPass.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ConfigurationCheckPass.php new file mode 100644 index 0000000..162baff --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ConfigurationCheckPass.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; + +/** + * Checks if the SensioFrameworkExtraBundle views annotations are disabled when using the View Response listener. + * + * @author Eriksen Costa + */ +class ConfigurationCheckPass implements CompilerPassInterface +{ + public function process(ContainerBuilder $container) + { + if ($container->has('sensio_framework_extra.view.listener') && $container->has('fos_rest.view_response_listener')) { + throw new \RuntimeException('You need to disable the view annotations in SensioFrameworkExtraBundle when using the FOSRestBundle View Response listener. Add "view: { annotations: false }" to the sensio_framework_extra: section of your config.yml'); + } + + if ($container->has('fos_rest.converter.request_body') && !$container->has('sensio_framework_extra.converter.listener')) { + throw new \RuntimeException('You need to enable the parameter converter listeners in SensioFrameworkExtraBundle when using the FOSRestBundle RequestBodyParamConverter'); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/CsrfExtensionPass.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/CsrfExtensionPass.php new file mode 100644 index 0000000..462f8f3 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/CsrfExtensionPass.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\Reference; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; + +class CsrfExtensionPass implements CompilerPassInterface +{ + public function process(ContainerBuilder $container) + { + if ($container->hasDefinition('fos_rest.form.extension.csrf_disable')) { + $definition = $container->getDefinition('fos_rest.form.extension.csrf_disable'); + + if (interface_exists('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')) { + $tokenStorageReference = new Reference('security.token_storage'); + $definition->addArgument(new Reference('security.authorization_checker')); + } else { + $tokenStorageReference = new Reference('security.context'); + } + $definition->replaceArgument(0, $tokenStorageReference); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ExceptionWrapperHandlerPass.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ExceptionWrapperHandlerPass.php new file mode 100644 index 0000000..155c46a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ExceptionWrapperHandlerPass.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; + +/** + * Checks if the JMS serializer is available to be able to use the ExceptionWrapperSerializeHandler. + * + * @author Christian Flothmann + */ +class ExceptionWrapperHandlerPass implements CompilerPassInterface +{ + public function process(ContainerBuilder $container) + { + if (!$container->has('fos_rest.serializer.exception_wrapper_serialize_handler')) { + return; + } + + if (interface_exists('JMS\Serializer\Handler\SubscribingHandlerInterface')) { + return; + } + + $container->removeDefinition('fos_rest.serializer.exception_wrapper_serialize_handler'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/FormatListenerRulesPass.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/FormatListenerRulesPass.php new file mode 100644 index 0000000..06361b7 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/FormatListenerRulesPass.php @@ -0,0 +1,95 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\DefinitionDecorator; +use Symfony\Component\DependencyInjection\Reference; + +/** + * @author Eduardo Gulias Davis + */ +class FormatListenerRulesPass implements CompilerPassInterface +{ + public function process(ContainerBuilder $container) + { + if (!$container->hasDefinition('fos_rest.format_listener')) { + return; + } + + if ($container->hasParameter('web_profiler.debug_toolbar.mode')) { + $path = '_profiler'; + if (2 === $container->getParameter('web_profiler.debug_toolbar.mode')) { + $path .= '|_wdt'; + } + + $profilerRule = array( + 'host' => null, + 'methods' => null, + 'path' => "^/$path/", + 'priorities' => array('html', 'json'), + 'fallback_format' => 'html', + 'exception_fallback_format' => 'html', + 'prefer_extension' => true, + ); + + $this->addRule($profilerRule, $container); + } + + $rules = $container->getParameter('fos_rest.format_listener.rules'); + foreach ($rules as $rule) { + $this->addRule($rule, $container); + } + } + + protected function addRule(array $rule, ContainerBuilder $container) + { + $matcher = $this->createRequestMatcher( + $container, + $rule['path'], + $rule['host'], + $rule['methods'] + ); + + unset($rule['path'], $rule['host']); + if (is_bool($rule['prefer_extension']) && $rule['prefer_extension']) { + $rule['prefer_extension'] = '2.0'; + } + + $exceptionFallbackFormat = $rule['exception_fallback_format']; + unset($rule['exception_fallback_format']); + $container->getDefinition('fos_rest.format_negotiator') + ->addMethodCall('add', array($matcher, $rule)); + + $rule['fallback_format'] = $exceptionFallbackFormat; + $container->getDefinition('fos_rest.exception_format_negotiator') + ->addMethodCall('add', array($matcher, $rule)); + } + + protected function createRequestMatcher(ContainerBuilder $container, $path = null, $host = null, $methods = null) + { + $arguments = array($path, $host, $methods); + $serialized = serialize($arguments); + $id = 'fos_rest.request_matcher.'.md5($serialized).sha1($serialized); + + if (!$container->hasDefinition($id)) { + // only add arguments that are necessary + $container + ->setDefinition($id, new DefinitionDecorator('fos_rest.request_matcher')) + ->setArguments($arguments) + ; + } + + return new Reference($id); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/SerializerConfigurationPass.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/SerializerConfigurationPass.php new file mode 100644 index 0000000..22b83e6 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/SerializerConfigurationPass.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; + +/** + * Checks if a serializer is either set or can be auto-configured. + * + * @author Christian Flothmann + * @author Florian Voutzinos + */ +class SerializerConfigurationPass implements CompilerPassInterface +{ + public function process(ContainerBuilder $container) + { + if ($container->has('fos_rest.serializer')) { + return; + } + + if (!$container->has('serializer') && !$container->has('jms_serializer.serializer')) { + throw new \InvalidArgumentException('Neither a service called "jms_serializer.serializer" nor "serializer" is available and no serializer is explicitly configured. You must either enable the JMSSerializerBundle, enable the FrameworkBundle serializer or configure a custom serializer.'); + } + + if ($container->has('jms_serializer.serializer')) { + $container->setAlias('fos_rest.serializer', 'jms_serializer.serializer'); + } else { + $container->removeDefinition('fos_rest.serializer.exception_wrapper_serialize_handler'); + } + + if ($container->has('serializer')) { + $container->setAlias('fos_rest.serializer', 'serializer'); + } else { + $container->removeDefinition('fos_rest.serializer.exception_wrapper_normalizer'); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/TwigExceptionPass.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/TwigExceptionPass.php new file mode 100644 index 0000000..02a3ad5 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/TwigExceptionPass.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; + +/** + * Remove the 'twig.exception_listener' service if 'fos_rest.exception_listener' is activated. + */ +class TwigExceptionPass implements CompilerPassInterface +{ + public function process(ContainerBuilder $container) + { + if ($container->has('fos_rest.exception_listener') && $container->has('twig.exception_listener')) { + $container->removeDefinition('twig.exception_listener'); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Configuration.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Configuration.php new file mode 100644 index 0000000..b73d89f --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Configuration.php @@ -0,0 +1,333 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection; + +use Symfony\Component\Config\Definition\Builder\TreeBuilder; +use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; +use Symfony\Component\Config\Definition\ConfigurationInterface; +use FOS\RestBundle\Util\Codes; + +/** + * This class contains the configuration information for the bundle. + * + * This information is solely responsible for how the different configuration + * sections are normalized, and merged. + * + * @author Lukas Kahwe Smith + */ +class Configuration implements ConfigurationInterface +{ + /** + * Generates the configuration tree. + * + * @return TreeBuilder + */ + public function getConfigTreeBuilder() + { + $treeBuilder = new TreeBuilder(); + $rootNode = $treeBuilder->root('fos_rest', 'array'); + + $rootNode + ->children() + ->scalarNode('disable_csrf_role')->defaultNull()->end() + ->arrayNode('access_denied_listener') + ->canBeEnabled() + ->beforeNormalization() + ->ifArray()->then(function ($v) { if (!empty($v) && empty($v['formats'])) { + unset($v['enabled']); + $v = array('enabled' => true, 'formats' => $v); + } + +return $v; }) + ->end() + ->fixXmlConfig('format', 'formats') + ->children() + ->scalarNode('service')->defaultNull()->end() + ->arrayNode('formats') + ->useAttributeAsKey('name') + ->prototype('boolean')->end() + ->end() + ->end() + ->end() + ->scalarNode('unauthorized_challenge')->defaultNull()->end() + ->arrayNode('param_fetcher_listener') + ->beforeNormalization() + ->ifString() + ->then(function ($v) { return array('enabled' => in_array($v, array('force', 'true')), 'force' => 'force' === $v); }) + ->end() + ->canBeEnabled() + ->children() + ->booleanNode('enabled')->defaultFalse()->end() + ->booleanNode('force')->defaultFalse()->end() + ->scalarNode('service')->defaultNull()->end() + ->end() + ->end() + ->scalarNode('cache_dir')->cannotBeEmpty()->defaultValue('%kernel.cache_dir%/fos_rest')->end() + ->arrayNode('allowed_methods_listener') + ->canBeEnabled() + ->children() + ->scalarNode('service')->defaultNull()->end() + ->end() + ->end() + ->arrayNode('routing_loader') + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('default_format')->defaultNull()->end() + ->scalarNode('include_format')->defaultTrue()->end() + ->end() + ->end() + ->arrayNode('body_converter') + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('enabled')->defaultFalse()->end() + ->scalarNode('validate')->defaultFalse()->end() + ->scalarNode('validation_errors_argument')->defaultValue('validationErrors')->end() + ->end() + ->end() + ->arrayNode('service') + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('router')->defaultValue('router')->end() + ->scalarNode('templating')->defaultValue('templating')->end() + ->scalarNode('serializer')->defaultNull()->end() + ->scalarNode('view_handler')->defaultValue('fos_rest.view_handler.default')->end() + ->scalarNode('exception_handler')->defaultValue('fos_rest.view.exception_wrapper_handler')->end() + ->scalarNode('inflector')->defaultValue('fos_rest.inflector.doctrine')->end() + ->scalarNode('validator')->defaultValue('validator')->end() + ->end() + ->end() + ->arrayNode('serializer') + ->validate() + ->ifTrue(function ($v) { return !empty($v['version']) && !empty($v['groups']); }) + ->thenInvalid('Only either a version or a groups exclusion strategy can be set') + ->end() + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('version')->defaultNull()->end() + ->arrayNode('groups') + ->prototype('scalar')->end() + ->end() + ->booleanNode('serialize_null')->defaultFalse()->end() + ->end() + ->end() + ->end() + ->end(); + + $this->addViewSection($rootNode); + $this->addExceptionSection($rootNode); + $this->addBodyListenerSection($rootNode); + $this->addFormatListenerSection($rootNode); + + return $treeBuilder; + } + + private function addViewSection(ArrayNodeDefinition $rootNode) + { + $rootNode + ->children() + ->arrayNode('view') + ->fixXmlConfig('format', 'formats') + ->fixXmlConfig('mime_type', 'mime_types') + ->fixXmlConfig('templating_format', 'templating_formats') + ->fixXmlConfig('force_redirect', 'force_redirects') + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('default_engine')->defaultValue('twig')->end() + ->arrayNode('force_redirects') + ->useAttributeAsKey('name') + ->defaultValue(array('html' => true)) + ->prototype('boolean')->end() + ->end() + ->arrayNode('mime_types') + ->canBeEnabled() + ->beforeNormalization() + ->ifArray()->then(function ($v) { if (!empty($v) && empty($v['formats'])) { + unset($v['enabled']); + $v = array('enabled' => true, 'formats' => $v); + } + +return $v; }) + ->end() + ->fixXmlConfig('format', 'formats') + ->children() + ->scalarNode('service')->defaultNull()->end() + ->arrayNode('formats') + ->useAttributeAsKey('name') + ->prototype('variable')->end() + ->end() + ->end() + ->end() + ->arrayNode('formats') + ->useAttributeAsKey('name') + ->defaultValue(array('json' => true, 'xml' => true)) + ->prototype('boolean')->end() + ->end() + ->arrayNode('templating_formats') + ->useAttributeAsKey('name') + ->defaultValue(array('html' => true)) + ->prototype('boolean')->end() + ->end() + ->arrayNode('view_response_listener') + ->beforeNormalization() + ->ifString() + ->then(function ($v) { return array('enabled' => in_array($v, array('force', 'true')), 'force' => 'force' === $v); }) + ->end() + ->canBeEnabled() + ->children() + ->booleanNode('enabled')->defaultFalse()->end() + ->booleanNode('force')->defaultFalse()->end() + ->scalarNode('service')->defaultNull()->end() + ->end() + ->end() + ->scalarNode('failed_validation')->defaultValue(Codes::HTTP_BAD_REQUEST)->end() + ->scalarNode('empty_content')->defaultValue(Codes::HTTP_NO_CONTENT)->end() + ->scalarNode('exception_wrapper_handler')->defaultNull()->end() + ->booleanNode('serialize_null')->defaultFalse()->end() + ->arrayNode('jsonp_handler') + ->canBeUnset() + ->children() + ->scalarNode('callback_param')->defaultValue('callback')->end() + ->scalarNode('callback_filter')->defaultValue('/(^[a-z0-9_]+$)|(^YUI\.Env\.JSONP\._[0-9]+$)/i')->end() + ->scalarNode('mime_type')->defaultValue('application/javascript+jsonp')->end() + ->end() + ->end() + ->end() + ->end() + ->end(); + } + + private function addBodyListenerSection(ArrayNodeDefinition $rootNode) + { + $rootNode + ->children() + ->arrayNode('body_listener') + ->fixXmlConfig('decoder', 'decoders') + ->addDefaultsIfNotSet() + ->canBeUnset() + ->canBeDisabled() + ->children() + ->scalarNode('service')->defaultNull()->end() + ->scalarNode('default_format')->defaultNull()->end() + ->booleanNode('throw_exception_on_unsupported_content_type') + ->defaultFalse() + ->end() + ->arrayNode('decoders') + ->useAttributeAsKey('name') + ->defaultValue(array('json' => 'fos_rest.decoder.json', 'xml' => 'fos_rest.decoder.xml')) + ->prototype('scalar')->end() + ->end() + ->arrayNode('array_normalizer') + ->addDefaultsIfNotSet() + ->beforeNormalization() + ->ifString()->then(function ($v) { return array('service' => $v); }) + ->end() + ->children() + ->scalarNode('service')->defaultNull()->end() + ->booleanNode('forms')->defaultFalse()->end() + ->end() + ->end() + ->end() + ->end() + ->end(); + } + + private function addFormatListenerSection(ArrayNodeDefinition $rootNode) + { + $rootNode + ->children() + ->arrayNode('format_listener') + ->fixXmlConfig('rule', 'rules') + ->addDefaultsIfNotSet() + ->canBeUnset() + ->beforeNormalization() + ->ifTrue(function ($v) { + // check if we got an assoc array in rules + return isset($v['rules']) + && is_array($v['rules']) + && array_keys($v['rules']) !== range(0, count($v['rules']) - 1); + }) + ->then(function ($v) { + $v['rules'] = array($v['rules']); + + return $v; + }) + ->end() + ->canBeEnabled() + ->validate() + ->ifTrue(function ($v) { return empty($v['rules']) && !empty($v['media_type']['enabled']); }) + ->thenInvalid('To enable the "media_type" setting, a "rules" setting must also needs to be defined for the "format_listener"') + ->end() + ->children() + ->scalarNode('service')->defaultNull()->end() + ->arrayNode('rules') + ->cannotBeOverwritten() + ->prototype('array') + ->fixXmlConfig('priority', 'priorities') + ->children() + ->scalarNode('path')->defaultNull()->info('URL path info')->end() + ->scalarNode('host')->defaultNull()->info('URL host name')->end() + ->variableNode('methods')->defaultNull()->info('Method for URL')->end() + ->booleanNode('stop')->defaultFalse()->end() + ->booleanNode('prefer_extension')->defaultTrue()->end() + ->scalarNode('fallback_format')->defaultValue('html')->end() + ->scalarNode('exception_fallback_format')->defaultNull()->end() + ->arrayNode('priorities') + ->beforeNormalization()->ifString()->then(function ($v) { return preg_split('/\s*,\s*/', $v); })->end() + ->prototype('scalar')->end() + ->end() + ->end() + ->end() + ->end() + ->arrayNode('media_type') + ->canBeEnabled() + ->beforeNormalization() + ->ifString() + ->then(function ($v) { return array('enabled' => true, 'version_regex' => $v); }) + ->end() + ->children() + ->scalarNode('service')->defaultNull()->end() + ->scalarNode('version_regex')->defaultValue('/(v|version)=(?P[0-9\.]+)/')->end() + ->end() + ->end() + ->end() + ->end() + ->end(); + } + + private function addExceptionSection(ArrayNodeDefinition $rootNode) + { + $rootNode + ->children() + ->arrayNode('exception') + ->fixXmlConfig('code', 'codes') + ->fixXmlConfig('message', 'messages') + ->addDefaultsIfNotSet() + ->canBeEnabled() + ->children() + ->scalarNode('exception_controller')->defaultNull()->end() + ->arrayNode('codes') + ->useAttributeAsKey('name') + ->validate() + ->ifTrue(function ($v) { return 0 !== count(array_filter($v, function ($i) { return !defined('FOS\RestBundle\Util\Codes::'.$i) && !is_int($i); })); }) + ->thenInvalid('Invalid HTTP code in fos_rest.exception.codes, see FOS\RestBundle\Util\Codes for all valid codes.') + ->end() + ->prototype('scalar')->end() + ->end() + ->arrayNode('messages') + ->useAttributeAsKey('name') + ->prototype('boolean')->end() + ->end() + ->end() + ->end() + ->end(); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/FOSRestExtension.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/FOSRestExtension.php new file mode 100644 index 0000000..665d34b --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/FOSRestExtension.php @@ -0,0 +1,383 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\DependencyInjection; + +use Symfony\Component\Config\FileLocator; +use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; +use Symfony\Component\HttpKernel\DependencyInjection\Extension; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\DependencyInjection\DefinitionDecorator; +use Symfony\Component\DependencyInjection\Reference; +use FOS\RestBundle\Util\Codes; + +class FOSRestExtension extends Extension implements PrependExtensionInterface +{ + /** + * Default sensio_framework_extra { view: { annotations: false } }. + * + * {@inheritdoc} + */ + public function prepend(ContainerBuilder $container) + { + $configs = $container->getExtensionConfig($this->getAlias()); + $parameterBag = $container->getParameterBag(); + $configs = $parameterBag->resolveValue($configs); + $config = $this->processConfiguration(new Configuration(), $configs); + + if ($config['view']['view_response_listener']['enabled']) { + $container->prependExtensionConfig('sensio_framework_extra', array('view' => array('annotations' => false))); + } + } + + /** + * Loads the services based on your application configuration. + * + * @param array $configs + * @param ContainerBuilder $container + * + * @throws \InvalidArgumentException + * @throws \LogicException + */ + public function load(array $configs, ContainerBuilder $container) + { + $config = $this->processConfiguration(new Configuration(), $configs); + + $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('view.xml'); + $loader->load('routing.xml'); + $loader->load('util.xml'); + $loader->load('request.xml'); + + $container->setParameter('fos_rest.cache_dir', $config['cache_dir']); + $container->setParameter('fos_rest.routing.loader.default_format', $config['routing_loader']['default_format']); + $container->setParameter('fos_rest.routing.loader.include_format', $config['routing_loader']['include_format']); + + // The validator service alias is only set if validation is enabled for the request body converter + $validator = $config['service']['validator']; + unset($config['service']['validator']); + + foreach ($config['service'] as $key => $service) { + if (null !== $service) { + $container->setAlias('fos_rest.'.$key, $service); + } + } + + $this->loadForm($config, $loader, $container); + $this->loadSerializer($config, $container); + $this->loadException($config, $loader, $container); + $this->loadBodyConverter($config, $validator, $loader, $container); + $this->loadView($config, $loader, $container); + + $this->loadBodyListener($config, $loader, $container); + $this->loadFormatListener($config, $loader, $container); + $this->loadParamFetcherListener($config, $loader, $container); + $this->loadAllowedMethodsListener($config, $loader, $container); + $this->loadAccessDeniedListener($config, $loader, $container); + } + + private function loadForm(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if (!empty($config['disable_csrf_role'])) { + $loader->load('forms.xml'); + $container->setParameter('fos_rest.disable_csrf_role', $config['disable_csrf_role']); + } + } + + private function loadAccessDeniedListener(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if ($config['access_denied_listener']['enabled'] && !empty($config['access_denied_listener']['formats'])) { + $loader->load('access_denied_listener.xml'); + + if (!empty($config['access_denied_listener']['service'])) { + $service = $container->getDefinition('fos_rest.access_denied_listener'); + $service->clearTag('kernel.event_listener'); + } + + $container->setParameter('fos_rest.access_denied_listener.formats', $config['access_denied_listener']['formats']); + $container->setParameter('fos_rest.access_denied_listener.unauthorized_challenge', $config['unauthorized_challenge']); + } + } + + public function loadAllowedMethodsListener(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if ($config['allowed_methods_listener']['enabled']) { + if (!empty($config['allowed_methods_listener']['service'])) { + $service = $container->getDefinition('fos_rest.allowed_methods_listener'); + $service->clearTag('kernel.event_listener'); + } + + $loader->load('allowed_methods_listener.xml'); + } + } + + private function loadBodyListener(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if ($config['body_listener']['enabled']) { + $loader->load('body_listener.xml'); + + if (!empty($config['body_listener']['service'])) { + $service = $container->getDefinition('fos_rest.body_listener'); + $service->clearTag('kernel.event_listener'); + } + + $container->setParameter('fos_rest.throw_exception_on_unsupported_content_type', $config['body_listener']['throw_exception_on_unsupported_content_type']); + $container->setParameter('fos_rest.body_default_format', $config['body_listener']['default_format']); + $container->setParameter('fos_rest.decoders', $config['body_listener']['decoders']); + + $arrayNormalizer = $config['body_listener']['array_normalizer']; + + if (null !== $arrayNormalizer['service']) { + $bodyListener = $container->getDefinition('fos_rest.body_listener'); + $bodyListener->addArgument(new Reference($arrayNormalizer['service'])); + $bodyListener->addArgument($arrayNormalizer['forms']); + } + } + } + + private function loadFormatListener(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if ($config['format_listener']['enabled'] && !empty($config['format_listener']['rules'])) { + $loader->load('format_listener.xml'); + + if (!empty($config['format_listener']['service'])) { + $service = $container->getDefinition('fos_rest.format_listener'); + $service->clearTag('kernel.event_listener'); + } + + foreach ($config['format_listener']['rules'] as $key => $rule) { + if (!isset($rule['exception_fallback_format'])) { + $config['format_listener']['rules'][$key]['exception_fallback_format'] = $rule['fallback_format']; + } + } + + $container->setParameter( + 'fos_rest.format_listener.rules', + $config['format_listener']['rules'] + ); + + if (!empty($config['format_listener']['media_type']['enabled']) && !empty($config['format_listener']['media_type']['version_regex'])) { + $container->setParameter( + 'fos_rest.format_listener.media_type.version_regex', + $config['format_listener']['media_type']['version_regex'] + ); + + if (!empty($config['format_listener']['media_type']['service'])) { + $service = $container->getDefinition('fos_rest.version_listener'); + $service->clearTag('kernel.event_listener'); + } + } else { + $container->removeDefinition('fos_rest.version_listener'); + } + } + } + + private function loadParamFetcherListener(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if ($config['param_fetcher_listener']['enabled']) { + $loader->load('param_fetcher_listener.xml'); + + if (!empty($config['param_fetcher_listener']['service'])) { + $service = $container->getDefinition('fos_rest.param_fetcher_listener'); + $service->clearTag('kernel.event_listener'); + } + + if ($config['param_fetcher_listener']['force']) { + $container->setParameter('fos_rest.param_fetcher_listener.set_params_as_attributes', true); + } + } + } + + private function loadBodyConverter(array $config, $validator, XmlFileLoader $loader, ContainerBuilder $container) + { + if (!empty($config['body_converter'])) { + if (!empty($config['body_converter']['enabled'])) { + $parameter = new \ReflectionParameter( + array( + 'Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface', + 'supports', + ), + 'configuration' + ); + + if ('Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter' === $parameter->getClass()->getName()) { + $container->setParameter( + 'fos_rest.converter.request_body.class', + 'FOS\RestBundle\Request\RequestBodyParamConverter' + ); + } else { + $container->setParameter( + 'fos_rest.converter.request_body.class', + 'FOS\RestBundle\Request\RequestBodyParamConverter20' + ); + } + + $loader->load('request_body_param_converter.xml'); + } + + if (!empty($config['body_converter']['validate'])) { + $container->setAlias('fos_rest.validator', $validator); + } + + if (!empty($config['body_converter']['validation_errors_argument'])) { + $container->setParameter( + 'fos_rest.converter.request_body.validation_errors_argument', + $config['body_converter']['validation_errors_argument'] + ); + } + } + } + + private function loadView(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if (!empty($config['view']['exception_wrapper_handler'])) { + $container->setParameter('fos_rest.view.exception_wrapper_handler', $config['view']['exception_wrapper_handler']); + } + + if (!empty($config['view']['jsonp_handler'])) { + $handler = new DefinitionDecorator($config['service']['view_handler']); + $handler->setPublic(true); + + $jsonpHandler = new Reference('fos_rest.view_handler.jsonp'); + $handler->addMethodCall('registerHandler', array('jsonp', array($jsonpHandler, 'createResponse'))); + $container->setDefinition('fos_rest.view_handler', $handler); + + $container->setParameter('fos_rest.view_handler.jsonp.callback_param', $config['view']['jsonp_handler']['callback_param']); + + if ('/(^[a-z0-9_]+$)|(^YUI\.Env\.JSONP\._[0-9]+$)/i' !== $config['view']['jsonp_handler']['callback_filter']) { + throw new \LogicException('As of 1.2.0, the "callback_filter" parameter is deprecated, and is not used anymore. For more information, read: https://github.com/FriendsOfSymfony/FOSRestBundle/pull/642.'); + } + + if (empty($config['view']['mime_types']['jsonp'])) { + $config['view']['mime_types']['jsonp'] = $config['view']['jsonp_handler']['mime_type']; + } + } + + if ($config['view']['mime_types']['enabled']) { + $loader->load('mime_type_listener.xml'); + + if (!empty($config['mime_type_listener']['service'])) { + $service = $container->getDefinition('fos_rest.mime_type_listener'); + $service->clearTag('kernel.event_listener'); + } + + $container->setParameter('fos_rest.mime_types', $config['view']['mime_types']); + } else { + $container->setParameter('fos_rest.mime_types', array()); + } + + if ($config['view']['view_response_listener']['enabled']) { + $loader->load('view_response_listener.xml'); + + if (!empty($config['view_response_listener']['service'])) { + $service = $container->getDefinition('fos_rest.view_response_listener'); + $service->clearTag('kernel.event_listener'); + } + + $container->setParameter('fos_rest.view_response_listener.force_view', $config['view']['view_response_listener']['force']); + } + + $formats = array(); + foreach ($config['view']['formats'] as $format => $enabled) { + if ($enabled) { + $formats[$format] = false; + } + } + foreach ($config['view']['templating_formats'] as $format => $enabled) { + if ($enabled) { + $formats[$format] = true; + } + } + + $container->setParameter('fos_rest.formats', $formats); + + foreach ($config['view']['force_redirects'] as $format => $code) { + if (true === $code) { + $config['view']['force_redirects'][$format] = Codes::HTTP_FOUND; + } + } + + $container->setParameter('fos_rest.force_redirects', $config['view']['force_redirects']); + + if (!is_numeric($config['view']['failed_validation'])) { + $config['view']['failed_validation'] = constant('\FOS\RestBundle\Util\Codes::'.$config['view']['failed_validation']); + } + + $container->setParameter('fos_rest.failed_validation', $config['view']['failed_validation']); + + if (!is_numeric($config['view']['empty_content'])) { + $config['view']['empty_content'] = constant('\FOS\RestBundle\Util\Codes::'.$config['view']['empty_content']); + } + + $container->setParameter('fos_rest.empty_content', $config['view']['empty_content']); + $container->setParameter('fos_rest.serialize_null', $config['view']['serialize_null']); + $container->setParameter('fos_rest.default_engine', $config['view']['default_engine']); + } + + private function loadException(array $config, XmlFileLoader $loader, ContainerBuilder $container) + { + if ($config['exception']['enabled']) { + $loader->load('exception_listener.xml'); + + if (!empty($config['exception']['service'])) { + $service = $container->getDefinition('fos_rest.exception_listener'); + $service->clearTag('kernel.event_listener'); + } + + if ($config['exception']['exception_controller']) { + $container->setParameter('fos_rest.exception_listener.controller', $config['exception']['exception_controller']); + } + } + + foreach ($config['exception']['codes'] as $exception => $code) { + if (!is_numeric($code)) { + $config['exception']['codes'][$exception] = constant("\FOS\RestBundle\Util\Codes::$code"); + } + + $this->testExceptionExists($exception); + } + + foreach ($config['exception']['messages'] as $exception => $message) { + $this->testExceptionExists($exception); + } + + $container->setParameter('fos_rest.exception.codes', $config['exception']['codes']); + $container->setParameter('fos_rest.exception.messages', $config['exception']['messages']); + } + + private function loadSerializer(array $config, ContainerBuilder $container) + { + if (!empty($config['serializer']['version'])) { + $container->setParameter('fos_rest.serializer.exclusion_strategy.version', $config['serializer']['version']); + } + + if (!empty($config['serializer']['groups'])) { + $container->setParameter('fos_rest.serializer.exclusion_strategy.groups', $config['serializer']['groups']); + } + + $container->setParameter('fos_rest.serializer.serialize_null', $config['serializer']['serialize_null']); + } + + /** + * Checks if an exception is loadable. + * + * @param string $exception Class to test + * + * @throws \InvalidArgumentException if the class was not found. + */ + private function testExceptionExists($exception) + { + if (!is_subclass_of($exception, '\Exception') && !is_a($exception, '\Exception', true)) { + throw new \InvalidArgumentException("FOSRestBundle exception mapper: Could not load class '$exception' or the class does not extend from '\Exception'. Most probably this is a configuration problem."); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AccessDeniedListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AccessDeniedListener.php new file mode 100644 index 0000000..429bd45 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AccessDeniedListener.php @@ -0,0 +1,92 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; +use Symfony\Component\HttpKernel\EventListener\ExceptionListener; +use Symfony\Component\Security\Core\Exception\AccessDeniedException; +use Symfony\Component\Security\Core\Exception\AuthenticationException; + +/** + * This listener handles ensures that for specific formats AccessDeniedExceptions + * will return a 403 regardless of how the firewall is configured. + * + * @author Lukas Kahwe Smith + */ +class AccessDeniedListener extends ExceptionListener +{ + private $formats; + private $challenge; + + /** + * Constructor. + * + * @param array $formats An array with keys corresponding to request formats or content types + * that must be processed by this listener + * @param string $challenge + * @param string $controller + * @param LoggerInterface $logger + */ + public function __construct($formats, $challenge, $controller, LoggerInterface $logger = null) + { + $this->formats = $formats; + $this->challenge = $challenge; + parent::__construct($controller, $logger); + } + + public function onKernelException(GetResponseForExceptionEvent $event) + { + static $handling; + + if (true === $handling) { + return false; + } + + $request = $event->getRequest(); + + if (empty($this->formats[$request->getRequestFormat()]) && empty($this->formats[$request->getContentType()])) { + return false; + } + + $handling = true; + + $exception = $event->getException(); + + if ($exception instanceof AccessDeniedException) { + $exception = new AccessDeniedHttpException('You do not have the necessary permissions', $exception); + $event->setException($exception); + parent::onKernelException($event); + } elseif ($exception instanceof AuthenticationException) { + if ($this->challenge) { + $exception = new UnauthorizedHttpException($this->challenge, 'You are not authenticated', $exception); + } else { + $exception = new HttpException(401, 'You are not authenticated', $exception); + } + $event->setException($exception); + parent::onKernelException($event); + } + + $handling = false; + } + + public static function getSubscribedEvents() + { + return array( + KernelEvents::EXCEPTION => array('onKernelException', 5), + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AllowedMethodsListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AllowedMethodsListener.php new file mode 100644 index 0000000..0dfd8a4 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/AllowedMethodsListener.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use FOS\RestBundle\Response\AllowedMethodsLoader\AllowedMethodsLoaderInterface; + +/** + * Listener to append Allow-ed methods for a given route/resource. + * + * @author Boris Guéry + */ +class AllowedMethodsListener +{ + private $loader; + + /** + * Constructor. + * + * @param AllowedMethodsLoaderInterface $loader + */ + public function __construct(AllowedMethodsLoaderInterface $loader) + { + $this->loader = $loader; + } + + /** + * @param FilterResponseEvent $event + */ + public function onKernelResponse(FilterResponseEvent $event) + { + $allowedMethods = $this->loader->getAllowedMethods(); + + if (isset($allowedMethods[$event->getRequest()->get('_route')])) { + $event->getResponse() + ->headers + ->set('Allow', implode(', ', $allowedMethods[$event->getRequest()->get('_route')])); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/BodyListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/BodyListener.php new file mode 100644 index 0000000..4e5f2fb --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/BodyListener.php @@ -0,0 +1,184 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use FOS\RestBundle\Decoder\DecoderProviderInterface; +use FOS\RestBundle\Normalizer\ArrayNormalizerInterface; +use FOS\RestBundle\Normalizer\Exception\NormalizationException; +use Symfony\Component\HttpFoundation\ParameterBag; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; +use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException; + +/** + * This listener handles Request body decoding. + * + * @author Lukas Kahwe Smith + */ +class BodyListener +{ + private $decoderProvider; + private $throwExceptionOnUnsupportedContentType; + private $defaultFormat; + private $arrayNormalizer; + private $normalizeForms; + + /** + * Constructor. + * + * @param DecoderProviderInterface $decoderProvider + * @param bool $throwExceptionOnUnsupportedContentType + * @param ArrayNormalizerInterface $arrayNormalizer + * @param bool $normalizeForms + */ + public function __construct( + DecoderProviderInterface $decoderProvider, + $throwExceptionOnUnsupportedContentType = false, + ArrayNormalizerInterface $arrayNormalizer = null, + $normalizeForms = false + ) { + $this->decoderProvider = $decoderProvider; + $this->throwExceptionOnUnsupportedContentType = $throwExceptionOnUnsupportedContentType; + $this->arrayNormalizer = $arrayNormalizer; + $this->normalizeForms = $normalizeForms; + } + + /** + * Sets the array normalizer. + * + * @param ArrayNormalizerInterface $arrayNormalizer + * + * @deprecated To be removed in FOSRestBundle 2.0.0 (constructor injection is used instead). + */ + public function setArrayNormalizer(ArrayNormalizerInterface $arrayNormalizer) + { + $this->arrayNormalizer = $arrayNormalizer; + } + + /** + * Sets the fallback format if there's no Content-Type in the request. + * + * @param string $defaultFormat + */ + public function setDefaultFormat($defaultFormat) + { + $this->defaultFormat = $defaultFormat; + } + + /** + * Core request handler. + * + * @param GetResponseEvent $event + * + * @throws BadRequestHttpException + * @throws UnsupportedMediaTypeHttpException + */ + public function onKernelRequest(GetResponseEvent $event) + { + $request = $event->getRequest(); + $method = $request->getMethod(); + $contentType = $request->headers->get('Content-Type'); + $normalizeRequest = $this->normalizeForms && $this->isFormRequest($request); + + if ($this->isDecodeable($request)) { + $format = null === $contentType + ? $request->getRequestFormat() + : $request->getFormat($contentType); + + $format = $format ?: $this->defaultFormat; + + $content = $request->getContent(); + + if (!$this->decoderProvider->supports($format)) { + if ($this->throwExceptionOnUnsupportedContentType + && $this->isNotAnEmptyDeleteRequestWithNoSetContentType($method, $content, $contentType) + ) { + throw new UnsupportedMediaTypeHttpException("Request body format '$format' not supported"); + } + + return; + } + + if (!empty($content)) { + $decoder = $this->decoderProvider->getDecoder($format); + $data = $decoder->decode($content); + if (is_array($data)) { + $request->request = new ParameterBag($data); + $normalizeRequest = true; + } else { + throw new BadRequestHttpException('Invalid '.$format.' message received'); + } + } + } + + if (null !== $this->arrayNormalizer && $normalizeRequest) { + $data = $request->request->all(); + + try { + $data = $this->arrayNormalizer->normalize($data); + } catch (NormalizationException $e) { + throw new BadRequestHttpException($e->getMessage()); + } + + $request->request = new ParameterBag($data); + } + } + + /** + * Check if the Request is a not a DELETE with no content and no Content-Type. + * + * @param $method + * @param $content + * @param $contentType + * + * @return bool + */ + private function isNotAnEmptyDeleteRequestWithNoSetContentType($method, $content, $contentType) + { + return false === ('DELETE' === $method && empty($content) && empty($contentType)); + } + + /** + * Check if we should try to decode the body. + * + * @param Request $request + * + * @return bool + */ + protected function isDecodeable(Request $request) + { + if (!in_array($request->getMethod(), array('POST', 'PUT', 'PATCH', 'DELETE'))) { + return false; + } + + return !$this->isFormRequest($request); + } + + /** + * Check if the content type indicates a form submission. + * + * @param Request $request + * + * @return bool + */ + protected function isFormRequest(Request $request) + { + $contentTypeParts = explode(';', $request->headers->get('Content-Type')); + + if (isset($contentTypeParts[0])) { + return in_array($contentTypeParts[0], array('multipart/form-data', 'application/x-www-form-urlencoded')); + } + + return false; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/FormatListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/FormatListener.php new file mode 100644 index 0000000..50d25e0 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/FormatListener.php @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use FOS\RestBundle\Util\StopFormatListenerException; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use FOS\RestBundle\Util\FormatNegotiatorInterface; +use FOS\RestBundle\Util\MediaTypeNegotiatorInterface; + +/** + * This listener handles Accept header format negotiations. + * + * @author Lukas Kahwe Smith + */ +class FormatListener +{ + private $formatNegotiator; + + /** + * Initialize FormatListener. + * + * @param FormatNegotiatorInterface $formatNegotiator + */ + public function __construct(FormatNegotiatorInterface $formatNegotiator) + { + $this->formatNegotiator = $formatNegotiator; + } + + /** + * Determines and sets the Request format. + * + * @param GetResponseEvent $event The event + * + * @throws NotAcceptableHttpException + */ + public function onKernelRequest(GetResponseEvent $event) + { + try { + $request = $event->getRequest(); + + $format = $request->getRequestFormat(null); + if (null === $format) { + if ($this->formatNegotiator instanceof MediaTypeNegotiatorInterface) { + $mediaType = $this->formatNegotiator->getBestMediaType($request); + if ($mediaType) { + $request->attributes->set('media_type', $mediaType); + $format = $request->getFormat($mediaType); + } + } else { + $format = $this->formatNegotiator->getBestFormat($request); + } + } + + if (null === $format) { + if ($event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) { + throw new NotAcceptableHttpException('No matching accepted Response format could be determined'); + } + + return; + } + + $request->setRequestFormat($format); + } catch (StopFormatListenerException $e) { + // nothing to do + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/MimeTypeListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/MimeTypeListener.php new file mode 100644 index 0000000..fa4b088 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/MimeTypeListener.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use FOS\RestBundle\Util\FormatNegotiator; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; + +/** + * This listener handles registering custom mime types. + * + * @author Lukas Kahwe Smith + */ +class MimeTypeListener +{ + private $mimeTypes; + private $formatNegotiator; + + /** + * Constructor. + * + * @param array $mimeTypes An array with the format as key and + * the corresponding mime type as value + * @param FormatNegotiator $formatNegotiator + */ + public function __construct(array $mimeTypes, FormatNegotiator $formatNegotiator) + { + $this->mimeTypes = $mimeTypes; + $this->formatNegotiator = $formatNegotiator; + } + + /** + * Core request handler. + * + * @param GetResponseEvent $event The event + */ + public function onKernelRequest(GetResponseEvent $event) + { + $request = $event->getRequest(); + + if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { + foreach ($this->mimeTypes['formats'] as $format => $mimeType) { + $request->setFormat($format, $mimeType); + $this->formatNegotiator->registerFormat($format, (array) $mimeType, true); + } + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ParamFetcherListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ParamFetcherListener.php new file mode 100644 index 0000000..fa4a935 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ParamFetcherListener.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * This listener handles various setup tasks related to the query fetcher. + * + * Setting the controller callable on the query fetcher + * Setting the query fetcher as a request attribute + * + * @author Lukas Kahwe Smith + */ +class ParamFetcherListener +{ + private $container; + private $setParamsAsAttributes; + + /** + * Constructor. + * + * @param ContainerInterface $container + * @param bool $setParamsAsAttributes + */ + public function __construct(ContainerInterface $container, $setParamsAsAttributes = false) + { + $this->container = $container; + $this->setParamsAsAttributes = $setParamsAsAttributes; + } + + /** + * Core controller handler. + * + * @param FilterControllerEvent $event + * + * @throws \InvalidArgumentException + */ + public function onKernelController(FilterControllerEvent $event) + { + $request = $event->getRequest(); + $paramFetcher = $this->container->get('fos_rest.request.param_fetcher'); + + $controller = $event->getController(); + + if (is_callable($controller) && method_exists($controller, '__invoke')) { + $controller = array($controller, '__invoke'); + } + + $paramFetcher->setController($controller); + $attributeName = $this->getAttributeName($controller); + $request->attributes->set($attributeName, $paramFetcher); + + if ($this->setParamsAsAttributes) { + $params = $paramFetcher->all(); + foreach ($params as $name => $param) { + if ($request->attributes->has($name) && null !== $request->attributes->get($name)) { + $msg = sprintf("ParamFetcher parameter conflicts with a path parameter '$name' for route '%s'", $request->attributes->get('_route')); + throw new \InvalidArgumentException($msg); + } + + $request->attributes->set($name, $param); + } + } + } + + /** + * Determines which attribute the ParamFetcher should be injected as. + * + * @param array $controller The controller action as an "array" callable. + * + * @return string + */ + private function getAttributeName(array $controller) + { + list($object, $name) = $controller; + $method = new \ReflectionMethod($object, $name); + foreach ($method->getParameters() as $param) { + if ($this->isParamFetcherType($param)) { + return $param->getName(); + } + } + + // If there is no typehint, inject the ParamFetcher using a default name. + return 'paramFetcher'; + } + + /** + * Returns true if the given controller parameter is type-hinted as + * an instance of ParamFetcher. + * + * @param \ReflectionParameter $controllerParam A parameter of the controller action. + * + * @return bool + */ + private function isParamFetcherType(\ReflectionParameter $controllerParam) + { + $type = $controllerParam->getClass(); + if (null === $type) { + return false; + } + $fetcherInterface = 'FOS\\RestBundle\\Request\\ParamFetcherInterface'; + + return $type->implementsInterface($fetcherInterface); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/VersionListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/VersionListener.php new file mode 100644 index 0000000..b659a69 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/VersionListener.php @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use FOS\RestBundle\View\ConfigurableViewHandlerInterface; +use FOS\RestBundle\View\ViewHandlerInterface; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; + +class VersionListener +{ + private $viewHandler; + private $regex; + private $version = false; + + public function __construct(ViewHandlerInterface $viewHandler) + { + $this->viewHandler = $viewHandler; + } + + /** + * Gets the version. + * + * @return mixed + */ + public function getVersion() + { + return $this->version; + } + + /** + * Sets the regex. + * + * @param string $regex + */ + public function setRegex($regex) + { + $this->regex = $regex; + } + + public function onKernelRequest(GetResponseEvent $event) + { + $request = $event->getRequest(); + + $mediaType = $request->attributes->get('media_type'); + + if (1 === preg_match($this->regex, $mediaType, $matches)) { + $this->version = $matches['version']; + $request->attributes->set('version', $this->version); + + if ($this->viewHandler instanceof ConfigurableViewHandlerInterface) { + $this->viewHandler->setExclusionStrategyVersion($this->version); + } + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ViewResponseListener.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ViewResponseListener.php new file mode 100644 index 0000000..2a5b50b --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/EventListener/ViewResponseListener.php @@ -0,0 +1,140 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\EventListener; + +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; +use Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener; +use JMS\Serializer\SerializationContext; +use FOS\RestBundle\View\View; +use FOS\RestBundle\Util\Codes; + +/** + * The ViewResponseListener class handles the View core event as well as the "@extra:Template" annotation. + * + * @author Lukas Kahwe Smith + */ +class ViewResponseListener extends TemplateListener +{ + protected $container; + + /** + * Constructor. + * + * @param ContainerInterface $container + */ + public function __construct(ContainerInterface $container) + { + $this->container = $container; + } + + /** + * Guesses the template name to render and its variables and adds them to + * the request object. + * + * @param FilterControllerEvent $event + */ + public function onKernelController(FilterControllerEvent $event) + { + $request = $event->getRequest(); + + if ($configuration = $request->attributes->get('_view')) { + $request->attributes->set('_template', $configuration); + } + + parent::onKernelController($event); + } + + /** + * Renders the parameters and template and initializes a new response object with the + * rendered content. + * + * @param GetResponseForControllerResultEvent $event + */ + public function onKernelView(GetResponseForControllerResultEvent $event) + { + $request = $event->getRequest(); + /** @var \FOS\RestBundle\Controller\Annotations\View $configuration */ + $configuration = $request->attributes->get('_view'); + + $view = $event->getControllerResult(); + $customViewDefined = true; + if (!$view instanceof View) { + if (!$configuration && !$this->container->getParameter('fos_rest.view_response_listener.force_view')) { + return parent::onKernelView($event); + } + + $view = new View($view); + $customViewDefined = false; + } + + if ($configuration) { + if ($configuration->getTemplateVar()) { + $view->setTemplateVar($configuration->getTemplateVar()); + } + if ($configuration->getStatusCode() && (null === $view->getStatusCode() || Codes::HTTP_OK === $view->getStatusCode())) { + $view->setStatusCode($configuration->getStatusCode()); + } + if ($configuration->getSerializerGroups() && !$customViewDefined) { + $context = $view->getSerializationContext() ?: new SerializationContext(); + $context->setGroups($configuration->getSerializerGroups()); + $view->setSerializationContext($context); + } + if ($configuration->getSerializerEnableMaxDepthChecks()) { + $context = $view->getSerializationContext() ?: new SerializationContext(); + $context->enableMaxDepthChecks(); + $view->setSerializationContext($context); + } + $populateDefaultVars = $configuration->isPopulateDefaultVars(); + } else { + $populateDefaultVars = true; + } + + if (null === $view->getFormat()) { + $view->setFormat($request->getRequestFormat()); + } + + $vars = $request->attributes->get('_template_vars'); + if (!$vars && $populateDefaultVars) { + $vars = $request->attributes->get('_template_default_vars'); + } + + $viewHandler = $this->container->get('fos_rest.view_handler'); + + if ($viewHandler->isFormatTemplating($view->getFormat())) { + if (!empty($vars)) { + $parameters = (array) $viewHandler->prepareTemplateParameters($view); + foreach ($vars as $var) { + if (!array_key_exists($var, $parameters)) { + $parameters[$var] = $request->attributes->get($var); + } + } + $view->setData($parameters); + } + + $template = $request->attributes->get('_template'); + if ($template) { + if ($template instanceof TemplateReference) { + $template->set('format', null); + } + + $view->setTemplate($template); + } + } + + $response = $viewHandler->handle($view, $request); + + $event->setResponse($response); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/FOSRestBundle.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/FOSRestBundle.php new file mode 100644 index 0000000..dd09e94 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/FOSRestBundle.php @@ -0,0 +1,41 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\HttpKernel\Bundle\Bundle; +use FOS\RestBundle\DependencyInjection\Compiler\SerializerConfigurationPass; +use FOS\RestBundle\DependencyInjection\Compiler\ConfigurationCheckPass; +use FOS\RestBundle\DependencyInjection\Compiler\ExceptionWrapperHandlerPass; +use FOS\RestBundle\DependencyInjection\Compiler\FormatListenerRulesPass; +use FOS\RestBundle\DependencyInjection\Compiler\TwigExceptionPass; +use FOS\RestBundle\DependencyInjection\Compiler\CsrfExtensionPass; + +/** + * @author Lukas Kahwe Smith + * @author Eriksen Costa + */ +class FOSRestBundle extends Bundle +{ + /** + * {@inheritdoc} + */ + public function build(ContainerBuilder $container) + { + $container->addCompilerPass(new SerializerConfigurationPass()); + $container->addCompilerPass(new ConfigurationCheckPass()); + $container->addCompilerPass(new FormatListenerRulesPass()); + $container->addCompilerPass(new TwigExceptionPass()); + $container->addCompilerPass(new ExceptionWrapperHandlerPass()); + $container->addCompilerPass(new CsrfExtensionPass()); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Extension/DisableCSRFExtension.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Extension/DisableCSRFExtension.php new file mode 100644 index 0000000..b484d45 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Extension/DisableCSRFExtension.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Form\Extension; + +use Symfony\Component\Form\AbstractTypeExtension; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; + +/** + * Class DisableCSRFExtension. + * + * @author Grégoire Pineau + */ +class DisableCSRFExtension extends AbstractTypeExtension +{ + /** + * @var SecurityContextInterface|TokenStorageInterface + */ + private $tokenStorage; + private $role; + private $authorizationChecker; + + public function __construct($tokenStorage, $role, $authorizationChecker = null) + { + $this->tokenStorage = $tokenStorage; + $this->role = $role; + $this->authorizationChecker = $authorizationChecker; + + if (!$tokenStorage instanceof TokenStorageInterface && !$tokenStorage instanceof SecurityContextInterface) { + throw new \InvalidArgumentException('Argument 1 should be an instance of Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface or Symfony\Component\Security\Core\SecurityContextInterface'); + } + } + + public function configureOptions(OptionsResolver $resolver) + { + if ($this->authorizationChecker instanceof AuthorizationCheckerInterface) { + if (!$this->tokenStorage->getToken()) { + return; + } + + if (!$this->authorizationChecker->isGranted($this->role)) { + return; + } + } else { + if (!$this->tokenStorage->getToken()) { + return; + } + + if (!$this->tokenStorage->isGranted($this->role)) { + return; + } + } + + $resolver->setDefaults(array( + 'csrf_protection' => false, + )); + } + + // BC for < 2.7 + + public function setDefaultOptions(OptionsResolverInterface $resolver) + { + $this->configureOptions($resolver); + } + + public function getExtendedType() + { + return method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix') + ? 'Symfony\Component\Form\Extension\Core\Type\FormType' + : 'form' // SF <2.8 BC + ; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Transformer/EntityToIdObjectTransformer.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Transformer/EntityToIdObjectTransformer.php new file mode 100644 index 0000000..201eefb --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Form/Transformer/EntityToIdObjectTransformer.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Form\Transformer; + +use Symfony\Component\Form\DataTransformerInterface; +use Symfony\Component\Form\Exception\TransformationFailedException; +use Doctrine\Common\Persistence\ObjectManager; + +/** + * Class EntityToIdObjectTransformer. + * + * @author Marc Juchli + */ +class EntityToIdObjectTransformer implements DataTransformerInterface +{ + /** + * @var ObjectManager + */ + private $om; + + /** + * @var string + */ + private $entityName; + + /** + * @param ObjectManager $om + * @param string $entityName + */ + public function __construct(ObjectManager $om, $entityName) + { + $this->entityName = $entityName; + $this->om = $om; + } + + /** + * Do nothing. + * + * @param object|null $object + * + * @return string + */ + public function transform($object) + { + if (null === $object) { + return ''; + } + + return current(array_values($this->om->getClassMetadata($this->entityName)->getIdentifierValues($object))); + } + + /** + * Transforms an array including an identifier to an object. + * + * @param array $idObject + * + * @return object|null + * + * @throws TransformationFailedException if object is not found. + */ + public function reverseTransform($idObject) + { + if (!is_array($idObject)) { + return; + } + + $identifier = current(array_values($this->om->getClassMetadata($this->entityName)->getIdentifier())); + $id = $idObject[$identifier]; + + $object = $this->om + ->getRepository($this->entityName) + ->findOneBy(array($identifier => $id)) + ; + + if (null === $object) { + throw new TransformationFailedException(sprintf( + 'An object with identifier key "%s" and value "%s" does not exist!', + $identifier, $id + )); + } + + return $object; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/ArrayNormalizerInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/ArrayNormalizerInterface.php new file mode 100644 index 0000000..f2beb3e --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/ArrayNormalizerInterface.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Normalizer; + +/** + * Normalizes arrays. + * + * @author Florian Voutzinos + */ +interface ArrayNormalizerInterface +{ + /** + * Normalizes the array. + * + * @param array $data The array to normalize + * + * @return array The normalized array + * + * @throws Exception\NormalizationException + */ + public function normalize(array $data); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/CamelKeysNormalizer.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/CamelKeysNormalizer.php new file mode 100644 index 0000000..89f9a78 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/CamelKeysNormalizer.php @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Normalizer; + +use FOS\RestBundle\Normalizer\Exception\NormalizationException; + +/** + * Normalizes the array by changing its keys from underscore to camel case. + * + * @author Florian Voutzinos + */ +class CamelKeysNormalizer implements ArrayNormalizerInterface +{ + /** + * {@inheritdoc} + */ + public function normalize(array $data) + { + $this->normalizeArray($data); + + return $data; + } + + /** + * Normalizes an array. + * + * @param array &$data + * + * @throws Exception\NormalizationException + */ + private function normalizeArray(array &$data) + { + foreach ($data as $key => $val) { + $normalizedKey = $this->normalizeString($key); + + if ($normalizedKey !== $key) { + if (array_key_exists($normalizedKey, $data)) { + throw new NormalizationException(sprintf( + 'The key "%s" is invalid as it will override the existing key "%s"', + $key, + $normalizedKey + )); + } + + unset($data[$key]); + $data[$normalizedKey] = $val; + $key = $normalizedKey; + } + + if (is_array($val)) { + $this->normalizeArray($data[$key]); + } + } + } + + /** + * Normalizes a string. + * + * @param string $string + * + * @return string + */ + private function normalizeString($string) + { + if (false === strpos($string, '_')) { + return $string; + } + + return preg_replace_callback('/_([a-zA-Z0-9])/', function ($matches) { + return strtoupper($matches[1]); + }, $string); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/Exception/NormalizationException.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/Exception/NormalizationException.php new file mode 100644 index 0000000..b57fd87 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Normalizer/Exception/NormalizationException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Normalizer\Exception; + +/** + * Exception thrown when the normalization failed. + * + * @author Florian Voutzinos + */ +class NormalizationException extends \RuntimeException +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/README.md b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/README.md new file mode 100644 index 0000000..c5a536d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/README.md @@ -0,0 +1,38 @@ +FOSRestBundle +============= + +This bundle provides various tools to rapidly develop RESTful API's & +applications with Symfony2. Features include: + +- A View layer to enable output and format agnostic Controllers +- A custom route loader to generate url's following REST conventions +- Accept header format negotiation including handling for custom mime types +- RESTful decoding of HTTP request body and Accept headers +- Exception controller for sending appropriate HTTP status codes + +[![Build Status](https://travis-ci.org/FriendsOfSymfony/FOSRestBundle.svg?branch=master)](https://travis-ci.org/FriendsOfSymfony/FOSRestBundle) +[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/FriendsOfSymfony/FOSRestBundle/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/FriendsOfSymfony/FOSRestBundle/?branch=master) +[![Code Coverage](https://scrutinizer-ci.com/g/FriendsOfSymfony/FOSRestBundle/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/FriendsOfSymfony/FOSRestBundle/?branch=master) +[![Total Downloads](https://poser.pugx.org/FriendsOfSymfony/rest-bundle/downloads.svg)](https://packagist.org/packages/FriendsOfSymfony/rest-bundle) +[![Latest Stable Version](https://poser.pugx.org/FriendsOfSymfony/rest-bundle/v/stable.svg)](https://packagist.org/packages/FriendsOfSymfony/rest-bundle) +[![SensioLabsInsight](https://insight.sensiolabs.com/projects/0be23389-2e85-49cf-b333-caaa36d11c62/mini.png)](https://insight.sensiolabs.com/projects/0be23389-2e85-49cf-b333-caaa36d11c62) + +Documentation +------------- + +[Read the Documentation](http://symfony.com/doc/master/bundles/FOSRestBundle/index.html) + +Please see the [UPGRADING.md](https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/UPGRADING.md) for any +relevant instructions when upgrading to a newer version. + +Installation +------------ + +All the installation instructions are located in the [documentation](http://symfony.com/doc/master/bundles/FOSRestBundle/1-setting_up_the_bundle.html). + +License +------- + +This bundle is under the MIT license. See the complete license in the bundle: + + Resources/meta/LICENSE diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/AbstractRequestBodyParamConverter.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/AbstractRequestBodyParamConverter.php new file mode 100644 index 0000000..a3a6525 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/AbstractRequestBodyParamConverter.php @@ -0,0 +1,195 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Request; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; +use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\Serializer\Exception\Exception as SymfonySerializerException; +use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; +use Symfony\Component\Validator\Validator\ValidatorInterface; +use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use JMS\Serializer\Exception\UnsupportedFormatException; +use JMS\Serializer\Exception\Exception as JMSSerializerException; +use JMS\Serializer\DeserializationContext; +use JMS\Serializer\SerializerInterface; + +/** + * @author Tyler Stroud + */ +abstract class AbstractRequestBodyParamConverter implements ParamConverterInterface +{ + protected $serializer; + protected $context = array(); + protected $validator; + + /** + * The name of the argument on which the ConstraintViolationList will be set. + * + * @var null|string + */ + protected $validationErrorsArgument; + + /** + * @param object $serializer + * @param array|null $groups An array of groups to be used in the serialization context + * @param string|null $version A version string to be used in the serialization context + * @param object $serializer + * @param LegacyValidatorInterface|ValidatorInterface $validator + * @param string|null $validationErrorsArgument + * + * @throws \InvalidArgumentException + */ + public function __construct( + $serializer, + $groups = null, + $version = null, + $validator = null, + $validationErrorsArgument = null + ) { + $this->serializer = $serializer; + + if (!empty($groups)) { + $this->context['groups'] = (array) $groups; + } + + if (!empty($version)) { + $this->context['version'] = $version; + } + + if ($validator !== null && !$validator instanceof LegacyValidatorInterface && !$validator instanceof ValidatorInterface) { + throw new \InvalidArgumentException(sprintf( + 'Validator has expected to be an instance of %s or %s, "%s" given', + 'Symfony\Component\Validator\ValidatorInterface', + 'Symfony\Component\Validator\Validator\ValidatorInterface', + get_class($validator) + )); + } + + if (null !== $validator && null === $validationErrorsArgument) { + throw new \InvalidArgumentException('"$validationErrorsArgument" cannot be null when using the validator'); + } + + $this->validator = $validator; + $this->validationErrorsArgument = $validationErrorsArgument; + } + + /** + * Stores the object in the request. + * + * @param Request $request The request + * @param ParamConverter $configuration Contains the name, class and options of the object + * + * @return bool True if the object has been successfully set, else false + * + * @throws UnsupportedMediaTypeHttpException + * @throws BadRequestHttpException + */ + protected function execute(Request $request, ParamConverter $configuration) + { + $options = (array) $configuration->getOptions(); + + if (isset($options['deserializationContext']) && is_array($options['deserializationContext'])) { + $context = array_merge($this->context, $options['deserializationContext']); + } else { + $context = $this->context; + } + + if ($this->serializer instanceof SerializerInterface) { + $context = $this->configureDeserializationContext($this->getDeserializationContext(), $context); + } + + try { + $object = $this->serializer->deserialize( + $request->getContent(), + $configuration->getClass(), + $request->getContentType(), + $context + ); + } catch (UnsupportedFormatException $e) { + throw new UnsupportedMediaTypeHttpException($e->getMessage(), $e); + } catch (JMSSerializerException $e) { + throw new BadRequestHttpException($e->getMessage(), $e); + } catch (SymfonySerializerException $e) { + throw new BadRequestHttpException($e->getMessage(), $e); + } + + $request->attributes->set($configuration->getName(), $object); + + if (null !== $this->validator) { + $validatorOptions = $this->getValidatorOptions($options); + + if ($this->validator instanceof ValidatorInterface) { + $errors = $this->validator->validate($object, null, $validatorOptions['groups']); + } else { + $errors = $this->validator->validate( + $object, + $validatorOptions['groups'], + $validatorOptions['traverse'], + $validatorOptions['deep'] + ); + } + + $request->attributes->set( + $this->validationErrorsArgument, + $errors + ); + } + + return true; + } + + /** + * @return DeserializationContext + */ + protected function getDeserializationContext() + { + return DeserializationContext::create(); + } + + /** + * @param DeserializationContext $context + * @param array $options + * + * @return DeserializationContext + */ + protected function configureDeserializationContext(DeserializationContext $context, array $options) + { + if (isset($options['groups'])) { + $context->setGroups($options['groups']); + } + if (isset($options['version'])) { + $context->setVersion($options['version']); + } + + return $context; + } + + /** + * @param array $options + * + * @return array + */ + protected function getValidatorOptions(array $options) + { + $resolver = new OptionsResolver(); + $resolver->setDefaults(array( + 'groups' => null, + 'traverse' => false, + 'deep' => false, + )); + + return $resolver->resolve(isset($options['validator']) ? $options['validator'] : array()); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcher.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcher.php new file mode 100644 index 0000000..08f0d6b --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcher.php @@ -0,0 +1,326 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Request; + +use FOS\RestBundle\Controller\Annotations\QueryParam; +use FOS\RestBundle\Controller\Annotations\Param; +use FOS\RestBundle\Controller\Annotations\RequestParam; +use FOS\RestBundle\Util\ViolationFormatterInterface; +use Doctrine\Common\Util\ClassUtils; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; +use Symfony\Component\Validator\Constraints\Regex; +use Symfony\Component\Validator\Constraints\NotBlank; +use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; +use Symfony\Component\Validator\Validator\ValidatorInterface; + +/** + * Helper to validate parameters of the active request. + * + * @author Alexander + * @author Lukas Kahwe Smith + * @author Jordi Boggiano + * @author Boris Guéry + */ +class ParamFetcher implements ParamFetcherInterface +{ + private $paramReader; + private $request; + private $params; + private $validator; + private $violationFormatter; + + /** + * @var callable + */ + private $controller; + + /** + * Initializes fetcher. + * + * @param ParamReader $paramReader + * @param Request $request + * @param ValidatorInterface|LegacyValidatorInterface $validator + * @param ViolationFormatterInterface $violationFormatter + */ + public function __construct(ParamReader $paramReader, Request $request, ViolationFormatterInterface $violationFormatter, $validator = null) + { + $this->paramReader = $paramReader; + $this->request = $request; + $this->violationFormatter = $violationFormatter; + $this->validator = $validator; + + if ($validator !== null && !$validator instanceof LegacyValidatorInterface && !$validator instanceof ValidatorInterface) { + throw new \InvalidArgumentException(sprintf( + 'Validator has expected to be an instance of %s or %s, "%s" given', + 'Symfony\Component\Validator\ValidatorInterface', + 'Symfony\Component\Validator\Validator\ValidatorInterface', + get_class($validator) + )); + } + } + + /** + * {@inheritdoc} + */ + public function setController($controller) + { + $this->controller = $controller; + } + + /** + * Add additional params to the ParamFetcher during runtime. + * + * Note that adding a param that has the same name as an existing param will override that param. + * + * @param Param $param + */ + public function addParam(Param $param) + { + $this->getParams(); // init params + $this->params[$param->name] = $param; + } + + /** + * @return Param[] + */ + public function getParams() + { + if (null === $this->params) { + $this->initParams(); + } + + return $this->params; + } + + /** + * {@inheritdoc} + */ + public function get($name, $strict = null) + { + $params = $this->getParams(); + + if (!array_key_exists($name, $params)) { + throw new \InvalidArgumentException(sprintf("No @QueryParam/@RequestParam configuration for parameter '%s'.", $name)); + } + + /** @var Param $config */ + $config = $params[$name]; + $nullable = $config->nullable; + $default = $config->default; + $paramType = $config instanceof QueryParam ? 'Query' : 'Request'; + + if (null === $strict) { + $strict = $config->strict; + } + + if ($config instanceof RequestParam) { + $param = $this->request->request->get($config->getKey(), $default); + } elseif ($config instanceof QueryParam) { + $param = $this->request->query->get($config->getKey(), $default); + } else { + $param = null; + } + + if ($config->array) { + if (($default !== null || !$strict) || $nullable) { + $default = (array) $default; + } + + if (!is_array($param)) { + if ($strict && !$nullable) { + throw new BadRequestHttpException( + sprintf("%s parameter value of '%s' is not an array", $paramType, $name) + ); + } + + return $default; + } + + $self = $this; + array_walk($param, function (&$data) use ($config, $strict, $self) { + $data = $self->cleanParamWithRequirements($config, $data, $strict); + }); + + return $param; + } + + if (!is_scalar($param)) { + if (!$nullable) { + if ($strict) { + $problem = empty($param) ? 'empty' : 'not a scalar'; + + throw new BadRequestHttpException( + sprintf('%s parameter "%s" is %s', $paramType, $name, $problem) + ); + } + + return $this->cleanParamWithRequirements($config, $param, $strict); + } + + return $default; + } + + return $this->cleanParamWithRequirements($config, $param, $strict); + } + + /** + * @param Param $config + * @param string $param + * @param bool $strict + * + * @return string + * + * @throws BadRequestHttpException + * @throws \RuntimeException + */ + public function cleanParamWithRequirements(Param $config, $param, $strict) + { + $default = $config->default; + $paramType = $config instanceof QueryParam ? 'Query' : 'Request'; + + if (null !== $config->requirements && null === $this->validator) { + throw new \RuntimeException( + 'The ParamFetcher requirements feature requires the symfony/validator component.' + ); + } + + $this->checkNotIncompatibleParams($config); + + if (null === $config->requirements || ($param === $default && null !== $default)) { + return $param; + } + + $constraint = $config->requirements; + + if (is_scalar($constraint)) { + if (is_array($param)) { + if ($strict) { + throw new BadRequestHttpException( + sprintf('%s parameter is an array', $paramType) + ); + } + + return $default; + } + $constraint = new Regex(array( + 'pattern' => '#^'.$config->requirements.'$#xsu', + 'message' => sprintf( + "%s parameter value '%s', does not match requirements '%s'", + $paramType, + $param, + $config->requirements + ), + )); + } elseif (is_array($constraint) && isset($constraint['rule']) && $constraint['error_message']) { + $constraint = new Regex(array( + 'pattern' => '#^'.$config->requirements['rule'].'$#xsu', + 'message' => $config->requirements['error_message'], + )); + } + + if (false === $config->allowBlank) { + $constraint = array(new NotBlank(), $constraint); + } + + if ($this->validator instanceof ValidatorInterface) { + $errors = $this->validator->validate($param, $constraint); + } else { + $errors = $this->validator->validateValue($param, $constraint); + } + + if (0 !== count($errors)) { + if ($strict) { + if (is_array($config->requirements) && isset($config->requirements['error_message'])) { + $errorMessage = $config->requirements['error_message']; + } else { + $errorMessage = $this->violationFormatter->formatList($config, $errors); + } + throw new BadRequestHttpException($errorMessage); + } + + return null === $default ? '' : $default; + } + + return $param; + } + + /** + * {@inheritdoc} + */ + public function all($strict = null) + { + $configuredParams = $this->getParams(); + + $params = array(); + foreach ($configuredParams as $name => $config) { + $params[$name] = $this->get($name, $strict); + } + + return $params; + } + + /** + * Initialize the parameters. + * + * @throws \InvalidArgumentException + */ + private function initParams() + { + if (empty($this->controller)) { + throw new \InvalidArgumentException('Controller and method needs to be set via setController'); + } + + if (!is_array($this->controller) || empty($this->controller[0]) || !is_object($this->controller[0])) { + throw new \InvalidArgumentException( + 'Controller needs to be set as a class instance (closures/functions are not supported)' + ); + } + + $this->params = $this->paramReader->read( + new \ReflectionClass(ClassUtils::getClass($this->controller[0])), + $this->controller[1] + ); + } + + /** + * Check if current param is not in conflict with other parameters + * according to the "incompatibles" field. + * + * @param Param $config the configuration for the param fetcher + * + * @throws BadRequestHttpException + */ + private function checkNotIncompatibleParams(Param $config) + { + if (!$config instanceof QueryParam) { + return; + }; + + foreach ($config->incompatibles as $incompatibleParam) { + $isIncompatiblePresent = $this->request->query->get( + $incompatibleParam, + null + ) !== null; + + if ($isIncompatiblePresent) { + $exceptionMessage = sprintf( + "'%s' param is incompatible with %s param", + $config->name, + $incompatibleParam + ); + + throw new BadRequestHttpException($exceptionMessage); + } + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcherInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcherInterface.php new file mode 100644 index 0000000..cffbfb8 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamFetcherInterface.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Request; + +/** + * Helper interface to validate query parameters from the active request. + * + * @author Alexander + * @author Lukas Kahwe Smith + */ +interface ParamFetcherInterface +{ + /** + * Sets the controller. + * + * @param callable $controller + */ + public function setController($controller); + + /** + * Gets a validated parameter. + * + * @param string $name Name of the parameter + * @param bool $strict Whether a requirement mismatch should cause an exception + * + * @return mixed Value of the parameter. + */ + public function get($name, $strict = null); + + /** + * Gets all validated parameter. + * + * @param bool $strict Whether a requirement mismatch should cause an exception + * + * @return array Values of all the parameters. + */ + public function all($strict = false); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReader.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReader.php new file mode 100644 index 0000000..dac5d05 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReader.php @@ -0,0 +1,91 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Request; + +use Doctrine\Common\Annotations\Reader; +use FOS\RestBundle\Controller\Annotations\Param; + +/** + * Class loading "@QueryParam" and "@RequestParam" annotations from methods. + * + * @author Alexander + * @author Lukas Kahwe Smith + * @author Boris Guéry + */ +class ParamReader implements ParamReaderInterface +{ + private $annotationReader; + + /** + * Initializes controller reader. + * + * @param Reader $annotationReader + */ + public function __construct(Reader $annotationReader) + { + $this->annotationReader = $annotationReader; + } + + /** + * {@inheritdoc} + */ + public function read(\ReflectionClass $reflection, $method) + { + if (!$reflection->hasMethod($method)) { + throw new \InvalidArgumentException(sprintf("Class '%s' has no method '%s' method.", $reflection->getName(), $method)); + } + + $methodParams = $this->getParamsFromMethod($reflection->getMethod($method)); + $classParams = $this->getParamsFromClass($reflection); + + return array_merge($methodParams, $classParams); + } + + /** + * Fetches parameters from provided annotation array (fetched from annotationReader). + * + * @param array $annotations + * + * @return Param[] + */ + private function getParamsFromAnnotationArray(array $annotations) + { + $params = array(); + foreach ($annotations as $annotation) { + if ($annotation instanceof Param) { + $params[$annotation->name] = $annotation; + } + } + + return $params; + } + + /** + * {@inheritdoc} + */ + public function getParamsFromMethod(\ReflectionMethod $method) + { + $annotations = $this->annotationReader->getMethodAnnotations($method); + + return $this->getParamsFromAnnotationArray($annotations); + } + + /** + * {@inheritdoc} + */ + public function getParamsFromClass(\ReflectionClass $class) + { + $annotations = $this->annotationReader->getClassAnnotations($class); + + return $this->getParamsFromAnnotationArray($annotations); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReaderInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReaderInterface.php new file mode 100644 index 0000000..5f5e1a3 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/ParamReaderInterface.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Request; + +use FOS\RestBundle\Controller\Annotations\Param; + +/** + * interface for loading query parameters for a method. + * + * @author Alexander + * @author Lukas Kahwe Smith + */ +interface ParamReaderInterface +{ + /** + * Read annotations for a given method. + * + * @param \ReflectionClass $reflection Reflection class + * @param string $method Method name + * + * @return Param[] Param annotation objects of the method. Indexed by parameter name. + */ + public function read(\ReflectionClass $reflection, $method); + + /** + * Read annotations for a given method. + * + * @param \ReflectionMethod $method Reflection method + * + * @return Param[] Param annotation objects of the method. Indexed by parameter name. + */ + public function getParamsFromMethod(\ReflectionMethod $method); + + /** + * @param \ReflectionClass $class + * + * @return Param[] Param annotation objects of the class. Indexed by parameter name. + */ + public function getParamsFromClass(\ReflectionClass $class); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter.php new file mode 100644 index 0000000..d1adc47 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Request; + +use Symfony\Component\HttpFoundation\Request; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; + +/** + * @author Tyler Stroud + */ +class RequestBodyParamConverter extends AbstractRequestBodyParamConverter +{ + /** + * {@inheritdoc} + */ + public function apply(Request $request, ParamConverter $configuration) + { + return $this->execute($request, $configuration); + } + + /** + * {@inheritdoc} + */ + public function supports(ParamConverter $configuration) + { + return null !== $configuration->getClass(); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter20.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter20.php new file mode 100644 index 0000000..509fb6e --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Request/RequestBodyParamConverter20.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Request; + +use Symfony\Component\HttpFoundation\Request; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; + +/** + * This code is needed for SensioFrameworkExtraBundle 2.x compatibility + * https://github.com/FriendsOfSymfony/FOSRestBundle/issues/622. + * + * @author Tyler Stroud + */ +class RequestBodyParamConverter20 extends AbstractRequestBodyParamConverter +{ + /** + * {@inheritdoc} + */ + public function apply(Request $request, ConfigurationInterface $configuration) + { + return $this->execute($request, $configuration); + } + + /** + * {@inheritdoc} + */ + public function supports(ConfigurationInterface $configuration) + { + return null !== $configuration->getClass(); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/access_denied_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/access_denied_listener.xml new file mode 100644 index 0000000..03c852a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/access_denied_listener.xml @@ -0,0 +1,27 @@ + + + + + + + FOS\RestBundle\EventListener\AccessDeniedListener + + + + + + + + + + + %fos_rest.access_denied_listener.formats% + %fos_rest.access_denied_listener.unauthorized_challenge% + %twig.exception_listener.controller% + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/allowed_methods_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/allowed_methods_listener.xml new file mode 100644 index 0000000..25b7226 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/allowed_methods_listener.xml @@ -0,0 +1,29 @@ + + + + + + + FOS\RestBundle\EventListener\AllowedMethodsListener + FOS\RestBundle\Response\AllowedMethodsLoader\AllowedMethodsRouterLoader + + + + + + + + + + + + + + %fos_rest.cache_dir% + %kernel.debug% + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/body_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/body_listener.xml new file mode 100644 index 0000000..6b870a5 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/body_listener.xml @@ -0,0 +1,45 @@ + + + + + + + FOS\RestBundle\Normalizer\CamelKeysNormalizer + FOS\RestBundle\Decoder\JsonDecoder + FOS\RestBundle\Decoder\JsonToFormDecoder + FOS\RestBundle\Decoder\XmlDecoder + FOS\RestBundle\Decoder\ContainerDecoderProvider + FOS\RestBundle\EventListener\BodyListener + + + + + + + + + + + + + + + %fos_rest.decoders% + + + + + + + + + %fos_rest.throw_exception_on_unsupported_content_type% + + %fos_rest.body_default_format% + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/exception_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/exception_listener.xml new file mode 100644 index 0000000..78b7681 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/exception_listener.xml @@ -0,0 +1,28 @@ + + + + + + Symfony\Component\HttpKernel\EventListener\ExceptionListener + FOS\RestBundle\Controller\ExceptionController + fos_rest.controller.exception:showAction + + + + + + + + %fos_rest.exception_listener.controller% + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/format_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/format_listener.xml new file mode 100644 index 0000000..4b90aa3 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/format_listener.xml @@ -0,0 +1,28 @@ + + + + + + FOS\RestBundle\EventListener\FormatListener + FOS\RestBundle\EventListener\VersionListener + + + + + + + + + + + + + %fos_rest.format_listener.media_type.version_regex% + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/forms.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/forms.xml new file mode 100644 index 0000000..09c8dfe --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/forms.xml @@ -0,0 +1,21 @@ + + + + + + + FOS\RestBundle\Form\Extension\DisableCSRFExtension + + + + + + + + + %fos_rest.disable_csrf_role% + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/mime_type_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/mime_type_listener.xml new file mode 100644 index 0000000..0881fe0 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/mime_type_listener.xml @@ -0,0 +1,22 @@ + + + + + + + FOS\RestBundle\EventListener\MimeTypeListener + + + + + + + + %fos_rest.mime_types% + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/param_fetcher_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/param_fetcher_listener.xml new file mode 100644 index 0000000..72e0409 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/param_fetcher_listener.xml @@ -0,0 +1,23 @@ + + + + + + + FOS\RestBundle\EventListener\ParamFetcherListener + false + + + + + + + + + %fos_rest.param_fetcher_listener.set_params_as_attributes% + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request.xml new file mode 100644 index 0000000..31e8dbb --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request.xml @@ -0,0 +1,29 @@ + + + + + + + FOS\RestBundle\Request\ParamFetcher + FOS\RestBundle\Request\ParamReader + + + + + + + + + + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request_body_param_converter.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request_body_param_converter.xml new file mode 100644 index 0000000..896262d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/request_body_param_converter.xml @@ -0,0 +1,19 @@ + + + + + + + + + %fos_rest.serializer.exclusion_strategy.groups% + %fos_rest.serializer.exclusion_strategy.version% + + %fos_rest.converter.request_body.validation_errors_argument% + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/routing.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/routing.xml new file mode 100644 index 0000000..8c76406 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/routing.xml @@ -0,0 +1,64 @@ + + + + + + + FOS\RestBundle\Routing\Loader\RestRouteLoader + FOS\RestBundle\Routing\Loader\RestYamlCollectionLoader + FOS\RestBundle\Routing\Loader\RestXmlCollectionLoader + FOS\RestBundle\Routing\Loader\RestRouteProcessor + FOS\RestBundle\Routing\Loader\Reader\RestControllerReader + FOS\RestBundle\Routing\Loader\Reader\RestActionReader + + + + + + + + + + + %fos_rest.routing.loader.default_format% + + + + + + + + + %fos_rest.routing.loader.include_format% + %fos_rest.formats% + %fos_rest.routing.loader.default_format% + + + + + + + %fos_rest.routing.loader.include_format% + %fos_rest.formats% + %fos_rest.routing.loader.default_format% + + + + + + + + + + + + + %fos_rest.routing.loader.include_format% + %fos_rest.formats% + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing-1.0.xsd b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing-1.0.xsd new file mode 100644 index 0000000..d40aa42 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing-1.0.xsd @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing/rest_routing-1.0.xsd b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing/rest_routing-1.0.xsd new file mode 100644 index 0000000..1d65ab8 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/schema/routing/rest_routing-1.0.xsd @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/util.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/util.xml new file mode 100644 index 0000000..01bd04a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/util.xml @@ -0,0 +1,21 @@ + + + + + + FOS\RestBundle\Util\FormatNegotiator + FOS\RestBundle\Util\Inflector\DoctrineInflector + Symfony\Component\HttpFoundation\RequestMatcher + FOS\RestBundle\Util\ViolationFormatter + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view.xml new file mode 100644 index 0000000..5de9f84 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view.xml @@ -0,0 +1,56 @@ + + + + + + + + + FOS\RestBundle\View\ExceptionWrapperHandler + FOS\RestBundle\View\ViewHandler + FOS\RestBundle\View\JsonpHandler + FOS\RestBundle\Serializer\ExceptionWrapperSerializeHandler + + + + + + %fos_rest.formats% + %fos_rest.failed_validation% + %fos_rest.empty_content% + %fos_rest.serialize_null% + %fos_rest.force_redirects% + %fos_rest.default_engine% + + %fos_rest.serializer.exclusion_strategy.groups% + + + %fos_rest.serializer.exclusion_strategy.version% + + + %fos_rest.serializer.serialize_null% + + + + + + + + %fos_rest.view_handler.jsonp.callback_param% + + + + + + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view_response_listener.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view_response_listener.xml new file mode 100644 index 0000000..3c9d5d8 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/config/view_response_listener.xml @@ -0,0 +1,21 @@ + + + + + + + FOS\RestBundle\EventListener\ViewResponseListener + + + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/1-setting_up_the_bundle.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/1-setting_up_the_bundle.rst new file mode 100644 index 0000000..d9bc7be --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/1-setting_up_the_bundle.rst @@ -0,0 +1,55 @@ +Step 1: Setting up the bundle +============================= + +A) Download the Bundle +---------------------- + +Open a command console, enter your project directory and execute the +following command to download the latest stable version of this bundle: + +.. code-block:: bash + + $ composer require friendsofsymfony/rest-bundle + +This command requires you to have Composer installed globally, as explained +in the `installation chapter`_ of the Composer documentation. + +B) Enable the Bundle +-------------------- + +Then, enable the bundle by adding the following line in the ``app/AppKernel.php`` +file of your project: + +.. code-block:: php + + // app/AppKernel.php + class AppKernel extends Kernel + { + public function registerBundles() + { + $bundles = array( + // ... + new FOS\RestBundle\FOSRestBundle(), + ); + + // ... + } + } + +C) Enable a Serializer +---------------------- + +This bundle needs a serializer to work correctly. In most cases, +you'll need to enable a serializer or install one. This bundle tries +the following (in the given order) to determine the serializer to use: + +#. The one you configured using ``fos_rest.service.serializer`` (if you did). +#. The JMS serializer, if the `JMSSerializerBundle`_ is available (and registered). +#. The `Symfony Serializer`_ if it's enabled (or any service called ``serializer``). + +That was it! + +.. _`installation chapter`: https://getcomposer.org/doc/00-intro.md +.. _`JMSSerializer`: https://github.com/schmittjoh/serializer +.. _`JMSSerializerBundle`: https://github.com/schmittjoh/JMSSerializerBundle +.. _`Symfony Serializer`: http://symfony.com/doc/current/cookbook/serializer.html diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/2-the-view-layer.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/2-the-view-layer.rst new file mode 100644 index 0000000..765906a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/2-the-view-layer.rst @@ -0,0 +1,484 @@ +Step 2: The view layer +====================== + +Introduction +------------ + +The view layer makes it possible to write ``format`` (html, json, xml, etc) +agnostic controllers, by placing a layer between the Controller and the +generation of the final output via the templating or a serializer. + +The bundle works both with the `Symfony Serializer Component`_ and the more +sophisticated `serializer`_ created by Johannes Schmitt and integrated via the +`JMSSerializerBundle`_. + +In your controller action you will then need to create a ``View`` instance that +is then passed to the ``fos_rest.view_handler`` service for processing. The +``View`` is somewhat modeled after the ``Response`` class, but as just stated +it simply works as a container for all the data/configuration for the +``ViewHandler`` class for this particular action. So the ``View`` instance +must always be processed by a ``ViewHandler`` (see the below section on the +"view response listener" for how to get this processing applied automatically) + +FOSRestBundle ships with a controller extending the default Symfony controller, +which adds several convenience methods: + +.. code-block:: php + + view($data, 200) + ->setTemplate("MyBundle:Users:getUsers.html.twig") + ->setTemplateVar('users') + ; + + return $this->handleView($view); + } + + public function redirectAction() + { + $view = $this->redirectView($this->generateUrl('some_route'), 301); + // or + $view = $this->routeRedirectView('some_route', array(), 301); + + return $this->handleView($view); + } + } + +.. versionadded:: 1.6 + The ``setTemplateData`` method was added in 1.6. + +If you need to pass more data in template, not for serialization, you can use ``setTemplateData`` method: + +.. code-block:: php + + get('category_manager')->getBySlug($categorySlug); + $products = ...; // get data, in this case list of products. + + $templateData = array('category' => $category); + + $view = $this->view($products, 200) + ->setTemplate("MyBundle:Category:show.html.twig") + ->setTemplateVar('products') + ->setTemplateData($templateData) + ; + + return $this->handleView($view); + } + } + +or it is possible to use lazy-loading: + +.. code-block:: php + + get('category_manager'); + + $view = $this->view($products, 200) + ->setTemplate("MyBundle:Category:show.html.twig") + ->setTemplateVar('products') + ->setTemplateData(function (ViewHandlerInterface $viewHandler, ViewInterface $view) use ($categoryManager, $categorySlug) { + $category = $categoryManager->getBySlug($categorySlug); + + return array( + 'category' => $category, + ); + }) + ; + + return $this->handleView($view); + } + } + +To simplify this even more: If you rely on the ``ViewResponseListener`` in +combination with SensioFrameworkExtraBundle you can even omit the calls to +``$this->handleView($view)`` and directly return the view objects. See chapter +3 on listeners for more details on the View Response Listener. + +As the purpose is to create a format-agnostic controller, data assigned to the +``View`` instance should ideally be an object graph, though any data type is +acceptable. Note that when rendering templating formats, the ``ViewHandler`` +will wrap data types other than associative arrays in an associative array with +a single key (default ``'data'``), which will become the variable name of the +object in the respective template. You can change this variable by calling +the ``setTemplateVar()`` method on the view object. + +There are also two specialized ``View`` classes for handling redirects, one for +redirecting to an URL called ``RedirectView`` and one to redirect to a route +called ``RouteRedirectView``. Note that whether these classes actually cause a +redirect or not is determined by the ``force_redirects`` configuration option, +which is only enabled for ``html`` by default (see below). + +There are several more methods on the ``View`` class, here is a list of all +the important ones for configuring the view: + +* ``setData($data)`` - Set the object graph or list of objects to serialize. +* ``setTemplateData($templateData)`` - Set the template data array or anonymous function. Closure should return array. +* ``setHeader($name, $value)`` - Set a header to put on the HTTP response. +* ``setHeaders(array $headers)`` - Set multiple headers to put on the HTTP response. +* ``setSerializationContext($context)`` - Set the serialization context to use. +* ``setTemplate($name)`` - Name of the template to use in case of HTML rendering. +* ``setTemplateVar($name)`` - Name of the variable the data is in, when passed + to HTML template. Defaults to ``'data'``. +* ``setEngine($name)`` - Name of the engine to render HTML template. Can be + autodetected. +* ``setFormat($format)`` - The format the response is supposed to be rendered in. + Can be autodetected using HTTP semantics. +* ``setLocation($location)`` - The location to redirect to with a response. +* ``setRoute($route)`` - The route to redirect to with a response. +* ``setRouteParameters($parameters)`` - Set the parameters for the route. +* ``setResponse(Response $response)`` - The response instance that is populated + by the ``ViewHandler``. + +See `this example code`_ for more details. + +Forms and Views +--------------- + +Symfony Forms have special handling inside the view layer. Whenever you: + +- return a Form from the controller. +- Set the form as only data of the view. +- return an array with a 'form' key, containing a form. +- return a form with validation errors. + +Then: + +- If the form is bound and no status code is set explicitly, an invalid form + leads to a "validation failed" response. +- In a rendered template, the form is passed as 'form' and ``createView()`` + is called automatically. +- ``$form->getData()`` is passed into the view as template as ``'data'`` if the + form is the only view data. +- An invalid form will be wrapped into an exception. + +A response example of an invalid form: + +.. code-block:: javascript + + { + "code": 400, + "message": "Validation Failed"; + "errors": { + "children": { + "username": { + "errors": [ + "This value should not be blank." + ] + } + } + } + } + +If you don't like the default exception structure, you can provide your own +implementation. + +Implement the ``ExceptionWrapperHandlerInterface``: + +.. code-block:: php + + namespace My\Bundle\Handler; + + class MyExceptionWrapperHandler implements ExceptionWrapperHandlerInterface + { + /** + * {@inheritdoc} + */ + public function wrap($data) + { + return new MyExceptionWrapper($data); + } + } + +In the ``wrap`` method return any object or array. + +Update the ``config.yml``: + +.. code-block:: yaml + + fos_rest: + view: + # ... + exception_wrapper_handler: My\Bundle\Handler\MyExceptionWrapperHandler + # ... + +Data Transformation +------------------- + +As we have seen in the section before, the FOSRestBundle relies on the form +component (http://symfony.com/doc/current/components/form/introduction.html) to +handle submission of view data. In fact, the form builder +(http://symfony.com/doc/current/book/forms.html#building-the-form) basically +defines the structure of the expected view data which shall be used for further +processing - which most of the time relates to a PUT or POST request. This +brings a lot of flexibility and allows to exactly define the structure of data +to be received by the api. + +Most of the time the requirements regarding a PUT/POST request are, in +terms of data structure, fairly simple. The payload within a PUT or POST request +oftentimes will have the exact same structure as received by a previous GET +request, but only with modified value fields. Thus, the fields to be defined +within the form builder process will be the same as the fields marked to be +serialized within an entity. + +However, there is a common use case where straightforward updating of data, +received by a serialized object (GET request), will not work out of the box using +the given implementation of the form component: Simple assignment of a reference +using an object. + +Let's take an entity ``Task`` that holds a reference to a ``Person`` as +an example. The serialized Task object will looks as follows: + +.. code-block:: json + + {"task_form":{"name":"Task1", "person":{"id":1, "name":"Fabien"}}} + +In a traditional Symfony2 application we simply define the property of the +related class and it would perfectly assign the person to our task - in this +case based on the id: + +.. code-block:: php + + $builder + ->add('name', 'text') + ... + ->add('person', 'entity', array( + 'class' => 'Acme\DemoBundle\Entity\Person', + 'property' => 'id' + )) + +Unfortunately, this form builder does not accept our serialized object as it is +- even though it contains the necessary id. In fact, the object would have to +contain the id directly assigned to the person field to be be accepted by the +form validtion process: + +.. code-block:: json + + {"task_form":{"name":"Task1", "person":1}} + +Well, this is somewhat useless since we not only want to display the name of the +person but also do not want to do some client side trick to extract the id +before updating the data, right? Instead, we rather update the data the same way +as we received it in our GET request and thus, extend the form builder with a +data transformer. Furtunately the FOSRestBundle comes with an +``EntityToIdObjectTransformer``, which can be applied to any form builder: + +.. code-block:: php + + $personTransformer = new EntityToIdObjectTransformer($this->om, "AcmeDemoBundle:Person"); + $builder + ->add('name', 'text') + ... + ->add($builder->create('person', 'text')->addModelTransformer($personTransformer)) + +This way, the data structure remains untouched and the person can be assigned to +the task without any client modifications. + +Configuration +------------- + +The ``formats`` and ``templating_formats`` settings determine which formats are +respectively supported by the serializer and by the template layer. In other +words any format listed in ``templating_formats`` will require a template for +rendering using the ``templating`` service, while any format listed in +``formats`` will use the serializer for rendering. For both settings a +value of ``false`` means that the given format is disabled. + +When using ``RouteRedirectView::create()`` the default behavior of forcing a +redirect to the route for html is enabled, but needs to be enabled for other +formats if needed. + +Finally the HTTP response status code for failed validation defaults to +``400``. Note when changing the default you can use name constants of +``FOS\RestBundle\Util\Codes`` class or an integer status code. + +You can also set the default templating engine to something different than the +default of ``twig``: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + view: + formats: + rss: true + xml: false + templating_formats: + html: true + force_redirects: + html: true + failed_validation: HTTP_BAD_REQUEST + default_engine: twig + +See `this example configuration`_ for more details. + +Custom handler +-------------- + +While many things should be possible via the serializer in some cases +it might not be enough. For example you might need some custom logic to be +executed in the ``ViewHandler``. For these cases one might want to register a +custom handler for a specific format. The custom handler can either be +registered by defining a custom service, via a compiler pass or it can even be +registered from inside the controller action. + +The callable will receive 3 parameters: + +* the instance of the ``ViewHandler`` +* the instance of the ``View`` +* the instance of the ``Request`` + +Note there are several public methods on the ``ViewHandler`` which can be helpful: + +* ``isFormatTemplating()`` +* ``createResponse()`` +* ``createRedirectResponse()`` +* ``renderTemplate()`` + +There is an example inside LiipHelloBundle to show how to register a custom handler: +https://github.com/liip/LiipHelloBundle/blob/master/View/RSSViewHandler.php +https://github.com/liip/LiipHelloBundle/blob/master/Resources/config/config.yml + +There is another example in ``Resources\doc\examples``: +https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/examples/RssHandler.php + +Here is an example using a closure registered inside a Controller action: + +.. code-block:: php + + get('fos_rest.view_handler'); + if (!$handler->isFormatTemplating($view->getFormat())) { + $templatingHandler = function ($handler, $view, $request) { + // if a template is set, render it using the 'params' + // and place the content into the data + if ($view->getTemplate()) { + $data = $view->getData(); + + if (empty($data['params'])) { + $params = array(); + } else { + $params = $data['params']; + unset($data['params']); + } + + $view->setData($params); + $data['html'] = $handler->renderTemplate($view, 'html'); + + $view->setData($data); + } + + return $handler->createResponse($view, $request, $format); + }; + + $handler->registerHandler($view->getFormat(), $templatingHandler); + } + + return $handler->handle($view); + } + } + +Jsonp custom handler +~~~~~~~~~~~~~~~~~~~~ + +To enable the common use case of creating Jsonp responses this Bundle provides an +easy solution to handle a custom handler for this use case. Enabling this setting +also automatically uses the mime type listener (see the next chapter) to register +a mime type for Jsonp. + +Simply add the following to your configuration + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + view: + jsonp_handler: ~ + +It is also possible to customize both the name of the GET parameter with the +callback, as well as the filter pattern that validates if the provided callback +is valid or not. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + view: + jsonp_handler: + callback_param: mycallback + +Finally the filter can also be disabled by setting it to false. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + view: + jsonp_handler: + callback_param: false + +When working with JSONP, be aware of `CVE-2014-4671`_ (full explanation can be +found here: `Abusing JSONP with Rosetta Flash`_. You SHOULD use `NelmioSecurityBundle`_ +and `disable the content type sniffing for script resources`_. + +CSRF validation +~~~~~~~~~~~~~~~ + +When building a single application that should handle forms both via HTML forms +as well as via a REST API, one runs into a problem with CSRF token validation. +In most cases it is necessary to enable them for HTML forms, but it makes no +sense to use them for a REST API. For this reason there is a form extension to +disable CSRF validation for users with a specific role. This of course requires +that REST API users authenticate themselves and get a special role assigned. + +.. code-block:: yaml + + fos_rest: + disable_csrf_role: ROLE_API + +That was it! + +.. _`Symfony Serializer Component`: http://symfony.com/doc/current/components/serializer.html +.. _`serializer`: https://github.com/schmittjoh/serializer +.. _`JMSSerializerBundle`: https://github.com/schmittjoh/JMSSerializerBundle +.. _`this example code`: https://github.com/liip/LiipHelloBundle/blob/master/Controller/HelloController.php +.. _`this example configuration`: https://github.com/liip-forks/symfony-standard/blob/techtalk/app/config/config.yml +.. _`CVE-2014-4671`: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-4671 +.. _`Abusing JSONP with Rosetta Flash`: http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/ +.. _`NelmioSecurityBundle`: https://github.com/nelmio/NelmioSecurityBundle +.. _`disable the content type sniffing for script resources`: https://github.com/nelmio/NelmioSecurityBundle#content-type-sniffing diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/3-listener-support.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/3-listener-support.rst new file mode 100644 index 0000000..0d07573 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/3-listener-support.rst @@ -0,0 +1,201 @@ +Step 3: Listener support +======================== + +`Listeners`_ are a way to hook into the request handling. This Bundle provides +various events from decoding the request content in the request (body listener), +determining the correct response format (format listener), reading parameters +from the request (parameter fetcher listener), to formatting the response either +with a template engine like twig or to e.g. xml or json using a serializer (view +response listener) as well as automatically setting the accepted HTTP methods +in the response (accept listener). + +With this in mind we now turn to explain each one of them. + +All listeners except the ``mime_type`` listener are disabled by default. You +can enable one or more of these listeners. For example, below you can see how +to enable a few additional listeners: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + param_fetcher_listener: true + body_listener: true + format_listener: true + view: + view_response_listener: 'force' + +It is possible to replace the service used for each of the listener if needed. +In this case, the Bundle listener will still be configured, however it will +not be registered in the kernel. The custom service listener will however not +be registered in the kernel, so it is up to the user to register it for the +appropriate event: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + body_listener: + service: my_body_listener + + my_body_listener: + class: Acme\BodyListener + tags: + - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 10 } + arguments: ['@fos_rest.decoder_provider', '%fos_rest.throw_exception_on_unsupported_content_type%'] + calls: + - [setDefaultFormat, ['%fos_rest.body_default_format%']] + + +View Response Listener +---------------------- + +The view response listener makes it possible to simply return a ``View`` +instance from action controllers. The final output will then automatically be +processed via the listener by the ``fos_rest.view_handler`` service. + +This requires adding the `SensioFrameworkExtraBundle`_ to your vendors. + +For details see :doc:`View Response Listener `. + +Body Listener +------------- + +The Request body listener makes it possible to decode the contents of a request +in order to populate the "request" parameter bag of the Request. This, for +example, allows to receive data that normally would be sent via POST as +``application/x-www-form-urlencode`` in a different format (for example +application/json) in a PUT. + +For details see :doc:`Body Listener `. + +Request Body Converter Listener +------------------------------- + +`ParamConverters`_ are a way to populate objects and inject them as controller +method arguments. The Request body converter makes it possible to deserialize +the request body into an object. + +This converter requires that you have installed `SensioFrameworkExtraBundle`_ +and have the converters enabled. + +For details see :doc:`Request Body Converter Listener `. + +Format Listener +--------------- + +The Request format listener attempts to determine the best format for the +request based on the HTTP Accept header and the format priority +configuration. This way it becomes possible to leverage Accept-Headers to +determine the request format, rather than a file extension (like foo.json). + +For details see :doc:`Format Listener `. + +Mime Type Listener +------------------ + +This listener allows registering additional mime types in the ``Request`` +class. It works similar to the `mime type listener`_ available in Symfony +since 2.5. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + view: + mime_types: {'jsonp': ['application/javascript+jsonp']} + +Param Fetcher Listener +---------------------- + +The param fetcher listener simply sets the ParamFetcher instance as a request attribute +configured for the matched controller so that the user does not need to do this manually. + +For details see :doc:`Param Fetcher Listener `. + +Allowed Http Methods Listener +----------------------------- + +This listener adds the ``Allow`` HTTP header to each request appending all +allowed methods for a given resource. + +Let's say we have the following routes: + +.. code-block:: text + + api_get_users + api_post_users + api_get_user + +A ``GET`` request to ``api_get_users`` will respond with: + +.. code-block:: text + + HTTP/1.0 200 OK + Date: Sat, 16 Jun 2012 15:17:22 GMT + Server: Apache/2.2.22 (Ubuntu) + Allow: GET, POST + +You need to enable this listener as follows, as it is disabled by default: + +.. code-block:: yaml + + fos_rest: + allowed_methods_listener: true + +Security Exception Listener +--------------------------- + +By default it is the responsibility of firewall access points to deal with +AccessDeniedExceptions. For example the ``form`` entry point will redirect to +the login page. However, for a RESTful application proper response HTTP status +codes should be provided. This listener is triggered before the normal exception +listener and firewall entry points and forces returning either a 403 or 401 +status code for any of the formats configured. + +It will return 401 for +``Symfony\Component\Security\Core\Exception\AuthenticationException`` or 403 for +``Symfony\Component\Security\Core\Exception\AccessDeniedException``. + +As a 401-response requires an authentication-challenge, you can set one using +the configuration ``unauthorized_challenge`` or leave it blank if you don't want +to send a challenge in the ``WWW-Authenticate`` header to the client. + +If you want to use an advanced value in this header, it's worth looking at this: +`Test Cases for HTTP Test Cases for the HTTP WWW-Authenticate header field`_. + +You need to enable this listener as follows, as it is disabled by default: + +.. code-block:: yaml + + fos_rest: + unauthorized_challenge: "Basic realm=\"Restricted Area\"" + access_denied_listener: + # all requests using the 'json' format will return a 403 on an access denied violation + json: true + +It is also recommended to enable the exception controller described in the next chapter. + +Priorities +---------- + +========================== ===================== ======== +Listener Event Priority +========================== ===================== ======== +``MimeTypeListener`` ``kernel.request`` 200 +``FormatListener`` ``kernel.request`` 34 +``VersionListener`` ``kernel.request`` 33 +``BodyListener`` ``kernel.request`` 10 +``ParamFetcherListener`` ``kernel.controller`` 5 +``ViewResponseListener`` ``kernel.controller`` -10 +``ViewResponseListener`` ``kernel.view`` 100 +``AllowedMethodsListener`` ``kernel.response`` 0 +========================== ===================== ======== + +That was it! + +.. _`Listeners`: http://symfony.com/doc/master/cookbook/service_container/event_listener.html +.. _`SensioFrameworkExtraBundle`: http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html +.. _`ParamConverters`: http://symfony.com/doc/master/bundles/SensioFrameworkExtraBundle/annotations/converters.html +.. _`mime type listener`: http://symfony.com/doc/current/cookbook/request/mime_type.html +.. _`Test Cases for HTTP Test Cases for the HTTP WWW-Authenticate header field`: http://greenbytes.de/tech/tc/httpauth/ diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/4-exception-controller-support.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/4-exception-controller-support.rst new file mode 100644 index 0000000..ffb330e --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/4-exception-controller-support.rst @@ -0,0 +1,88 @@ +Step 4: ExceptionController support +=================================== + +When implementing an API it is also necessary to handle exceptions in a RESTful +way, while ensuring that no security sensitive information leaks out. This +bundle provides an extra controller for that job. Using this custom +ExceptionController it is possible to leverage the View layer when building +responses for uncaught Exceptions. + +The ExceptionController can be enabled either via the FOSRestBundle +configuration and optionally an explicit controller action can be configured as +well: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + exception: + enabled: true + exception_controller: 'Acme\DemoBundle\Controller\ExceptionController::showAction' + +Alternatively the TwigBundle configuration can be used to enable the ExceptionController: + +.. code-block:: yaml + + # app/config/config.yml + twig: + exception_controller: 'FOS\RestBundle\Controller\ExceptionController::showAction' + +When enabling the RestBundle view-layer-aware ExceptionController it automatically +disables the TwigBundle exception listener and subsequent configuration. + +To map Exception classes to HTTP response status codes an *exception map* may +be configured, where the keys match a fully qualified class name and the values +are either an integer HTTP response status code or a string matching a class +constant of the ``FOS\RestBundle\Util\Codes`` class: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + exception: + codes: + 'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404 + 'Doctrine\ORM\OptimisticLockException': HTTP_CONFLICT + messages: + 'Acme\HelloBundle\Exception\MyExceptionWithASafeMessage': true + +If you want to display the message from the exception in the content of the +response, add the exception to the messages map as well. If not only the status +code will be returned. + +If you know what status code you want to return you do not have to add a +mapping, you can do this in your controller: + +.. code-block:: php + + validate($slug)) { + throw new HttpException(400, "New comment is not valid."); + } + } + } + +In order to make the serialization format of exceptions customizable it is possible to +configure a ``exception_handler``. Users of JMS serializer can further customize the output +by setting a custom ``exception_wrapper_handler``. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + service: + exception_handler: fos_rest.view.exception_wrapper_handler + view: + # only relevant when using the JMS serializer for serialization + exception_wrapper_handler: null + + +See `this example configuration`_ for more details. + +That was it! + +.. _`this example configuration`: https://github.com/liip-forks/symfony-standard/blob/techtalk/app/config/config.yml diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/5-automatic-route-generation_single-restful-controller.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/5-automatic-route-generation_single-restful-controller.rst new file mode 100644 index 0000000..5d873f9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/5-automatic-route-generation_single-restful-controller.rst @@ -0,0 +1,370 @@ +Routing +======= + +The RestBundle provides custom route loaders to help in defining REST friendly +routes as well as reducing the manual work of configuring routes and the given +requirements (like making sure that only GET may be used in certain routes +etc.). + +You may specify a ``default_format`` that the routing loader will use for the +``_format`` parameter if none is specified. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + routing_loader: + default_format: json + +Many of the features explained below are used in the following example code: +https://github.com/liip/LiipHelloBundle/blob/master/Controller/RestController.php + +Single RESTful controller routes +-------------------------------- + +In this section we are looking at controllers for resources without sub-resources. +Handling of sub-resources requires some additional considerations which +are explained in the next section. + +.. code-block:: yaml + + # app/config/routing.yml + users: + type: rest + resource: Acme\HelloBundle\Controller\UsersController + +This will tell Symfony2 to automatically generate proper REST routes from your +``UsersController`` action names. Notice ``type: rest`` option. It's required so +that the RestBundle can find which routes are supported. + +Define resource actions +----------------------- + +.. code-block:: php + + ; rel="kind_of_relation"`` +* **unlink** - this action accepts *UNLINK* requests to the url ``/resources/{id}`` + and is supposed to return nothing but a status code indicating that the specified + resources were unlinked. It is used to declare that some resources are not + related anymore. When calling a UNLINK url you must provide in your header at + least one link header formatted as follow : + ``; rel="kind_of_relation"`` + +Important note about **link** and **unlink**: The implementation of the request +listener extracting the resources as entities is not provided by this bundle. A +good implementation can be found here: `REST APIs with Symfony2: The Right Way`_ +It also contains some examples on how to use it. **link** and **unlink** were +obsoleted by RFC 2616, RFC 5988 aims to define it in a more clear way. Using +these methods is not risky, but remains unclear (cf. issues 323 and 325). + +Conventional Actions +-------------------- + +HATEOAS, or Hypermedia as the Engine of Application State, is an aspect of REST +which allows clients to interact with the REST service with hypertext - most +commonly through an HTML page. There are 3 Conventional Action routings that are +supported by this bundle: + +* **new** - A hypermedia representation that acts as the engine to *POST*. + Typically this is a form that allows the client to *POST* a new resource. + Shown as ``UsersController::newUsersAction()`` above. +* **edit** - A hypermedia representation that acts as the engine to *PUT*. + Typically this is a form that allows the client to *PUT*, or update, an + existing resource. Shown as ``UsersController::editUserAction()`` above. +* **remove** - A hypermedia representation that acts as the engine to *DELETE*. + Typically this is a form that allows the client to *DELETE* an existing resource. + Commonly a confirmation form. Shown as ``UsersController::removeUserAction()`` + above. + +Custom PATCH Actions +-------------------- + +All actions that do not match the ones listed in the sections above will +register as a *PATCH* action. In the controller shown above, these actions are +``UsersController::lockUserAction()``, ``UsersController::banUserAction()`` and +``UsersController::voteUserCommentAction()``. You could just as easily create a +method called ``UsersController::promoteUserAction()`` which would take a +*PATCH* request to the url ``/users/{slug}/promote``. This allows for easy +updating of aspects of a resource, without having to deal with the resource as a +whole at the standard *PATCH* or *PUT* endpoint. + +Sub-Resource Actions +-------------------- + +Of course it's possible and common to have sub or child resources. They are +easily defined within the same controller by following the naming convention +``ResourceController::actionResourceSubResource()`` - as seen in the example +above with ``UsersController::getUserCommentsAction()``. This is a good strategy +to follow when the child resource needs the parent resource's ID in order to +look up itself. + +Optional {_format} in route +--------------------------- + +By default, routes are generated with ``{_format}`` string. If you want to get clean +urls (``/orders`` instead ``/orders.{_format}``) then all you have to do is add +some configuration: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + routing_loader: + include_format: false + +The ``{_format}`` route requirement is automatically positioned using the available +listeners. So by default, the requirement will be ``{json|xml|html}``. If you want +to limit or add a custom format, you can do so by overriding it with the +``@Route`` annotation (or another one extending it, like ``@Get``, ``@Post``, ...): + +.. code-block:: php + + + + + + + + + + +Notice ``parent: users`` option in the second case. This option specifies that +the comments resource is child of the users resource. + +It is also necessary to add ``type: rest`` to the ``routing.yml`` file: + +.. code-block:: yaml + + # app/config/routing.yml + acme_hello: + type: rest + resource: "@AcmeHelloBundle/Resources/config/users_routes.yml" + +In this case, your ``UsersController`` MUST always have a single resource +``get...`` action: + +.. code-block:: php + + =2.4`` (or the full framework) you have access to +the expression language component and can add conditions to your routing +configuration with annotations (see `Routing Conditions`_). + +Example syntax: + +.. code-block:: php + + use FOS\RestBundle\Controller\Annotations\Route + /** + * @Route("", condition="context.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') matches '/firefox/i'") + */ + +.. _`@Route Symfony annotation`: http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html +.. _`Routing Conditions`: http://symfony.com/doc/current/book/routing.html#book-routing-conditions diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/body_listener.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/body_listener.rst new file mode 100644 index 0000000..3ff5893 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/body_listener.rst @@ -0,0 +1,90 @@ +Body Listener +============= + +The Request body listener makes it possible to decode the contents of a request +in order to populate the "request" parameter bag of the Request. This for +example allows to receive data that normally would be sent via POST as +``application/x-www-form-urlencode`` in a different format (for example +application/json) in a PUT. + +Decoders +~~~~~~~~ + +You can add a decoder for a custom format. You can also replace the default +decoder services provided by the bundle for the ``json`` and ``xml`` formats. +Below you can see how to override the decoder for the json format (the xml +decoder is explicitly kept to its default service): + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + body_listener: + decoders: + json: acme.decoder.json + xml: fos_rest.decoder.xml + +Your custom decoder service must use a class that implements the +``FOS\RestBundle\Decoder\DecoderInterface``. + +If you want to be able to use a checkbox within a form and have true and false +values (without any issue) you have to use: ``fos_rest.decoder.jsontoform`` +(available since FosRestBundle 0.8.0) + +If the listener receives content that it tries to decode but the decode fails +then a BadRequestHttpException will be thrown with the message: ``'Invalid ' . +$format . ' message received'``. When combined with the :doc:`exception controller +support <4-exception-controller-support>` this means your API will provide +useful error messages to your API users if they are making invalid requests. + +Array Normalizer +~~~~~~~~~~~~~~~~ + +Array normalizers allow to transform the data after it has been decoded in order +to facilitate its processing. + +For example, you may want your API's clients to be able to send requests with +underscored keys but if you use a decoder without a normalizer, you will receive +the data as it is and it can lead to incorrect mapping if you submit the request +directly to a form. If you wish the body listener to transform underscored keys +to camel cased ones, you can use the ``camel_keys`` array normalizer: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + body_listener: + array_normalizer: fos_rest.normalizer.camel_keys + +Sometimes an array contains a key, which once normalized, will override an +existing array key. For example ``foo_bar`` and ``foo_Bar`` will both lead to +``fooBar``. If the normalizer receives this data, the listener will throw a +BadRequestHttpException with the message ``The key "foo_Bar" is invalid as it +will override the existing key "fooBar"``. + +.. note:: + + If you use the ``camel_keys`` normalizer, you must be careful when choosing + your form name. + +You can also create your own array normalizer by implementing the +``FOS\RestBundle\Normalizer\ArrayNormalizerInterface``. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + body_listener: + array_normalizer: acme.normalizer.custom + +By default, the array normalizer is only applied to requests with a decodable format. +If you want form data to be normalized, you can use the ``forms`` flag: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + body_listener: + array_normalizer: + service: fos_rest.normalizer.camel_keys + forms: true diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/configuration-reference.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/configuration-reference.rst new file mode 100644 index 0000000..dde5950 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/configuration-reference.rst @@ -0,0 +1,122 @@ +Full default configuration +========================== + +.. code-block:: yaml + + # Default configuration for extension with alias: "fos_rest" + + fos_rest: + disable_csrf_role: null + access_denied_listener: + enabled: false + service: null + formats: + + # Prototype + name: ~ + unauthorized_challenge: null + param_fetcher_listener: + enabled: false + force: false + service: null + cache_dir: '%kernel.cache_dir%/fos_rest' + allowed_methods_listener: + enabled: false + service: null + routing_loader: + default_format: null + include_format: true + body_converter: + enabled: false + validate: false + validation_errors_argument: validationErrors + service: + router: router + templating: templating + serializer: null + view_handler: fos_rest.view_handler.default + exception_handler: fos_rest.view.exception_wrapper_handler + inflector: fos_rest.inflector.doctrine + validator: validator + serializer: + version: null + groups: [] + serialize_null: false + view: + default_engine: twig + force_redirects: + + # Prototype + name: ~ + mime_types: + enabled: false + service: null + formats: + + # Prototype + name: ~ + formats: + + # Prototype + name: ~ + templating_formats: + + # Prototype + name: ~ + view_response_listener: + enabled: false + force: false + service: null + failed_validation: 400 + empty_content: 204 + exception_wrapper_handler: null + serialize_null: false + jsonp_handler: + callback_param: callback + callback_filter: '/(^[a-z0-9_]+$)|(^YUI\.Env\.JSONP\._[0-9]+$)/i' + mime_type: application/javascript+jsonp + exception: + enabled: false + exception_controller: null + codes: + + # Prototype + name: ~ + messages: + + # Prototype + name: ~ + body_listener: + enabled: true + service: null + default_format: null + throw_exception_on_unsupported_content_type: false + decoders: + + # Prototype + name: ~ + array_normalizer: + service: null + forms: false + format_listener: + enabled: false + service: null + rules: + + # URL path info + path: null + + # URL host name + host: null + + # Method for URL + methods: null + stop: false + prefer_extension: true + fallback_format: html + exception_fallback_format: null + priorities: [] + media_type: + enabled: false + service: null + version_regex: '/(v|version)=(?P[0-9\.]+)/' diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/RssHandler.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/RssHandler.php new file mode 100644 index 0000000..ab3b720 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/RssHandler.php @@ -0,0 +1,121 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Examples; + +use FOS\RestBundle\View\View; +use FOS\RestBundle\View\ViewHandler; +use FOS\RestBundle\Util\Codes; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Psr\Log\LoggerInterface; + +/** + * This is an example RSS ViewHandler. + * It also shows how to handle exceptions within the ViewHandler so that the + * client can get a decent response. + * + * Please note that you will need to install the Zend library to use this + * handler. + * + * Configuration: + * + * services: + * my.rss_handler: + * class: FOS\RestBundle\Examples\RssHandler + * arguments: + * logger: "@?logger" + * + * my.view_handler: + * parent: fos_rest.view_handler.default + * calls: + * - ['registerHandler', [ 'rss', ["@my.rss_handler", 'createResponse'] ] ] + * + * fos_rest: + * service: + * view_handler: my.view_handler + * + * @author Tarjei Huse (tarjei - at scanmine.com) + */ +class RssHandler +{ + private $logger; + + public function __construct(LoggerInterface $logger = null) + { + $this->logger = $logger; + } + + /** + * Converts the viewdata to a RSS feed. Modify to suit your datastructure. + * + * @return Response + */ + public function createResponse(ViewHandler $handler, View $view, Request $request) + { + try { + $content = $this->createFeed($view->getData()); + $code = Codes::HTTP_OK; + } catch (\Exception $e) { + if ($this->logger) { + $this->logger->error($e); + } + + $content = sprintf('%s:
    %s
    ', $e->getMessage(), $e->getTraceAsString()); + $code = Codes::HTTP_BAD_REQUEST; + } + + return new Response($content, $code, $view->getHeaders()); + } + + /** + * @param $data array + * @param format string, either rss or atom + */ + protected function createFeed($data, $format = 'rss') + { + $feed = new \Zend_Feed_Writer_Feed(); + $feed->setTitle($data['title']); + $feed->setLink($data['link']); + $feed->setFeedLink($data['link'], 'rss'); + $feed->addAuthor(array( + 'name' => 'ZeroCMS', + 'email' => 'email!', + )); + $feed->setDateModified(time()); + $feed->setDescription('RSS feed from query'); + + // Add one or more entries. Note that entries must be manually added once created. + foreach ($data['documents'] as $document) { + $entry = $feed->createEntry(); + + $entry->setTitle($document['title']); + $entry->setLink($document['url']); + $entry->addAuthor(array( + 'name' => $document['author'], + //'email' => '', + //'uri' => '', + )); + + $entry->setDateModified($document['dateUpdated']->getTimestamp()); + $entry->setDateCreated($document['dateCreated']->getTimestamp()); + + if (isset($document['summary'])) { + $entry->setDescription($document['summary']); + } + + $entry->setContent($document['body']); + $feed->addEntry($entry); + } + + return $feed->export($format); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/chaplin_backbone.md b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/chaplin_backbone.md new file mode 100644 index 0000000..ec94fd9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/examples/chaplin_backbone.md @@ -0,0 +1,9 @@ +# Sample FOSRest application with Chaplin.js and Backbone.js + +[DunglasTodoMVCBundle](https://github.com/dunglas/DunglasTodoMVCBundle) is a Symfony implementation of the popular [TodoMVC](http://todomvc.com/) project. + +This example app includes: +* A REST API built with [FOSRestBundle](https://github.com/FriendsOfSymfony/FOSRestBundle) using a [body listener](https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/3-listener-support.md#body-listener), a [format listener](https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/3-listener-support.md#format-listener) and the `fos_rest.decoder.jsontoform` decoder +* JSON serialization of Doctrine entities through [JMSSerializerBundle](https://github.com/schmittjoh/JMSSerializerBundle) +* CSRF protection through [DunglasAngularCsrfBundle](https://github.com/dunglas/DunglasAngularCsrfBundle) +* A client built in [CoffeeScript](http://coffeescript.org/) with [Chaplin.js](http://chaplinjs.org/) and [Backbone.js](http://backbonejs.org/) diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/format_listener.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/format_listener.rst new file mode 100644 index 0000000..895eaa7 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/format_listener.rst @@ -0,0 +1,212 @@ +Format Listener +=============== + +The Request format listener attempts to determine the best format for the +request based on the Request's Accept-Header and the format priority +configuration. This way it becomes possible to leverage Accept-Headers to +determine the request format, rather than a file extension (like foo.json). + +The ``priorities`` define the order of media types as the application +prefers. Note that if a format is provided instead of a media type, the +format is converted into a list of media types matching the format. +The algorithm iteratively examines the provided Accept header first +looking at all the options with the highest ``q``. The first priority that +matches is returned. If none match the next lowest set of Accept headers with +equal ``q`` is examined and so on until there are no more Accept headers to +check. In this case ``fallback_format`` is used. + +Note that if ``_format`` is matched inside the route, then a virtual Accept +header setting is added with a ``q`` setting one lower than the lowest Accept +header, meaning that format is checked for a match in the priorities last. If +``prefer_extension`` is set to ``true`` then the virtual Accept header will be +one higher than the highest ``q`` causing the extension to be checked first. +Setting ``priorities`` to a non-empty array enables Accept header negotiations. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + format_listener: + rules: + # setting fallback_format to json means that instead of considering the next rule in case of a priority mismatch, json will be used + - { path: '^/', host: 'api.%domain%', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: false } + # setting fallback_format to false means that instead of considering the next rule in case of a priority mismatch, a 406 will be caused + - { path: '^/image', priorities: ['jpeg', 'gif'], fallback_format: false, prefer_extension: true } + # setting fallback_format to null means that in case of a priority mismatch the next rule will be considered + - { path: '^/admin', methods: [ 'GET', 'POST'], priorities: [ 'xml', 'html'], fallback_format: ~, prefer_extension: false } + # setting fallback_format to null, while setting exception_fallback_format to xml, will mean that in case of an exception, xml will be used + - { path: '^/api', priorities: [ 'xml', 'json'], fallback_format: ~, exception_fallback_format: xml, prefer_extension: false } + # setting a priority to */* basically means any format will be matched + - { path: '^/', priorities: [ 'text/html', '*/*'], fallback_format: html, prefer_extension: true } + +For example using the above configuration and the following Accept header: + +.. code-block:: text + + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json + +And the following route: + +.. code-block:: yaml + + hello: + path: /foo.{_format} + defaults: { _controller: foo.controller:indexAction, _format: ~ } + +When calling: + +* ``/foo.json`` will lead to setting the request format to ``json`` +* ``/foo`` will lead to setting the request format to ``html`` + +Furthermore the listener sets a ``media_type`` attribute on the request in +case the listener is configured with a ``MediaTypeNegotiatorInterface`` instance, +which is the case by default, with the matched media type. + +.. code-block:: php + + // f.e. text/html or application/vnd.custom_something+json etc. + $mediaType = $request->attributes->get('media_type'); + +The ``priorities`` should be configured carefully, especially when the +controller actions for specific routes only handle necessary security checks +for specific formats. In such cases it might make sense to hard code the format +in the controller action. + +.. code-block:: php + + public function getAction(Request $request) + { + $view = new View(); + // hard code the output format of the controller action + $view->setFormat('html'); + + // ... + } + +Note that the format needs to either be supported by the ``Request`` class +natively or it needs to be added as documented here or using the +`mime type listener`_ explained in the Symfony documentation. + +Disabling the Format Listener via Rules +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Often when integrating this Bundle with existing applications, it might be +useful to disable the format listener for some routes. In this case it is +possible to define a rule that will stop the format listener from determining a +format by setting ``stop`` to ``true`` as a rule option. Any rule containing +this setting and any rule following will not be considered and the Request +format will remain unchanged. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + format_listener: + rules: + - { path: '^/api', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: false } + - { path: '^/', stop: true } # Available for version >= 1.5 + +.. _media-type-version-extraction: + +Media Type Version Extraction +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The format listener can also determine the version of the selected media type +based on a regular expression. The regular expression can be configured as +follows. Setting it to an empty value will disable the behavior entirely. + +.. code-block:: yaml + + fos_rest: + format_listener: + media_type: + version_regex: '/(v|version)=(?P[0-9\.]+)/' + +The matched version is set as a Request attribute with the name ``version``, +and when using JMS serializer it is also set as an exclusion strategy +automatically in the ``ViewHandler``. + +To make the version mechanism working : + +1 - The client must pass the requested version in his header like this : + +.. code-block:: yaml + + Accept:application/json;version=1.0 + +2 - You must have declared the version value in your config, otherwise it won't be catched : + +.. code-block:: yaml + + fos_rest: + view: + mime_types: + json: ['application/json', 'application/json;version=1.0', 'application/json;version=1.1'] + +Note: If you have to handle huge versions and mime types, you can simplify the configuration with a php script: + +.. code-block:: php + + // app/config/fos_rest_mime_types.php + $versions = array( + '1.0', + '1.1', + '2.0', + ); + + $mimeTypes = array( + 'json' => array( + 'application/json', + ), + 'yml' => array( + 'application/yaml', + 'text/yaml', + ), + ); + + array_walk($mimeTypes, function (&$mimeTypes, $format, $versions) { + $versionMimeTypes = array(); + foreach ($mimeTypes as $mimeType) { + foreach ($versions as $version) { + array_push($versionMimeTypes, sprintf('%s;version=%s', $mimeType, $version)); + array_push($versionMimeTypes, sprintf('%s;v=%s', $mimeType, $version)); + } + } + $mimeTypes = array_merge($mimeTypes, $versionMimeTypes); + }, $versions); + + $container->loadFromExtension('fos_rest', array( + 'view' => array( + 'mime_types' => $mimeTypes, + ), + )); + +And then, import it from your config.yml file: + +.. code-block:: yaml + + imports: + - { resource: assets_version.php } + +With this way, you will ony have to update needed versions and base mime types, the script will handle the rest. + +3 - You should have tagged your entities with version information (@Since, @Until ...) + +See `this JMS Serializer article`_ for details about versioning objects. + +.. _`this JMS Serializer article`: http://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies#versioning-objects + +That's it, it should work now. + +If you have to verify if the version is correctly catched you can use something like : + +.. code-block:: php + + if ($this->container->get('fos_rest.version_listener')) { + print $this->container->get('fos_rest.version_listener')->getVersion(); + } + +Note that this version mechanism is configurable by your own by changing the regular expression in the +:ref:`media type version regex configuration `. + +.. _`mime type listener`: http://symfony.com/doc/current/cookbook/request/mime_type.html diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/index.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/index.rst new file mode 100644 index 0000000..bd54669 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/index.rst @@ -0,0 +1,73 @@ +Getting Started With FOSRestBundle +===================================== + +.. toctree:: + :hidden: + + 1-setting_up_the_bundle + 2-the-view-layer + 3-listener-support + view_response_listener + body_listener + request_body_converter_listener + format_listener + param_fetcher_listener + 4-exception-controller-support + 5-automatic-route-generation_single-restful-controller + 6-automatic-route-generation_multiple-restful-controllers + 7-manual-route-definition + annotations-reference + configuration-reference + +Installation +------------ + +Installation is a quick (I promise!) one-step process: + +1. :doc:`Setting up the bundle <1-setting_up_the_bundle>` + +Bundle usage +------------ + +Before you start using the bundle it is advised you run a quick look over the +six sections listed below. This bundle contains many features that are loosely +coupled so you may or may not need to use all of them. This bundle is just a +tool to help you in the job of creating a REST API with Symfony2. + +FOSRestBundle provides several tools to assist in building REST applications: + +- :doc:`The view layer <2-the-view-layer>` +- :doc:`Listener support <3-listener-support>` +- :doc:`ExceptionController support <4-exception-controller-support>` +- :doc:`Automatic route generation: single RESTful controller <5-automatic-route-generation_single-restful-controller>` (for simple resources) +- :doc:`Automatic route generation: multiple RESTful controllers <6-automatic-route-generation_multiple-restful-controllers>` (for resources with child/subresources) +- :doc:`Manual definition of routes <7-manual-route-definition>` + +Config reference +---------------- + +- :doc:`Configuration reference ` for a reference on + the available configuration options +- :doc:`Annotations reference ` for a reference on + the available configurations through annotations + +Example applications +-------------------- + +The following bundles/applications use the FOSRestBundle and can be used as a +guideline: + +- The `LiipHelloBundle`_ provides several examples for the RestBundle. + +- There is also `a fork of the Symfony2 Standard Edition`_ that is configured to + show the LiipHelloBundle examples. + +- The `FOSCommentBundle`_ uses FOSRestBundle for its API. + +- The `Symfony2 Rest Edition`_ provides a complete example of how to build a + controller that works for both HTML as well as JSON/XML. + +.. _`LiipHelloBundle`: https://github.com/liip/LiipHelloBundle +.. _`a fork of the Symfony2 Standard Edition`: https://github.com/liip-forks/symfony-standard/tree/techtalk +.. _`FOSCommentBundle`: https://github.com/FriendsOfSymfony/FOSCommentBundle +.. _`Symfony2 Rest Edition`: https://github.com/gimler/symfony-rest-edition diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/param_fetcher_listener.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/param_fetcher_listener.rst new file mode 100644 index 0000000..5808871 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/param_fetcher_listener.rst @@ -0,0 +1,142 @@ +Param Fetcher Listener +====================== + +The param fetcher listener simply sets the ParamFetcher instance as a request attribute +configured for the matched controller so that the user does not need to do this manually. + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + param_fetcher_listener: true + +.. code-block:: php + + name = "dynamic_request"; + $dynamicRequestParam->requirements = "\d+"; + $paramFetcher->addParam($dynamicRequestParam); + + $dynamicQueryParam = new QueryParam(); + $dynamicQueryParam->name = "dynamic_query"; + $dynamicQueryParam->requirements="[a-z]+"; + $paramFetcher->addParam($dynamicQueryParam); + + $page = $paramFetcher->get('page'); + $articles = array('bim', 'bam', 'bingo'); + + return array('articles' => $articles, 'page' => $page); + } + +.. note:: + + There is also ``$paramFetcher->all()`` to fetch all configured query + parameters at once. And also both ``$paramFetcher->get()`` and + ``$paramFetcher->all()`` support and optional ``$strict`` parameter to throw + a ``\RuntimeException`` on a validation error. + +.. note:: + + The ParamFetcher requirements feature requires the symfony/validator + component. + +Optionally the listener can also already set all configured query parameters as +request attributes + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + param_fetcher_listener: force + +.. code-block:: php + + $articles, 'page' => $page); + } diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/request_body_converter_listener.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/request_body_converter_listener.rst new file mode 100644 index 0000000..c273879 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/request_body_converter_listener.rst @@ -0,0 +1,95 @@ +Request Body Converter Listener +=============================== + +`ParamConverters`_ are a way to populate objects and inject them as controller +method arguments. The Request body converter makes it possible to deserialize +the request body into an object. + +This converter requires that you have installed `SensioFrameworkExtraBundle`_ +and have the converters enabled: + +.. code-block:: yaml + + # app/config/config.yml + sensio_framework_extra: + request: { converters: true } + +To enable the Request body converter, add the following configuration: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + body_converter: + enabled: true + +.. note:: + + You will probably want to disable the automatic route generation + (``@NoRoute``) for routes using the body converter, and instead define the + routes manually to avoid having the deserialized, type hinted objects + (``$post`` in this example) appear in the route as a parameter. + +Now, in the following example, the request body will be deserialized into a new +instance of ``Post`` and injected into the ``$post`` variable: + +.. code-block:: php + + use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; + + // ... + + /** + * @ParamConverter("post", converter="fos_rest.request_body") + */ + public function putPostAction(Post $post) + { + // ... + } + +You can configure the context used by the serializer during deserialization +via the ``deserializationContext`` option: + +.. code-block:: php + + /** + * @ParamConverter("post", converter="fos_rest.request_body", options={"deserializationContext"={"groups"={"group1", "group2"}, "version"="1.0"}}) + */ + public function putPostAction(Post $post) + { + // ... + } + +Validation +~~~~~~~~~~ + +If you would like to validate the deserialized object, you can do so by +enabling validation: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + body_converter: + enabled: true + validate: true + validation_errors_argument: validationErrors # This is the default value + +The validation errors will be set on the ``validationErrors`` controller argument: + +.. code-block:: php + + /** + * @ParamConverter("post", converter="fos_rest.request_body") + */ + public function putPostAction(Post $post, ConstraintViolationListInterface $validationErrors) + { + if (count($validationErrors) > 0) { + // Handle validation errors + } + + // ... + } + +.. _`ParamConverters`: http://symfony.com/doc/master/bundles/SensioFrameworkExtraBundle/annotations/converters.html +.. _`SensioFrameworkExtraBundle`: http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/view_response_listener.rst b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/view_response_listener.rst new file mode 100644 index 0000000..bffcde7 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Resources/doc/view_response_listener.rst @@ -0,0 +1,179 @@ +View Response listener +====================== + +The view response listener makes it possible to simply return a ``View`` +instance from action controllers. The final output will then automatically be +processed via the listener by the ``fos_rest.view_handler`` service. + +This requires adding the `SensioFrameworkExtraBundle`_ to your vendors. + +Now inside a controller it's possible to simply return a ``View`` instance. + +.. code-block:: php + + setData($data); + return $view; + } + } + +As this feature is heavily based on the `SensioFrameworkExtraBundle`_, the +example can further be simplified by using the various annotations supported by +that bundle. There is also one additional annotation called ``@View()`` which +extends from the ``@Template()`` annotation. + +The ``@View()`` and ``@Template()`` annotations behave essentially the same with +a minor difference. When ``view_response_listener`` is set to ``true`` instead +of ``force`` and ``@View()`` is not used, then rendering will be delegated to +`SensioFrameworkExtraBundle`_. + +Note that it is necessary to disable view annotations in +`SensioFrameworkExtraBundle`_ so that FOSRestBundle can take over the handling. +However, FOSRestBundle will do this automatically but it does not override any +explicit configuration. So make sure to remove or disable the following setting: + +.. code-block:: yaml + + # app/config/config.yml + fos_rest: + view: + view_response_listener: force + + sensio_framework_extra: + view: { annotations: false } + +.. code-block:: php + + setData($data) + ->setTemplateData($templateData) + ; + return $view; + } + +If ``@View()`` is used, the template variable name used to render templating +formats can be configured (default ``'data'``): + +.. code-block:: php + + + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsLoaderInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsLoaderInterface.php new file mode 100644 index 0000000..daf9a5d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsLoaderInterface.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Response\AllowedMethodsLoader; + +/** + * AllowedMethodsLoaderInterface. + * + * @author Boris Guéry + */ +interface AllowedMethodsLoaderInterface +{ + /** + * Returns the allowed http methods. + * + * array( + * 'some_route' => array('GET', 'POST'), + * 'another_route' => array('DELETE', 'PUT'), + * ); + * + * @return array + */ + public function getAllowedMethods(); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsRouterLoader.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsRouterLoader.php new file mode 100644 index 0000000..fc67120 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Response/AllowedMethodsLoader/AllowedMethodsRouterLoader.php @@ -0,0 +1,108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Response\AllowedMethodsLoader; + +use Symfony\Component\Routing\RouterInterface; +use Symfony\Component\Config\ConfigCache; +use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface; + +/** + * AllowedMethodsRouterLoader implementation using RouterInterface to fetch + * allowed http methods. + * + * @author Boris Guéry + */ +class AllowedMethodsRouterLoader implements AllowedMethodsLoaderInterface, CacheWarmerInterface +{ + private $router; + private $cache; + + /** + * Constructor. + * + * @param RouterInterface $router + * @param string $cacheDir + * @param bool $isDebug Kernel debug flag + */ + public function __construct(RouterInterface $router, $cacheDir, $isDebug) + { + $this->router = $router; + $this->cache = new ConfigCache(sprintf('%s/allowed_methods.cache.php', $cacheDir), $isDebug); + } + + /** + * {@inheritdoc} + */ + public function getAllowedMethods() + { + if (!$this->cache->isFresh()) { + $this->warmUp(null); + } + + $path = method_exists($this->cache, 'getPath') ? $this->cache->getPath() : $this->cache; + + return require $path; + } + + /** + * {@inheritdoc} + */ + public function isOptional() + { + return true; + } + + /** + * {@inheritdoc} + */ + public function warmUp($cacheDir) + { + $processedRoutes = array(); + + $routeCollection = $this->router->getRouteCollection(); + + foreach ($routeCollection->all() as $name => $route) { + if (!isset($processedRoutes[$route->getPath()])) { + $processedRoutes[$route->getPath()] = array( + 'methods' => array(), + 'names' => array(), + ); + } + + $processedRoutes[$route->getPath()]['names'][] = $name; + + $requirements = $route->getRequirements(); + if (isset($requirements['_method'])) { + $methods = explode('|', $requirements['_method']); + $processedRoutes[$route->getPath()]['methods'] = array_merge( + $processedRoutes[$route->getPath()]['methods'], + $methods + ); + } + } + + $allowedMethods = array(); + + foreach ($processedRoutes as $processedRoute) { + if (count($processedRoute['methods']) > 0) { + foreach ($processedRoute['names'] as $name) { + $allowedMethods[$name] = array_unique($processedRoute['methods']); + } + } + } + + $this->cache->write( + sprintf('getResources() + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/ClassResourceInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/ClassResourceInterface.php new file mode 100644 index 0000000..ded3a17 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/ClassResourceInterface.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing; + +/** + * Implement interface to define that missing resources in the methods should + * use the class name to identify the resource. + * + * @author Lukas Kahwe Smith + */ +interface ClassResourceInterface +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestActionReader.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestActionReader.php new file mode 100644 index 0000000..a3fed4a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestActionReader.php @@ -0,0 +1,564 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing\Loader\Reader; + +use Doctrine\Common\Annotations\Reader; +use Symfony\Component\Routing\Route; +use FOS\RestBundle\Controller\Annotations\Route as RouteAnnotation; +use FOS\RestBundle\Util\Inflector\InflectorInterface; +use FOS\RestBundle\Routing\RestRouteCollection; +use FOS\RestBundle\Request\ParamReader; + +/** + * REST controller actions reader. + * + * @author Konstantin Kudryashov + */ +class RestActionReader +{ + const COLLECTION_ROUTE_PREFIX = 'c'; + + private $annotationReader; + private $paramReader; + private $inflector; + private $formats; + private $includeFormat; + private $routePrefix; + private $namePrefix; + private $parents = array(); + private $availableHTTPMethods = array('get', 'post', 'put', 'patch', 'delete', 'link', 'unlink', 'head', 'options'); + private $availableConventionalActions = array('new', 'edit', 'remove'); + + /** + * Initializes controller reader. + * + * @param Reader $annotationReader + * @param ParamReader $paramReader + * @param InflectorInterface $inflector + * @param bool $includeFormat + * @param array $formats + */ + public function __construct(Reader $annotationReader, ParamReader $paramReader, InflectorInterface $inflector, $includeFormat, array $formats = array()) + { + $this->annotationReader = $annotationReader; + $this->paramReader = $paramReader; + $this->inflector = $inflector; + $this->includeFormat = $includeFormat; + $this->formats = $formats; + } + + /** + * Sets routes prefix. + * + * @param string $prefix Routes prefix + */ + public function setRoutePrefix($prefix = null) + { + $this->routePrefix = $prefix; + } + + /** + * Returns route prefix. + * + * @return string + */ + public function getRoutePrefix() + { + return $this->routePrefix; + } + + /** + * Sets route names prefix. + * + * @param string $prefix Route names prefix + */ + public function setNamePrefix($prefix = null) + { + $this->namePrefix = $prefix; + } + + /** + * Returns name prefix. + * + * @return string + */ + public function getNamePrefix() + { + return $this->namePrefix; + } + + /** + * Set parent routes. + * + * @param array $parents Array of parent resources names + */ + public function setParents(array $parents) + { + $this->parents = $parents; + } + + /** + * Returns parents. + * + * @return array + */ + public function getParents() + { + return $this->parents; + } + + /** + * Reads action route. + * + * @param RestRouteCollection $collection + * @param \ReflectionMethod $method + * @param string[] $resource + * + * @return Route + * + * @throws \InvalidArgumentException + */ + public function read(RestRouteCollection $collection, \ReflectionMethod $method, $resource) + { + // check that every route parent has non-empty singular name + foreach ($this->parents as $parent) { + if (empty($parent) || '/' === substr($parent, -1)) { + throw new \InvalidArgumentException( + "Every parent controller must have `get{SINGULAR}Action(\$id)` method\n". + 'where {SINGULAR} is a singular form of associated object' + ); + } + } + + // if method is not readable - skip + if (!$this->isMethodReadable($method)) { + return; + } + + // if we can't get http-method and resources from method name - skip + $httpMethodAndResources = $this->getHttpMethodAndResourcesFromMethod($method, $resource); + if (!$httpMethodAndResources) { + return; + } + + list($httpMethod, $resources, $isCollection, $isInflectable) = $httpMethodAndResources; + $arguments = $this->getMethodArguments($method); + + // if we have only 1 resource & 1 argument passed, then it's object call, so + // we can set collection singular name + if (1 === count($resources) && 1 === count($arguments) - count($this->parents)) { + $collection->setSingularName($resources[0]); + } + + // if we have parents passed - merge them with own resource names + if (count($this->parents)) { + $resources = array_merge($this->parents, $resources); + } + + if (empty($resources)) { + $resources[] = null; + } + + $routeName = $httpMethod.$this->generateRouteName($resources); + $urlParts = $this->generateUrlParts($resources, $arguments, $httpMethod); + + // if passed method is not valid HTTP method then it's either + // a hypertext driver, a custom object (PUT) or collection (GET) + // method + if (!in_array($httpMethod, $this->availableHTTPMethods)) { + $urlParts[] = $httpMethod; + $httpMethod = $this->getCustomHttpMethod($httpMethod, $resources, $arguments); + } + + // generated parameters + $routeName = strtolower($routeName); + $path = implode('/', $urlParts); + $defaults = array('_controller' => $method->getName()); + $requirements = array(); + $options = array(); + $host = ''; + $condition = null; + + $annotations = $this->readRouteAnnotation($method); + if ($annotations) { + foreach ($annotations as $annotation) { + $path = implode('/', $urlParts); + $defaults = array('_controller' => $method->getName()); + $requirements = array(); + $options = array(); + $methods = explode('|', $httpMethod); + $condition = null; + + $annoRequirements = $annotation->getRequirements(); + $annoMethods = $annotation->getMethods(); + + if (!empty($annoMethods)) { + $methods = $annoMethods; + } + + $path = $annotation->getPath() !== null ? $this->routePrefix.$annotation->getPath() : $path; + $requirements = array_merge($requirements, $annoRequirements); + $options = array_merge($options, $annotation->getOptions()); + $defaults = array_merge($defaults, $annotation->getDefaults()); + $host = $annotation->getHost(); + $schemes = $annotation->getSchemes(); + //TODO remove checks after Symfony requirement is bumped to 2.4 + if (method_exists($annotation, 'getCondition')) { + $condition = $annotation->getCondition(); + } + + if ($this->includeFormat === true) { + $path .= '.{_format}'; + + if (!isset($requirements['_format']) && !empty($this->formats)) { + $requirements['_format'] = implode('|', array_keys($this->formats)); + } + } + // add route to collection + $route = new Route( + $path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition + ); + $this->addRoute($collection, $routeName, $route, $isCollection, $isInflectable, $annotation); + } + } else { + if ($this->includeFormat === true) { + $path .= '.{_format}'; + + if (!isset($requirements['_format']) && !empty($this->formats)) { + $requirements['_format'] = implode('|', array_keys($this->formats)); + } + } + + $methods = explode('|', strtoupper($httpMethod)); + + // add route to collection + $route = new Route( + $path, $defaults, $requirements, $options, $host, array(), $methods, $condition + ); + $this->addRoute($collection, $routeName, $route, $isCollection, $isInflectable); + } + } + + /** + * Checks whether provided method is readable. + * + * @param \ReflectionMethod $method + * + * @return bool + */ + private function isMethodReadable(\ReflectionMethod $method) + { + // if method starts with _ - skip + if ('_' === substr($method->getName(), 0, 1)) { + return false; + } + + $hasNoRouteMethod = (bool) $this->readMethodAnnotation($method, 'NoRoute'); + $hasNoRouteClass = (bool) $this->readClassAnnotation($method->getDeclaringClass(), 'NoRoute'); + + $hasNoRoute = $hasNoRoute = $hasNoRouteMethod || $hasNoRouteClass; + // since NoRoute extends Route we need to exclude all the method NoRoute annotations + $hasRoute = (bool) $this->readMethodAnnotation($method, 'Route') && !$hasNoRouteMethod; + + // if method has NoRoute annotation and does not have Route annotation - skip + if ($hasNoRoute && !$hasRoute) { + return false; + } + + return true; + } + + /** + * Returns HTTP method and resources list from method signature. + * + * @param \ReflectionMethod $method + * @param string[] $resource + * + * @return bool|array + */ + private function getHttpMethodAndResourcesFromMethod(\ReflectionMethod $method, $resource) + { + // if method doesn't match regex - skip + if (!preg_match('/([a-z][_a-z0-9]+)(.*)Action/', $method->getName(), $matches)) { + return false; + } + + $httpMethod = strtolower($matches[1]); + $resources = preg_split( + '/([A-Z][^A-Z]*)/', $matches[2], -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE + ); + $isCollection = false; + $isInflectable = true; + + if (0 === strpos($httpMethod, self::COLLECTION_ROUTE_PREFIX) + && in_array(substr($httpMethod, 1), $this->availableHTTPMethods) + ) { + $isCollection = true; + $httpMethod = substr($httpMethod, 1); + } elseif ('options' === $httpMethod) { + $isCollection = true; + } + + if ($isCollection && !empty($resource)) { + $resourcePluralized = $this->inflector->pluralize(end($resource)); + $isInflectable = ($resourcePluralized != $resource[count($resource) - 1]); + $resource[count($resource) - 1] = $resourcePluralized; + } + + $resources = array_merge($resource, $resources); + + return array($httpMethod, $resources, $isCollection, $isInflectable); + } + + /** + * Returns readable arguments from method. + * + * @param \ReflectionMethod $method + * + * @return \ReflectionParameter[] + */ + private function getMethodArguments(\ReflectionMethod $method) + { + // ignore all query params + $params = $this->paramReader->getParamsFromMethod($method); + + // ignore type hinted arguments that are or extend from: + // * Symfony\Component\HttpFoundation\Request + // * FOS\RestBundle\Request\QueryFetcher + // * Symfony\Component\Validator\ConstraintViolationList + $ignoreClasses = array( + 'Symfony\Component\HttpFoundation\Request', + 'FOS\RestBundle\Request\ParamFetcherInterface', + 'Symfony\Component\Validator\ConstraintViolationListInterface', + 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter', + ); + + $arguments = array(); + foreach ($method->getParameters() as $argument) { + if (isset($params[$argument->getName()])) { + continue; + } + + $argumentClass = $argument->getClass(); + if ($argumentClass) { + foreach ($ignoreClasses as $class) { + if ($argumentClass->getName() === $class || $argumentClass->isSubclassOf($class)) { + continue 2; + } + } + } + + $arguments[] = $argument; + } + + return $arguments; + } + + /** + * Generates route name from resources list. + * + * @param string[] $resources + * + * @return string + */ + private function generateRouteName(array $resources) + { + $routeName = ''; + foreach ($resources as $resource) { + if (null !== $resource) { + $routeName .= '_'.basename($resource); + } + } + + return $routeName; + } + + /** + * Generates URL parts for route from resources list. + * + * @param string[] $resources + * @param \ReflectionParameter[] $arguments + * @param string $httpMethod + * + * @return array + */ + private function generateUrlParts(array $resources, array $arguments, $httpMethod) + { + $urlParts = array(); + foreach ($resources as $i => $resource) { + // if we already added all parent routes paths to URL & we have + // prefix - add it + if (!empty($this->routePrefix) && $i === count($this->parents)) { + $urlParts[] = $this->routePrefix; + } + + // if we have argument for current resource, then it's object. + // otherwise - it's collection + if (isset($arguments[$i])) { + if (null !== $resource) { + $urlParts[] = + strtolower($this->inflector->pluralize($resource)) + .'/{'.$arguments[$i]->getName().'}'; + } else { + $urlParts[] = '{'.$arguments[$i]->getName().'}'; + } + } elseif (null !== $resource) { + if ((0 === count($arguments) && !in_array($httpMethod, $this->availableHTTPMethods)) + || 'new' === $httpMethod + || 'post' === $httpMethod + ) { + $urlParts[] = $this->inflector->pluralize(strtolower($resource)); + } else { + $urlParts[] = strtolower($resource); + } + } + } + + return $urlParts; + } + + /** + * Returns custom HTTP method for provided list of resources, arguments, method. + * + * @param string $httpMethod current HTTP method + * @param string[] $resources resources list + * @param \ReflectionParameter[] $arguments list of method arguments + * + * @return string + */ + private function getCustomHttpMethod($httpMethod, array $resources, array $arguments) + { + if (in_array($httpMethod, $this->availableConventionalActions)) { + // allow hypertext as the engine of application state + // through conventional GET actions + return 'get'; + } + + if (count($arguments) < count($resources)) { + // resource collection + return 'get'; + } + + //custom object + return 'patch'; + } + + /** + * Returns first route annotation for method. + * + * @param \ReflectionMethod $reflectionMethod + * + * @return RouteAnnotation[] + */ + private function readRouteAnnotation(\ReflectionMethod $reflectionMethod) + { + $annotations = array(); + + foreach (array('Route', 'Get', 'Post', 'Put', 'Patch', 'Delete', 'Link', 'Unlink', 'Head', 'Options') as $annotationName) { + if ($annotations_new = $this->readMethodAnnotations($reflectionMethod, $annotationName)) { + $annotations = array_merge($annotations, $annotations_new); + } + } + + return $annotations; + } + + /** + * Reads class annotations. + * + * @param \ReflectionClass $reflectionClass + * @param string $annotationName + * + * @return RouteAnnotation|null + */ + private function readClassAnnotation(\ReflectionClass $reflectionClass, $annotationName) + { + $annotationClass = "FOS\\RestBundle\\Controller\\Annotations\\$annotationName"; + + if ($annotation = $this->annotationReader->getClassAnnotation($reflectionClass, $annotationClass)) { + return $annotation; + } + } + + /** + * Reads method annotations. + * + * @param \ReflectionMethod $reflectionMethod + * @param string $annotationName + * + * @return RouteAnnotation|null + */ + private function readMethodAnnotation(\ReflectionMethod $reflectionMethod, $annotationName) + { + $annotationClass = "FOS\\RestBundle\\Controller\\Annotations\\$annotationName"; + + if ($annotation = $this->annotationReader->getMethodAnnotation($reflectionMethod, $annotationClass)) { + return $annotation; + } + } + + /** + * Reads method annotations. + * + * @param \ReflectionMethod $reflectionMethod + * @param string $annotationName + * + * @return RouteAnnotation[] + */ + private function readMethodAnnotations(\ReflectionMethod $reflectionMethod, $annotationName) + { + $annotations = array(); + $annotationClass = "FOS\\RestBundle\\Controller\\Annotations\\$annotationName"; + + if ($annotations_new = $this->annotationReader->getMethodAnnotations($reflectionMethod)) { + foreach ($annotations_new as $annotation) { + if ($annotation instanceof $annotationClass) { + $annotations[] = $annotation; + } + } + } + + return $annotations; + } + + /** + * @param RestRouteCollection $collection + * @param string $routeName + * @param Route $route + * @param bool $isCollection + * @param bool $isInflectable + * @param RouteAnnotation $annotation + */ + private function addRoute(RestRouteCollection $collection, $routeName, $route, $isCollection, $isInflectable, RouteAnnotation $annotation = null) + { + if ($annotation && null !== $annotation->getName()) { + $options = $annotation->getOptions(); + + if (isset($options['method_prefix']) && false === $options['method_prefix']) { + $routeName = $annotation->getName(); + } else { + $routeName = $routeName.$annotation->getName(); + } + } + + $fullRouteName = $this->namePrefix.$routeName; + + if ($isCollection && !$isInflectable) { + $collection->add($this->namePrefix.self::COLLECTION_ROUTE_PREFIX.$routeName, $route); + if (!$collection->get($fullRouteName)) { + $collection->add($fullRouteName, clone $route); + } + } else { + $collection->add($fullRouteName, $route); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestControllerReader.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestControllerReader.php new file mode 100644 index 0000000..baf77b9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/Reader/RestControllerReader.php @@ -0,0 +1,120 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing\Loader\Reader; + +use Symfony\Component\Config\Resource\FileResource; +use Doctrine\Common\Annotations\Reader; +use FOS\RestBundle\Routing\RestRouteCollection; + +/** + * REST controller reader. + * + * @author Konstantin Kudryashov + */ +class RestControllerReader +{ + private $actionReader; + private $annotationReader; + + /** + * Initializes controller reader. + * + * @param RestActionReader $actionReader action reader + * @param Reader $annotationReader annotation reader + */ + public function __construct(RestActionReader $actionReader, Reader $annotationReader) + { + $this->actionReader = $actionReader; + $this->annotationReader = $annotationReader; + } + + /** + * Returns action reader. + * + * @return RestActionReader + */ + public function getActionReader() + { + return $this->actionReader; + } + + /** + * Reads controller routes. + * + * @param \ReflectionClass $reflectionClass + * + * @return RestRouteCollection + * + * @throws \InvalidArgumentException + */ + public function read(\ReflectionClass $reflectionClass) + { + $collection = new RestRouteCollection(); + $collection->addResource(new FileResource($reflectionClass->getFileName())); + + // read prefix annotation + if ($annotation = $this->readClassAnnotation($reflectionClass, 'Prefix')) { + $this->actionReader->setRoutePrefix($annotation->value); + } + + // read name-prefix annotation + if ($annotation = $this->readClassAnnotation($reflectionClass, 'NamePrefix')) { + $this->actionReader->setNamePrefix($annotation->value); + } + + $resource = array(); + // read route-resource annotation + if ($annotation = $this->readClassAnnotation($reflectionClass, 'RouteResource')) { + $resource = explode('_', $annotation->resource); + } elseif ($reflectionClass->implementsInterface('FOS\RestBundle\Routing\ClassResourceInterface')) { + $resource = preg_split( + '/([A-Z][^A-Z]*)Controller/', $reflectionClass->getShortName(), -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE + ); + if (empty($resource)) { + throw new \InvalidArgumentException("Controller '{$reflectionClass->name}' does not identify a resource"); + } + } + + // trim '/' at the start of the prefix + if ('/' === substr($prefix = $this->actionReader->getRoutePrefix(), 0, 1)) { + $this->actionReader->setRoutePrefix(substr($prefix, 1)); + } + + // read action routes into collection + foreach ($reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { + $this->actionReader->read($collection, $method, $resource); + } + + $this->actionReader->setRoutePrefix(null); + $this->actionReader->setNamePrefix(null); + $this->actionReader->setParents(array()); + + return $collection; + } + + /** + * Reads class annotations. + * + * @param \ReflectionClass $reflectionClass + * @param string $annotationName + * + * @return object|null + */ + private function readClassAnnotation(\ReflectionClass $reflectionClass, $annotationName) + { + $annotationClass = "FOS\\RestBundle\\Controller\\Annotations\\$annotationName"; + + if ($annotation = $this->annotationReader->getClassAnnotation($reflectionClass, $annotationClass)) { + return $annotation; + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteLoader.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteLoader.php new file mode 100644 index 0000000..2d06c5c --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteLoader.php @@ -0,0 +1,192 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing\Loader; + +use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Config\Loader\Loader; +use Symfony\Component\Config\FileLocatorInterface; +use FOS\RestBundle\Routing\Loader\Reader\RestControllerReader; + +/** + * RestRouteLoader REST-enabled controller router loader. + * + * @author Konstantin Kudryashov + * @author Bulat Shakirzyanov + */ +class RestRouteLoader extends Loader +{ + protected $container; + protected $controllerParser; + protected $controllerReader; + protected $defaultFormat; + protected $locator; + + /** + * Initializes loader. + * + * @param ContainerInterface $container + * @param FileLocatorInterface $locator + * @param ControllerNameParser $controllerParser + * @param RestControllerReader $controllerReader + * @param string $defaultFormat + */ + public function __construct( + ContainerInterface $container, + FileLocatorInterface $locator, + ControllerNameParser $controllerParser, + RestControllerReader $controllerReader, $defaultFormat = 'html' + ) { + $this->container = $container; + $this->locator = $locator; + $this->controllerParser = $controllerParser; + $this->controllerReader = $controllerReader; + $this->defaultFormat = $defaultFormat; + } + + /** + * Returns controller reader. + * + * @return RestControllerReader + */ + public function getControllerReader() + { + return $this->controllerReader; + } + + /** + * {@inheritdoc} + */ + public function load($controller, $type = null) + { + list($prefix, $class) = $this->getControllerLocator($controller); + + $collection = $this->controllerReader->read(new \ReflectionClass($class)); + $collection->prependRouteControllersWithPrefix($prefix); + $collection->setDefaultFormat($this->defaultFormat); + + return $collection; + } + + /** + * {@inheritdoc} + */ + public function supports($resource, $type = null) + { + return is_string($resource) + && 'rest' === $type + && !in_array(pathinfo($resource, PATHINFO_EXTENSION), array('xml', 'yml') + ); + } + + /** + * Returns controller locator by it's id. + * + * @param string $controller + * + * @return array + * + * @throws \InvalidArgumentException + */ + private function getControllerLocator($controller) + { + $class = null; + $prefix = null; + + if (0 === strpos($controller, '@')) { + $file = $this->locator->locate($controller); + $controllerClass = $this->findClass($file); + + if (false === $controllerClass) { + throw new \InvalidArgumentException(sprintf('Can\'t find class for controller "%s"', $controller)); + } + + $controller = $controllerClass; + } + + if ($this->container->has($controller)) { + // service_id + $prefix = $controller.':'; + $this->container->enterScope('request'); + $this->container->set('request', new Request()); + $class = get_class($this->container->get($controller)); + $this->container->leaveScope('request'); + } elseif (class_exists($controller)) { + // full class name + $class = $controller; + $prefix = $class.'::'; + } elseif (false !== strpos($controller, ':')) { + // bundle:controller notation + try { + $notation = $this->controllerParser->parse($controller.':method'); + list($class) = explode('::', $notation); + $prefix = $class.'::'; + } catch (\Exception $e) { + throw new \InvalidArgumentException( + sprintf('Can\'t locate "%s" controller.', $controller) + ); + } + } + + if (empty($class)) { + throw new \InvalidArgumentException(sprintf( + 'Class could not be determined for Controller identified by "%s".', $controller + )); + } + + return array($prefix, $class); + } + + /** + * Returns the full class name for the first class in the file. + * + * @param string $file A PHP file path + * + * @return string|false Full class name if found, false otherwise + */ + protected function findClass($file) + { + $class = false; + $namespace = false; + $tokens = token_get_all(file_get_contents($file)); + for ($i = 0, $count = count($tokens); $i < $count; ++$i) { + $token = $tokens[$i]; + + if (!is_array($token)) { + continue; + } + + if (true === $class && T_STRING === $token[0]) { + return $namespace.'\\'.$token[1]; + } + + if (true === $namespace && T_STRING === $token[0]) { + $namespace = ''; + do { + $namespace .= $token[1]; + $token = $tokens[++$i]; + } while ($i < $count && is_array($token) && in_array($token[0], array(T_NS_SEPARATOR, T_STRING))); + } + + if (T_CLASS === $token[0]) { + $class = true; + } + + if (T_NAMESPACE === $token[0]) { + $namespace = true; + } + } + + return false; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteProcessor.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteProcessor.php new file mode 100644 index 0000000..8775637 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestRouteProcessor.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing\Loader; + +use Symfony\Component\Config\Loader\FileLoader; +use Symfony\Component\Config\Loader\LoaderInterface; +use Symfony\Component\Routing\RouteCollection; + +/** + * Processes resource in provided loader. + * + * @author Donald Tyler + * @author Konstantin Kudryashov + */ +class RestRouteProcessor +{ + /** + * Import & return routes collection from a resource. + * + * @param LoaderInterface $loader The Loader + * @param mixed $resource A Resource + * @param array $parents Array of parent resources names + * @param string $routePrefix Current routes prefix + * @param string $namePrefix Routes names prefix + * @param string $type The resource type + * @param string $currentDir Current directory of the loader + * + * @return RouteCollection A RouteCollection instance + */ + public function importResource( + LoaderInterface $loader, + $resource, + array $parents = array(), + $routePrefix = null, + $namePrefix = null, + $type = null, + $currentDir = null + ) { + $loader = $loader->resolve($resource, $type); + + if ($loader instanceof FileLoader && null !== $currentDir) { + $resource = $loader->getLocator()->locate($resource, $currentDir); + } elseif ($loader instanceof RestRouteLoader) { + $loader->getControllerReader()->getActionReader()->setParents($parents); + $loader->getControllerReader()->getActionReader()->setRoutePrefix($routePrefix); + $loader->getControllerReader()->getActionReader()->setNamePrefix($namePrefix); + } + + return $loader->load($resource, $type); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestXmlCollectionLoader.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestXmlCollectionLoader.php new file mode 100644 index 0000000..29f9b07 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestXmlCollectionLoader.php @@ -0,0 +1,281 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing\Loader; + +use Symfony\Component\Config\FileLocatorInterface; +use Symfony\Component\Routing\Loader\XmlFileLoader; +use Symfony\Component\Routing\RouteCollection; +use FOS\RestBundle\Routing\RestRouteCollection; +use Symfony\Component\Config\Util\XmlUtils; + +/** + * RestXmlCollectionLoader XML file collections loader. + * + * @author Donald Tyler + */ +class RestXmlCollectionLoader extends XmlFileLoader +{ + protected $collectionParents = array(); + private $processor; + private $includeFormat; + private $formats; + private $defaultFormat; + + /** + * Initializes xml loader. + * + * @param FileLocatorInterface $locator + * @param RestRouteProcessor $processor + * @param bool $includeFormat + * @param string[] $formats + * @param string $defaultFormat + */ + public function __construct( + FileLocatorInterface $locator, + RestRouteProcessor $processor, + $includeFormat = true, + array $formats = array(), + $defaultFormat = null + ) { + parent::__construct($locator); + + $this->processor = $processor; + $this->includeFormat = $includeFormat; + $this->formats = $formats; + $this->defaultFormat = $defaultFormat; + } + + /** + * {@inheritdoc} + */ + protected function parseNode(RouteCollection $collection, \DOMElement $node, $path, $file) + { + switch ($node->tagName) { + case 'route': + $this->parseRoute($collection, $node, $path); + break; + case 'import': + $name = (string) $node->getAttribute('id'); + $resource = (string) $node->getAttribute('resource'); + $prefix = (string) $node->getAttribute('prefix'); + $namePrefix = (string) $node->getAttribute('name-prefix'); + $parent = (string) $node->getAttribute('parent'); + $type = (string) $node->getAttribute('type'); + $currentDir = dirname($path); + + $parents = array(); + if (!empty($parent)) { + if (!isset($this->collectionParents[$parent])) { + throw new \InvalidArgumentException(sprintf('Cannot find parent resource with name %s', $parent)); + } + + $parents = $this->collectionParents[$parent]; + } + + $imported = $this->processor->importResource($this, $resource, $parents, $prefix, $namePrefix, $type, $currentDir); + + if (!empty($name) && $imported instanceof RestRouteCollection) { + $parents[] = (!empty($prefix) ? $prefix.'/' : '').$imported->getSingularName(); + $prefix = null; + + $this->collectionParents[$name] = $parents; + } + + $imported->addPrefix($prefix); + $collection->addCollection($imported); + break; + default: + throw new \InvalidArgumentException(sprintf('Unable to parse tag "%s"', $node->tagName)); + } + } + + /** + * {@inheritdoc} + */ + protected function parseRoute(RouteCollection $collection, \DOMElement $node, $path) + { + if ($this->includeFormat) { + $path = $node->getAttribute('path'); + // append format placeholder if not present + if (false === strpos($path, '{_format}')) { + $node->setAttribute('path', $path.'.{_format}'); + } + + // set format requirement if configured globally + $requirements = $node->getElementsByTagNameNS(self::NAMESPACE_URI, 'requirement'); + $format = null; + for ($i = 0; $i < $requirements->length; ++$i) { + $item = $requirements->item($i); + if ($item instanceof \DOMElement && $item->hasAttribute('_format')) { + $format = $item->getAttribute('_format'); + break; + } + } + + if (null === $format && !empty($this->formats)) { + $requirement = $node->ownerDocument->createElementNs( + self::NAMESPACE_URI, + 'requirement', + implode('|', array_keys($this->formats)) + ); + $requirement->setAttribute('key', '_format'); + $node->appendChild($requirement); + } + } + + // set the default format if configured + if (null !== $this->defaultFormat) { + $defaultFormatNode = $node->ownerDocument->createElementNS( + self::NAMESPACE_URI, + 'default', + $this->defaultFormat + ); + $defaultFormatNode->setAttribute('key', '_format'); + $node->appendChild($defaultFormatNode); + } + + $options = $this->getOptions($node); + + foreach ($options as $option) { + $node->appendChild($option); + } + + $length = $node->childNodes->length; + for ($i = 0; $i < $length; ++$i) { + $loopNode = $node->childNodes->item($i); + if ($loopNode->nodeType == XML_TEXT_NODE) { + continue; + } + + $newNode = $node->ownerDocument->createElementNS( + self::NAMESPACE_URI, + $loopNode->nodeName, + $loopNode->nodeValue + ); + + foreach ($loopNode->attributes as $value) { + $newNode->setAttribute($value->name, $value->value); + } + + $node->appendChild($newNode); + } + + parent::parseRoute($collection, $node, $path); + } + + private function getOptions(\DOMElement $node) + { + $options = array(); + foreach ($node->childNodes as $child) { + if ($child instanceof \DOMElement && $child->tagName === 'option') { + $option = $node->ownerDocument->createElementNs( + self::NAMESPACE_URI, + 'option', + $child->nodeValue + ); + $option->setAttribute('key', $child->getAttribute('key')); + $options[] = $option; + } + } + + return $options; + } + + /** + * {@inheritdoc} + */ + public function supports($resource, $type = null) + { + return is_string($resource) && + 'xml' === pathinfo($resource, PATHINFO_EXTENSION) && + 'rest' === $type; + } + + /** + * @param \DOMDocument $dom + * + * @throws \InvalidArgumentException When xml doesn't validate its xsd schema + */ + protected function validate(\DOMDocument $dom) + { + $restRoutinglocation = realpath(__DIR__.'/../../Resources/config/schema/routing/rest_routing-1.0.xsd'); + $restRoutinglocation = rawurlencode(str_replace('\\', '/', $restRoutinglocation)); + $routinglocation = realpath(__DIR__.'/../../Resources/config/schema/routing-1.0.xsd'); + $routinglocation = rawurlencode(str_replace('\\', '/', $routinglocation)); + $source = << + + + + + + +EOF + ; + + $current = libxml_use_internal_errors(true); + libxml_clear_errors(); + + if (!$dom->schemaValidateSource($source)) { + throw new \InvalidArgumentException(implode("\n", $this->getXmlErrors_($current))); + } + libxml_use_internal_errors($current); + } + + /** + * {@inheritdoc} + */ + protected function loadFile($file) + { + if (class_exists('Symfony\Component\Config\Util\XmlUtils')) { + $dom = XmlUtils::loadFile($file); + $this->validate($dom); + + return $dom; + } + + return parent::loadFile($file); + } + + /** + * Retrieves libxml errors and clears them. + * + * Note: The underscore postfix on the method name is to ensure compatibility with versions + * before 2.0.16 while working around a bug in PHP https://bugs.php.net/bug.php?id=62956 + * + * @param bool $internalErrors The previous state of internal errors to reset it + * + * @return array An array of libxml error strings + */ + private function getXmlErrors_($internalErrors) + { + $errors = array(); + foreach (libxml_get_errors() as $error) { + $errors[] = sprintf('[%s %s] %s (in %s - line %d, column %d)', + LIBXML_ERR_WARNING == $error->level ? 'WARNING' : 'ERROR', + $error->code, + trim($error->message), + $error->file ? $error->file : 'n/a', + $error->line, + $error->column + ); + } + + libxml_clear_errors(); + libxml_use_internal_errors($internalErrors); + + return $errors; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestYamlCollectionLoader.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestYamlCollectionLoader.php new file mode 100644 index 0000000..985b4c9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/Loader/RestYamlCollectionLoader.php @@ -0,0 +1,176 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing\Loader; + +use Symfony\Component\Config\FileLocatorInterface; +use Symfony\Component\Config\Resource\FileResource; +use Symfony\Component\Yaml\Yaml; +use Symfony\Component\Routing\Loader\YamlFileLoader; +use Symfony\Component\Routing\RouteCollection; +use FOS\RestBundle\Routing\RestRouteCollection; + +/** + * RestYamlCollectionLoader YAML file collections loader. + */ +class RestYamlCollectionLoader extends YamlFileLoader +{ + protected $collectionParents = array(); + private $processor; + private $includeFormat; + private $formats; + private $defaultFormat; + + /** + * Initializes yaml loader. + * + * @param FileLocatorInterface $locator + * @param RestRouteProcessor $processor + * @param bool $includeFormat + * @param string[] $formats + * @param string $defaultFormat + */ + public function __construct( + FileLocatorInterface $locator, + RestRouteProcessor $processor, + $includeFormat = true, + array $formats = array(), + $defaultFormat = null + ) { + parent::__construct($locator); + + $this->processor = $processor; + $this->includeFormat = $includeFormat; + $this->formats = $formats; + $this->defaultFormat = $defaultFormat; + } + + /** + * {@inheritdoc} + */ + public function load($file, $type = null) + { + $path = $this->locator->locate($file); + + $config = Yaml::parse(file_get_contents($path)); + + $collection = new RouteCollection(); + $collection->addResource(new FileResource($path)); + + // process routes and imports + foreach ($config as $name => $config) { + if (isset($config['resource'])) { + $resource = $config['resource']; + $prefix = isset($config['prefix']) ? $config['prefix'] : null; + $namePrefix = isset($config['name_prefix']) ? $config['name_prefix'] : null; + $parent = isset($config['parent']) ? $config['parent'] : null; + $type = isset($config['type']) ? $config['type'] : null; + $requirements = isset($config['requirements']) ? $config['requirements'] : array(); + $defaults = isset($config['defaults']) ? $config['defaults'] : array(); + $options = isset($config['options']) ? $config['options'] : array(); + $currentDir = dirname($path); + + $parents = array(); + if (!empty($parent)) { + if (!isset($this->collectionParents[$parent])) { + throw new \InvalidArgumentException(sprintf('Cannot find parent resource with name %s', $parent)); + } + + $parents = $this->collectionParents[$parent]; + } + + $imported = $this->processor->importResource($this, $resource, $parents, $prefix, $namePrefix, $type, $currentDir); + + if ($imported instanceof RestRouteCollection) { + $parents[] = ($prefix ? $prefix.'/' : '').$imported->getSingularName(); + $prefix = null; + $namePrefix = null; + + $this->collectionParents[$name] = $parents; + } + + $imported->addRequirements($requirements); + $imported->addDefaults($defaults); + $imported->addOptions($options); + + $imported->addPrefix($prefix); + + // Add name prefix from parent config files + $imported = $this->addParentNamePrefix($imported, $namePrefix); + + $collection->addCollection($imported); + } elseif (isset($config['pattern']) || isset($config['path'])) { + // the YamlFileLoader of the Routing component only checks for + // the path option + if (!isset($config['path'])) { + $config['path'] = $config['pattern']; + } + + if ($this->includeFormat) { + // append format placeholder if not present + if (false === strpos($config['path'], '{_format}')) { + $config['path'] .= '.{_format}'; + } + + // set format requirement if configured globally + if (!isset($config['requirements']['_format']) && !empty($this->formats)) { + $config['requirements']['_format'] = implode('|', array_keys($this->formats)); + } + } + + // set the default format if configured + if (null !== $this->defaultFormat) { + $config['defaults']['_format'] = $this->defaultFormat; + } + + $this->parseRoute($collection, $name, $config, $path); + } else { + throw new \InvalidArgumentException(sprintf('Unable to parse the "%s" route.', $name)); + } + } + + return $collection; + } + + /** + * {@inheritdoc} + */ + public function supports($resource, $type = null) + { + return is_string($resource) && + 'yml' === pathinfo($resource, PATHINFO_EXTENSION) && + 'rest' === $type; + } + + /** + * Adds a name prefix to the route name of all collection routes. + * + * @param RouteCollection $collection Route collection + * @param array $namePrefix NamePrefix to add in each route name of the route collection + * + * @return RouteCollection + */ + public function addParentNamePrefix(RouteCollection $collection, $namePrefix) + { + if (!isset($namePrefix) || ($namePrefix = trim($namePrefix)) === '') { + return $collection; + } + + $iterator = $collection->getIterator(); + + foreach ($iterator as $key1 => $route1) { + $collection->add($namePrefix.$key1, $route1); + $collection->remove($key1); + } + + return $collection; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/RestRouteCollection.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/RestRouteCollection.php new file mode 100644 index 0000000..50a9426 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Routing/RestRouteCollection.php @@ -0,0 +1,90 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Routing; + +use Symfony\Component\Routing\RouteCollection; + +/** + * Restful route collection. + * + * @author Konstantin Kudryashov + */ +class RestRouteCollection extends RouteCollection +{ + private $singularName; + + /** + * Sets collection singular name. + * + * @param string $name Singular name + */ + public function setSingularName($name) + { + $this->singularName = $name; + } + + /** + * Returns collection singular name. + * + * @return string + */ + public function getSingularName() + { + return $this->singularName; + } + + /** + * Adds controller prefix to all collection routes. + * + * @param string $prefix + */ + public function prependRouteControllersWithPrefix($prefix) + { + foreach (parent::all() as $route) { + $route->setDefault('_controller', $prefix.$route->getDefault('_controller')); + } + } + + /** + * Sets default format of routes. + * + * @param string $format + */ + public function setDefaultFormat($format) + { + foreach (parent::all() as $route) { + // Set default format only if not set already (could be defined in annotation) + if (!$route->getDefault('_format')) { + $route->setDefault('_format', $format); + } + } + } + + /** + * Returns routes sorted by custom HTTP methods first. + * + * @return array + */ + public function all() + { + $routes = parent::all(); + $customMethodRoutes = array(); + foreach ($routes as $routeName => $route) { + if (!preg_match('/(_|^)(get|post|put|delete|patch|head|options)_/', $routeName)) { + $customMethodRoutes[$routeName] = $route; + unset($routes[$routeName]); + } + } + + return $customMethodRoutes + $routes; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperNormalizer.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperNormalizer.php new file mode 100644 index 0000000..7559ffe --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperNormalizer.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Serializer; + +use FOS\RestBundle\Util\ExceptionWrapper; +use Symfony\Component\Form\FormError; +use Symfony\Component\Form\FormInterface; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; +use Symfony\Component\Translation\TranslatorInterface; + +/** + * Normalizer for ExceptionWrapper instances. + * + * @author Johannes M. Schmitt + * @author Florian Voutzinos + */ +class ExceptionWrapperNormalizer implements NormalizerInterface +{ + private $translator; + + public function __construct(TranslatorInterface $translator) + { + $this->translator = $translator; + } + + /** + * {@inheritdoc} + */ + public function normalize($object, $format = null, array $context = array()) + { + return array( + 'code' => $object->getCode(), + 'message' => $object->getMessage(), + 'errors' => $object->getErrors() ? $this->convertFormToArray($object->getErrors()) : null, + ); + } + + /** + * {@inheritdoc} + */ + public function supportsNormalization($data, $format = null) + { + return $data instanceof ExceptionWrapper; + } + + /** + * This code has been taken from JMSSerializer. + */ + private function convertFormToArray(FormInterface $data) + { + $form = $errors = array(); + + foreach ($data->getErrors() as $error) { + $errors[] = $this->getErrorMessage($error); + } + + if ($errors) { + $form['errors'] = $errors; + } + + $children = array(); + + foreach ($data->all() as $child) { + if ($child instanceof FormInterface) { + $children[$child->getName()] = $this->convertFormToArray($child); + } + } + + if ($children) { + $form['children'] = $children; + } + + return $form; + } + + private function getErrorMessage(FormError $error) + { + if (null !== $error->getMessagePluralization()) { + return $this->translator->transChoice($error->getMessageTemplate(), $error->getMessagePluralization(), $error->getMessageParameters(), 'validators'); + } + + return $this->translator->trans($error->getMessageTemplate(), $error->getMessageParameters(), 'validators'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperSerializeHandler.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperSerializeHandler.php new file mode 100644 index 0000000..e8497fe --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Serializer/ExceptionWrapperSerializeHandler.php @@ -0,0 +1,108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Serializer; + +use FOS\RestBundle\Util\ExceptionWrapper; +use JMS\Serializer\Context; +use JMS\Serializer\GraphNavigator; +use JMS\Serializer\Handler\SubscribingHandlerInterface; +use JMS\Serializer\JsonSerializationVisitor; +use JMS\Serializer\XmlSerializationVisitor; + +class ExceptionWrapperSerializeHandler implements SubscribingHandlerInterface +{ + /** + * @return array + */ + public static function getSubscribingMethods() + { + return array( + array( + 'direction' => GraphNavigator::DIRECTION_SERIALIZATION, + 'format' => 'json', + 'type' => 'FOS\\RestBundle\\Util\\ExceptionWrapper', + 'method' => 'serializeToJson', + ), + array( + 'direction' => GraphNavigator::DIRECTION_SERIALIZATION, + 'format' => 'xml', + 'type' => 'FOS\\RestBundle\\Util\\ExceptionWrapper', + 'method' => 'serializeToXml', + ), + ); + } + + /** + * @param JsonSerializationVisitor $visitor + * @param ExceptionWrapper $wrapper + * @param array $type + * @param Context $context + * + * @return array + */ + public function serializeToJson( + JsonSerializationVisitor $visitor, + ExceptionWrapper $wrapper, + array $type, + Context $context + ) { + $data = $this->convertToArray($wrapper); + + return $visitor->visitArray($data, $type, $context); + } + + /** + * @param XmlSerializationVisitor $visitor + * @param ExceptionWrapper $wrapper + * @param array $type + * @param Context $context + */ + public function serializeToXml( + XmlSerializationVisitor $visitor, + ExceptionWrapper $wrapper, + array $type, + Context $context + ) { + $data = $this->convertToArray($wrapper); + + if (null === $visitor->document) { + $visitor->document = $visitor->createDocument(null, null, true); + } + + foreach ($data as $key => $value) { + $entryNode = $visitor->document->createElement($key); + $visitor->getCurrentNode()->appendChild($entryNode); + $visitor->setCurrentNode($entryNode); + + $node = $context->getNavigator()->accept($value, null, $context); + if (null !== $node) { + $visitor->getCurrentNode()->appendChild($node); + } + + $visitor->revertCurrentNode(); + } + } + + /** + * @param ExceptionWrapper $exceptionWrapper + * + * @return array + */ + protected function convertToArray(ExceptionWrapper $exceptionWrapper) + { + return array( + 'code' => $exceptionWrapper->getCode(), + 'message' => $exceptionWrapper->getMessage(), + 'errors' => $exceptionWrapper->getErrors(), + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/QueryParamTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/QueryParamTest.php new file mode 100644 index 0000000..19980f9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/QueryParamTest.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Controller\Annotations; + +use FOS\RestBundle\Controller\Annotations\QueryParam; + +/** + * RequestParamTest. + * + * @author Eduardo Oliveira + */ +class QueryParamTest extends \PHPUnit_Framework_TestCase +{ + public function testDefaultIsNull() + { + $queryParam = new QueryParam(); + $this->assertNull($queryParam->default, 'Expected QueryParam default property to be null'); + } + + public function testStrictIsTrue() + { + $queryParam = new QueryParam(); + $this->assertFalse($queryParam->strict, 'Expected QueryParam strict property to be false'); + } + + public function testIncompatiblesIsEmptyArray() + { + $queryParam = new QueryParam(); + $this->assertInternalType( + 'array', + $queryParam->incompatibles, + 'Expected QueryParam incompatibles property to be an array' + ); + $this->assertEmpty( + $queryParam->incompatibles, + 'Expected QueryParam incompatibles property to be empty' + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/RequestParamTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/RequestParamTest.php new file mode 100644 index 0000000..aca5e9f --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Controller/Annotations/RequestParamTest.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Controller\Annotations; + +use FOS\RestBundle\Controller\Annotations\RequestParam; + +/** + * RequestParamTest. + * + * @author Eduardo Oliveira + */ +class RequestParamTest extends \PHPUnit_Framework_TestCase +{ + public function testDefaultIsNull() + { + $requestParam = new RequestParam(); + $this->assertNull($requestParam->default, 'Expected RequestParam default property to be null'); + } + + public function testStrictIsTrue() + { + $requestParam = new RequestParam(); + $this->assertTrue($requestParam->strict, 'Expected RequestParam strict property to be true'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Decoder/JsonToFormDecoderTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Decoder/JsonToFormDecoderTest.php new file mode 100644 index 0000000..4a7cda2 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Decoder/JsonToFormDecoderTest.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Decoder; + +use FOS\RestBundle\Decoder\JsonToFormDecoder; + +/** + * Tests the form-like encoder. + * + * @author Kévin Dunglas + */ +class JsonToFormDecoderTest extends \PHPUnit_Framework_TestCase +{ + public function testDecodeWithRemovingFalseData() + { + $data = array( + 'arrayKey' => array( + 'falseKey' => false, + 'stringKey' => 'foo', + ), + 'falseKey' => false, + 'trueKey' => true, + 'intKey' => 69, + 'floatKey' => 3.14, + 'stringKey' => 'bar', + ); + $decoder = new JsonToFormDecoder(); + $decoded = $decoder->decode(json_encode($data)); + + $this->assertTrue(is_array($decoded)); + $this->assertTrue(is_array($decoded['arrayKey'])); + $this->assertNull($decoded['arrayKey']['falseKey']); + $this->assertEquals('foo', $decoded['arrayKey']['stringKey']); + $this->assertNull($decoded['falseKey']); + $this->assertEquals('1', $decoded['trueKey']); + $this->assertEquals('69', $decoded['intKey']); + $this->assertEquals('3.14', $decoded['floatKey']); + $this->assertEquals('bar', $decoded['stringKey']); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/ConfigurationCheckPassTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/ConfigurationCheckPassTest.php new file mode 100644 index 0000000..f7bbf47 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/ConfigurationCheckPassTest.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\DependencyInjection\Compiler; + +use FOS\RestBundle\DependencyInjection\Compiler\ConfigurationCheckPass; + +/** + * ConfigurationCheckPass test. + * + * @author Eriksen Costa + */ +class ConfigurationCheckPassTest extends \PHPUnit_Framework_TestCase +{ + /** + * @expectedException \RuntimeException + */ + public function testShouldThrowRuntimeExceptionWhenFOSRestBundleAnnotations() + { + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('has')) + ->getMock(); + $container->expects($this->at(0)) + ->method('has') + ->with($this->equalTo('sensio_framework_extra.view.listener')) + ->will($this->returnValue(true)); + + $container->expects($this->at(1)) + ->method('has') + ->with($this->equalTo('fos_rest.view_response_listener')) + ->will($this->returnValue(true)); + + $compiler = new ConfigurationCheckPass(); + $compiler->process($container); + } + + public function testShouldThrowRuntimeExceptionWhenBodyConverterIsEnabledButParamConvertersAreNotEnabled() + { + $this->setExpectedException( + 'RuntimeException', + 'You need to enable the parameter converter listeners in SensioFrameworkExtraBundle when using the FOSRestBundle RequestBodyParamConverter' + ); + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('has')) + ->getMock(); + $container->expects($this->at(1)) + ->method('has') + ->with($this->equalTo('fos_rest.converter.request_body')) + ->will($this->returnValue(true)); + + $container->expects($this->at(2)) + ->method('has') + ->with($this->equalTo('sensio_framework_extra.converter.listener')) + ->will($this->returnValue(false)); + + $compiler = new ConfigurationCheckPass(); + $compiler->process($container); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/FormatListenerRulesPassTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/FormatListenerRulesPassTest.php new file mode 100644 index 0000000..1cfe305 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/FormatListenerRulesPassTest.php @@ -0,0 +1,112 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\DependencyInjection\Compiler; + +use FOS\RestBundle\DependencyInjection\Compiler\FormatListenerRulesPass; + +/** + * @author Eduardo Gulias Davis + */ +class FormatListenerRulesPassTest extends \PHPUnit_Framework_TestCase +{ + public function testRulesAreAddedWhenFormatListenerAndProfilerToolbarAreEnabled() + { + $definition = $this->getMock('Symfony\Component\DependencyInjection\Definition', array('addMethod')); + + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('hasDefinition', 'getDefinition', 'hasParameter', 'getParameter')) + ->getMock(); + + $container->expects($this->exactly(3)) + ->method('hasDefinition') + ->will($this->returnValue(true)); + + $container->expects($this->exactly(1)) + ->method('hasParameter') + ->with('web_profiler.debug_toolbar.mode') + ->will($this->returnValue(true)); + + $container->expects($this->exactly(2)) + ->method('getParameter') + ->will($this->onConsecutiveCalls( + 2, + array( + array( + 'host' => null, + 'methods' => null, + 'path' => '^/', + 'priorities' => array('html', 'json'), + 'fallback_format' => 'html', + 'exception_fallback_format' => 'html', + 'prefer_extension' => true, + ), + )) + ); + + $container->expects($this->exactly(4)) + ->method('getDefinition') + ->with($this->logicalOr( + $this->equalTo('fos_rest.format_negotiator'), + $this->equalTo('fos_rest.exception_format_negotiator') + )) + ->will($this->returnValue($definition)); + + $compiler = new FormatListenerRulesPass(); + $compiler->process($container); + } + + public function testNoRulesAreAddedWhenProfilerToolbarAreDisabled() + { + $definition = $this->getMock('Symfony\Component\DependencyInjection\Definition', array('addMethod')); + + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('hasDefinition', 'getDefinition', 'hasParameter', 'getParameter')) + ->getMock(); + + $container->expects($this->exactly(2)) + ->method('hasDefinition') + ->will($this->returnValue(true)); + + $container->expects($this->exactly(1)) + ->method('hasParameter') + ->with('web_profiler.debug_toolbar.mode') + ->will($this->returnValue(false)); + + $container->expects($this->once()) + ->method('getParameter') + ->with('fos_rest.format_listener.rules') + ->will($this->returnValue( + array( + array( + 'host' => null, + 'methods' => null, + 'path' => '^/', + 'priorities' => array('html', 'json'), + 'fallback_format' => 'html', + 'exception_fallback_format' => 'html', + 'prefer_extension' => true, + ), + )) + ); + + $container->expects($this->exactly(2)) + ->method('getDefinition') + ->with($this->logicalOr( + $this->equalTo('fos_rest.format_negotiator'), + $this->equalTo('fos_rest.exception_format_negotiator') + )) + ->will($this->returnValue($definition)); + + $compiler = new FormatListenerRulesPass(); + $compiler->process($container); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/SerializerConfigurationPassTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/SerializerConfigurationPassTest.php new file mode 100644 index 0000000..c69b28b --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/Compiler/SerializerConfigurationPassTest.php @@ -0,0 +1,105 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\DependencyInjection\Compiler; + +use FOS\RestBundle\DependencyInjection\Compiler\SerializerConfigurationPass; + +/** + * SerializerConfigurationPassTest test. + */ +class SerializerConfigurationPassTest extends \PHPUnit_Framework_TestCase +{ + public function testShouldDoNothingIfSerializerIsFound() + { + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('has')) + ->getMock(); + + $container->expects($this->once()) + ->method('has') + ->with($this->equalTo('fos_rest.serializer')) + ->will($this->returnValue(true)); + + $container->expects($this->never()) + ->method('setAlias'); + + $compiler = new SerializerConfigurationPass(); + $compiler->process($container); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testShouldThrowInvalidArgumentExceptionWhenNoSerializerIsFound() + { + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('has')) + ->getMock(); + + $container->method('has') + ->will($this->returnValueMap(array( + array('fos_rest.serializer', false), + array('jms_serializer.serializer', false), + array('serializer', false), ))); + + $compiler = new SerializerConfigurationPass(); + $compiler->process($container); + } + + public function testShouldConfigureJMSSerializer() + { + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('has', 'setAlias', 'removeDefinition')) + ->getMock(); + + $container->method('has') + ->will($this->returnValueMap(array( + array('fos_rest.serializer', false), + array('jms_serializer.serializer', true), + array('serializer', true), + ))); + + $container->expects($this->exactly(2)) + ->method('setAlias') + ->withConsecutive( + array($this->equalTo('fos_rest.serializer'), $this->equalTo('jms_serializer.serializer')), + array($this->equalTo('fos_rest.serializer'), $this->equalTo('serializer')) + ); + + $compiler = new SerializerConfigurationPass(); + $compiler->process($container); + } + + public function testShouldConfigureCoreSerializer() + { + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('has', 'setAlias', 'removeDefinition')) + ->getMock(); + + $container->method('has') + ->will($this->returnValueMap(array( + array('fos_rest.serializer', false), + array('jms_serializer.serializer', false), + array('serializer', true), ))); + + $container->expects($this->once()) + ->method('setAlias') + ->with($this->equalTo('fos_rest.serializer'), $this->equalTo('serializer')); + + $container->expects($this->once()) + ->method('removeDefinition') + ->with('fos_rest.serializer.exception_wrapper_serialize_handler'); + + $compiler = new SerializerConfigurationPass(); + $compiler->process($container); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/FOSRestExtensionTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/FOSRestExtensionTest.php new file mode 100644 index 0000000..28eb9ed --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/DependencyInjection/FOSRestExtensionTest.php @@ -0,0 +1,687 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\DependencyInjection; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Definition; +use Symfony\Component\DependencyInjection\Reference; +use FOS\RestBundle\DependencyInjection\FOSRestExtension; + +/** + * FOSRestExtension test. + * + * @author Bulat Shakirzyanov + * @author Konstantin Kudryashov + */ +class FOSRestExtensionTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ContainerBuilder + */ + private $container; + + /** + * @var FOSRestExtension + */ + private $extension; + + /** + * @var bool + */ + private $includeFormat; + + /** + * @var array + */ + private $formats; + + /** + * @var string + */ + private $defaultFormat; + + public function setUp() + { + $this->container = new ContainerBuilder(); + $this->container->setParameter('kernel.bundles', array('JMSSerializerBundle' => true)); + $this->extension = new FOSRestExtension(); + $this->includeFormat = true; + $this->formats = array( + 'json' => false, + 'xml' => false, + 'html' => true, + ); + $this->defaultFormat = null; + } + + public function tearDown() + { + unset($this->container, $this->extension); + } + + public function testDisableBodyListener() + { + $config = array( + 'fos_rest' => array('body_listener' => false), + ); + $this->extension->load($config, $this->container); + + $this->assertFalse($this->container->hasDefinition('fos_rest.body_listener')); + } + + public function testLoadBodyListenerWithDefaults() + { + $this->extension->load(array(), $this->container); + $decoders = array( + 'json' => 'fos_rest.decoder.json', + 'xml' => 'fos_rest.decoder.xml', + ); + + $this->assertTrue($this->container->hasDefinition('fos_rest.body_listener')); + $this->assertParameter($decoders, 'fos_rest.decoders'); + $this->assertParameter(false, 'fos_rest.throw_exception_on_unsupported_content_type'); + $this->assertCount(2, $this->container->getDefinition('fos_rest.body_listener')->getArguments()); + } + + public function testLoadBodyListenerWithNormalizerString() + { + $config = array( + 'fos_rest' => array('body_listener' => array( + 'array_normalizer' => 'fos_rest.normalizer.camel_keys', + )), + ); + + $this->extension->load($config, $this->container); + $normalizerArgument = $this->container->getDefinition('fos_rest.body_listener')->getArgument(2); + + $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $normalizerArgument); + $this->assertEquals('fos_rest.normalizer.camel_keys', (string) $normalizerArgument); + } + + public function testLoadBodyListenerWithNormalizerArray() + { + $config = array( + 'fos_rest' => array('body_listener' => array( + 'array_normalizer' => array( + 'service' => 'fos_rest.normalizer.camel_keys', + ), + )), + ); + + $this->extension->load($config, $this->container); + $bodyListener = $this->container->getDefinition('fos_rest.body_listener'); + $normalizerArgument = $bodyListener->getArgument(2); + $normalizeForms = $bodyListener->getArgument(3); + + $this->assertCount(4, $bodyListener->getArguments()); + $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $normalizerArgument); + $this->assertEquals('fos_rest.normalizer.camel_keys', (string) $normalizerArgument); + $this->assertEquals(false, $normalizeForms); + } + + public function testLoadBodyListenerWithNormalizerArrayAndForms() + { + $config = array( + 'fos_rest' => array('body_listener' => array( + 'array_normalizer' => array( + 'service' => 'fos_rest.normalizer.camel_keys', + 'forms' => true, + ), + )), + ); + + $this->extension->load($config, $this->container); + $bodyListener = $this->container->getDefinition('fos_rest.body_listener'); + $normalizerArgument = $bodyListener->getArgument(2); + $normalizeForms = $bodyListener->getArgument(3); + + $this->assertCount(4, $bodyListener->getArguments()); + $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $normalizerArgument); + $this->assertEquals('fos_rest.normalizer.camel_keys', (string) $normalizerArgument); + $this->assertEquals(true, $normalizeForms); + } + + public function testDisableFormatListener() + { + $config = array( + 'fos_rest' => array('format_listener' => false), + ); + $this->extension->load($config, $this->container); + + $this->assertFalse($this->container->hasDefinition('fos_rest.format_listener')); + } + + public function testLoadFormatListenerWithDefaults() + { + $this->extension->load(array(), $this->container); + + $this->assertFalse($this->container->hasDefinition('fos_rest.format_listener')); + } + + public function testLoadFormatListenerWithSingleRule() + { + $config = array( + 'fos_rest' => array('format_listener' => array( + 'rules' => array('path' => '/'), + )), + ); + $this->extension->load($config, $this->container); + + $this->assertTrue($this->container->hasDefinition('fos_rest.format_listener')); + } + + public function testLoadParamFetcherListener() + { + $config = array( + 'fos_rest' => array('param_fetcher_listener' => true), + ); + $this->extension->load($config, $this->container); + + $this->assertTrue($this->container->hasDefinition('fos_rest.param_fetcher_listener')); + $this->assertFalse($this->container->getParameter('fos_rest.param_fetcher_listener.set_params_as_attributes')); + } + + public function testLoadParamFetcherListenerForce() + { + $config = array( + 'fos_rest' => array('param_fetcher_listener' => 'force'), + ); + $this->extension->load($config, $this->container); + + $this->assertTrue($this->container->hasDefinition('fos_rest.param_fetcher_listener')); + $this->assertTrue($this->container->getParameter('fos_rest.param_fetcher_listener.set_params_as_attributes')); + } + + public function testLoadFormatListenerWithMultipleRule() + { + $config = array( + 'fos_rest' => array('format_listener' => array( + 'rules' => array( + array('path' => '/foo'), + array('path' => '/'), + ), + )), + ); + $this->extension->load($config, $this->container); + + $this->assertTrue($this->container->hasDefinition('fos_rest.format_listener')); + } + + public function testLoadFormatListenerMediaType() + { + $config = array( + 'fos_rest' => array('format_listener' => array( + 'rules' => array('path' => '/'), + 'media_type' => true, + )), + ); + $this->extension->load($config, $this->container); + + $this->assertTrue($this->container->hasDefinition('fos_rest.version_listener')); + } + + /** + * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + */ + public function testLoadFormatListenerMediaTypeNoRules() + { + $config = array( + 'fos_rest' => array('format_listener' => array( + 'media_type' => true, + )), + ); + $this->extension->load($config, $this->container); + } + + public function testLoadServicesWithDefaults() + { + $this->extension->load(array(), $this->container); + + $this->assertAlias('fos_rest.view_handler.default', 'fos_rest.view_handler'); + $this->assertAlias('fos_rest.view.exception_wrapper_handler', 'fos_rest.exception_handler'); + } + + public function testLoadFormatsWithDefaults() + { + $this->extension->load(array(), $this->container); + $formats = array( + 'json' => false, + 'xml' => false, + 'html' => true, + ); + + $this->assertEquals($formats, $this->container->getParameter('fos_rest.formats')); + } + + public function testDisableViewResponseListener() + { + $config = array( + 'fos_rest' => array('view' => array('view_response_listener' => false)), + ); + $this->extension->load($config, $this->container); + + $this->assertFalse($this->container->hasDefinition('fos_rest.view_response_listener')); + } + + public function testLoadViewResponseListener() + { + $config = array( + 'fos_rest' => array('view' => array('view_response_listener' => true)), + ); + $this->extension->load($config, $this->container); + + $this->assertTrue($this->container->hasDefinition('fos_rest.view_response_listener')); + $this->assertFalse($this->container->getParameter('fos_rest.view_response_listener.force_view')); + } + + public function testLoadViewResponseListenerForce() + { + $config = array( + 'fos_rest' => array('view' => array('view_response_listener' => 'force')), + ); + $this->extension->load($config, $this->container); + + $this->assertTrue($this->container->hasDefinition('fos_rest.view_response_listener')); + $this->assertTrue($this->container->getParameter('fos_rest.view_response_listener.force_view')); + } + + public function testForceEmptyContentDefault() + { + $this->extension->load(array(), $this->container); + $this->assertEquals(204, $this->container->getParameter('fos_rest.empty_content')); + } + + public function testForceEmptyContentIs200() + { + $config = array('fos_rest' => array('view' => array('empty_content' => 200))); + $this->extension->load($config, $this->container); + $this->assertEquals(200, $this->container->getParameter('fos_rest.empty_content')); + } + + public function testViewSerializeNullDefault() + { + $this->extension->load(array(), $this->container); + $this->assertFalse($this->container->getParameter('fos_rest.serialize_null')); + } + + public function testViewSerializeNullIsTrue() + { + $config = array('fos_rest' => array('view' => array('serialize_null' => true))); + $this->extension->load($config, $this->container); + $this->assertTrue($this->container->getParameter('fos_rest.serialize_null')); + } + + public function testValidatorAliasWhenEnabled() + { + $config = array('fos_rest' => array('body_converter' => array('validate' => true))); + $this->extension->load($config, $this->container); + $this->assertAlias('validator', 'fos_rest.validator'); + } + + public function testValidatorAliasWhenDisabled() + { + $config = array('fos_rest' => array('body_converter' => array('validate' => false))); + $this->extension->load($config, $this->container); + $this->assertFalse($this->container->has('fos_rest.validator')); + } + + /** + * Test that extension loads properly. + */ + public function testConfigLoad() + { + $controllerLoaderDefinitionName = 'fos_rest.routing.loader.controller'; + $controllerLoaderClassParameter = 'fos_rest.routing.loader.controller.class'; + $controllerLoaderClass = 'FOS\RestBundle\Routing\Loader\RestRouteLoader'; + + $yamlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.yaml_collection'; + $yamlCollectionLoaderClassParameter = 'fos_rest.routing.loader.yaml_collection.class'; + $yamlCollectionLoaderClass = 'FOS\RestBundle\Routing\Loader\RestYamlCollectionLoader'; + + $xmlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.xml_collection'; + $xmlCollectionLoaderClassParameter = 'fos_rest.routing.loader.xml_collection.class'; + $xmlCollectionLoaderClass = 'FOS\RestBundle\Routing\Loader\RestXmlCollectionLoader'; + + $this->extension->load(array(), $this->container); + + $this->assertEquals($controllerLoaderClass, $this->container->getParameter($controllerLoaderClassParameter)); + $this->assertTrue($this->container->hasDefinition($controllerLoaderDefinitionName)); + $this->assertValidRestRouteLoader( + $this->container->getDefinition($controllerLoaderDefinitionName), + $controllerLoaderClassParameter + ); + + $this->assertEquals($yamlCollectionLoaderClass, $this->container->getParameter($yamlCollectionLoaderClassParameter)); + $this->assertTrue($this->container->hasDefinition($yamlCollectionLoaderDefinitionName)); + $this->assertValidRestFileLoader( + $this->container->getDefinition($yamlCollectionLoaderDefinitionName), + $yamlCollectionLoaderClassParameter, + $this->includeFormat, + $this->formats, + $this->defaultFormat + ); + + $this->assertEquals($xmlCollectionLoaderClass, $this->container->getParameter($xmlCollectionLoaderClassParameter)); + $this->assertTrue($this->container->hasDefinition($xmlCollectionLoaderDefinitionName)); + $this->assertValidRestFileLoader( + $this->container->getDefinition($xmlCollectionLoaderDefinitionName), + $xmlCollectionLoaderClassParameter, + $this->includeFormat, + $this->formats, + $this->defaultFormat + ); + } + + public function testIncludeFormatDisabled() + { + $this->extension->load( + array( + 'fos_rest' => array( + 'routing_loader' => array( + 'include_format' => false, + ), + ), + ), + $this->container + ); + + $yamlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.yaml_collection'; + $yamlCollectionLoaderClassParameter = 'fos_rest.routing.loader.yaml_collection.class'; + $this->assertValidRestFileLoader( + $this->container->getDefinition($yamlCollectionLoaderDefinitionName), + $yamlCollectionLoaderClassParameter, + false, + $this->formats, + $this->defaultFormat + ); + + $xmlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.xml_collection'; + $xmlCollectionLoaderClassParameter = 'fos_rest.routing.loader.xml_collection.class'; + $this->assertValidRestFileLoader( + $this->container->getDefinition($xmlCollectionLoaderDefinitionName), + $xmlCollectionLoaderClassParameter, + false, + $this->formats, + $this->defaultFormat + ); + } + + public function testDefaultFormat() + { + $this->extension->load( + array( + 'fos_rest' => array( + 'routing_loader' => array( + 'default_format' => 'xml', + ), + ), + ), + $this->container + ); + + $yamlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.yaml_collection'; + $yamlCollectionLoaderClassParameter = 'fos_rest.routing.loader.yaml_collection.class'; + $this->assertValidRestFileLoader( + $this->container->getDefinition($yamlCollectionLoaderDefinitionName), + $yamlCollectionLoaderClassParameter, + $this->includeFormat, + $this->formats, + 'xml' + ); + + $xmlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.xml_collection'; + $xmlCollectionLoaderClassParameter = 'fos_rest.routing.loader.xml_collection.class'; + $this->assertValidRestFileLoader( + $this->container->getDefinition($xmlCollectionLoaderDefinitionName), + $xmlCollectionLoaderClassParameter, + $this->includeFormat, + $this->formats, + 'xml' + ); + } + + public function testFormats() + { + $this->extension->load( + array( + 'fos_rest' => array( + 'view' => array( + 'formats' => array( + 'json' => false, + 'xml' => true, + ), + ), + ), + ), + $this->container + ); + + $yamlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.yaml_collection'; + $yamlCollectionLoaderClassParameter = 'fos_rest.routing.loader.yaml_collection.class'; + $this->assertValidRestFileLoader( + $this->container->getDefinition($yamlCollectionLoaderDefinitionName), + $yamlCollectionLoaderClassParameter, + $this->includeFormat, + array( + 'xml' => false, + 'html' => true, + ), + $this->defaultFormat + ); + + $xmlCollectionLoaderDefinitionName = 'fos_rest.routing.loader.xml_collection'; + $xmlCollectionLoaderClassParameter = 'fos_rest.routing.loader.xml_collection.class'; + $this->assertValidRestFileLoader( + $this->container->getDefinition($xmlCollectionLoaderDefinitionName), + $xmlCollectionLoaderClassParameter, + $this->includeFormat, + array( + 'xml' => false, + 'html' => true, + ), + $this->defaultFormat + ); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testLoadBadClassThrowsException() + { + $this->extension->load(array( + 'fos_rest' => array( + 'exception' => array( + 'messages' => array( + 'UnknownException' => true, + ), + ), + ), + ), $this->container); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Could not load class 'UnknownException' or the class does not extend from '\Exception' + */ + public function testLoadBadMessagesClassThrowsException() + { + $this->extension->load(array( + 'fos_rest' => array( + 'exception' => array( + 'codes' => array( + 'UnknownException' => 404, + ), + ), + ), + ), $this->container); + } + + public function testLoadOkMessagesClass() + { + $this->extension->load(array( + 'fos_rest' => array( + 'exception' => array( + 'codes' => array( + 'Exception' => 404, + ), + ), + ), + ), $this->container); + $this->assertFalse($this->container->hasDefinition('fos_rest.exception.codes')); + } + + /** + * @dataProvider getLoadBadCodeValueThrowsExceptionData + * + * @expectedException Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + * @expectedExceptionMessage Invalid HTTP code in fos_rest.exception.codes + */ + public function testLoadBadCodeValueThrowsException($value) + { + $this->extension->load(array( + 'fos_rest' => array( + 'exception' => array( + 'codes' => array( + 'Exception' => $value, + ), + ), + ), + ), $this->container); + } + + public function getLoadBadCodeValueThrowsExceptionData() + { + $data = array( + null, + 'HTTP_NOT_EXISTS', + 'some random string', + true, + ); + + return array_map(function ($i) { + return array($i); + }, $data); + } + + /** + * Assert that loader definition described properly. + * + * @param Definition $loader loader definition + * @param string $loaderClassParameter loader class parameter name + */ + private function assertValidRestRouteLoader(Definition $loader, $loaderClassParameter) + { + $arguments = $loader->getArguments(); + + $this->assertEquals('%'.$loaderClassParameter.'%', $loader->getClass()); + $this->assertEquals(5, count($arguments)); + $this->assertEquals('service_container', (string) $arguments[0]); + $this->assertEquals('file_locator', (string) $arguments[1]); + $this->assertEquals('controller_name_converter', (string) $arguments[2]); + $this->assertEquals('fos_rest.routing.loader.reader.controller', (string) $arguments[3]); + $this->assertEquals('%fos_rest.routing.loader.default_format%', (string) $arguments[4]); + $this->assertArrayHasKey('routing.loader', $loader->getTags()); + } + + /** + * Assert that loader definition described properly. + * + * @param Definition $loader loader definition + * @param string $loaderClassParameter loader class parameter name + * @param bool $includeFormat whether or not the requested view format must be included in the route path + * @param string[] $formats supported view formats + * @param string $defaultFormat default view format + */ + private function assertValidRestFileLoader( + Definition $loader, + $loaderClassParameter, + $includeFormat, + array $formats, + $defaultFormat + ) { + $locatorRef = new Reference('file_locator'); + $processorRef = new Reference('fos_rest.routing.loader.processor'); + $arguments = $loader->getArguments(); + + $this->assertEquals('%'.$loaderClassParameter.'%', $loader->getClass()); + $this->assertEquals(5, count($arguments)); + $this->assertEquals($locatorRef, $arguments[0]); + $this->assertEquals($processorRef, $arguments[1]); + $this->assertEquals( + $includeFormat, + $this->container->getParameter( + strtr($arguments[2], array('%' => '')) + ) + ); + $this->assertEquals( + $formats, + $this->container->getParameter( + strtr($arguments[3], array('%' => '')) + ) + ); + $this->assertEquals( + $defaultFormat, + $this->container->getParameter( + strtr($arguments[4], array('%' => '')) + ) + ); + $this->assertArrayHasKey('routing.loader', $loader->getTags()); + } + + private function assertAlias($value, $key) + { + $this->assertEquals($value, (string) $this->container->getAlias($key), sprintf('%s alias is correct', $key)); + } + + private function assertParameter($value, $key) + { + $this->assertEquals($value, $this->container->getParameter($key), sprintf('%s parameter is correct', $key)); + } + + public function testCheckViewHandlerWithJsonp() + { + $this->extension->load(array('fos_rest' => array('view' => array('jsonp_handler' => null))), $this->container); + + $this->assertTrue($this->container->has('fos_rest.view_handler')); + + $viewHandler = $this->container->getDefinition('fos_rest.view_handler'); + $this->assertInstanceOf('Symfony\Component\DependencyInjection\DefinitionDecorator', $viewHandler); + } + + public function testCheckExceptionWrapperHandler() + { + $this->extension->load(array(), $this->container); + + $this->assertTrue($this->container->has('fos_rest.view.exception_wrapper_handler')); + + $exceptionWrapperHandler = $this->container->getDefinition('fos_rest.view.exception_wrapper_handler'); + $this->assertEquals('%fos_rest.view.exception_wrapper_handler%', $exceptionWrapperHandler->getClass()); + } + + public function testSerializerExceptionNormalizer() + { + $this->extension->load(array('fos_rest' => array('view' => true)), $this->container); + + $this->assertTrue($this->container->has('fos_rest.serializer.exception_wrapper_normalizer')); + + $definition = $this->container->getDefinition('fos_rest.serializer.exception_wrapper_normalizer'); + $this->assertEquals('FOS\RestBundle\Serializer\ExceptionWrapperNormalizer', $definition->getClass()); + } + + /** + * @expectedException \LogicException + */ + public function testExceptionThrownIfCallbackFilterIsUsed() + { + $this->extension->load(array('fos_rest' => array('view' => array('jsonp_handler' => array('callback_filter' => 'foo')))), $this->container); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/AccessDeniedListenerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/AccessDeniedListenerTest.php new file mode 100644 index 0000000..ef20fa5 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/AccessDeniedListenerTest.php @@ -0,0 +1,192 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\EventListener; + +use FOS\RestBundle\EventListener\AccessDeniedListener; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Security\Core\Exception\AccessDeniedException; +use Symfony\Component\Security\Core\Exception\AuthenticationException; + +/** + * AccessDeniedListenerTest. + * + * @author Boris Guéry + */ +class AccessDeniedListenerTest extends \PHPUnit_Framework_TestCase +{ + protected function setUp() + { + if (!class_exists('Symfony\Component\HttpFoundation\Request')) { + $this->markTestSkipped('The "HttpFoundation" component is not available'); + } + + if (!class_exists('Symfony\Component\Security\Core\Exception\AccessDeniedException')) { + $this->markTestSkipped('The "Security" component is not available'); + } + } + + /** + * @dataProvider getFormatsDataProvider + * + * @param array $formats + * @param string $format + */ + public function testAccessDeniedExceptionIsConvertedToAnAccessDeniedHttpExceptionForFormat(array $formats, $format) + { + $request = new Request(); + $request->setRequestFormat($format); + + $this->doTestAccessDeniedExceptionIsConvertedToAnAccessDeniedHttpExceptionForRequest($request, $formats); + } + + /** + * @dataProvider getContentTypesDataProvider + * + * @param array $formats + * @param string $contentType + */ + public function testAccessDeniedExceptionIsConvertedToAnAccessDeniedHttpExceptionForContentType(array $formats, $contentType) + { + $request = new Request(); + $request->headers->set('Content-Type', $contentType); + + $this->doTestAccessDeniedExceptionIsConvertedToAnAccessDeniedHttpExceptionForRequest($request, $formats); + } + + /** + * @param Request $request + * @param array $formats + */ + private function doTestAccessDeniedExceptionIsConvertedToAnAccessDeniedHttpExceptionForRequest(Request $request, array $formats) + { + $exception = new AccessDeniedException(); + $event = new GetResponseForExceptionEvent(new TestKernel(), $request, 'foo', $exception); + $listener = new AccessDeniedListener($formats, null, 'foo'); + // store the current error_log, and disable it temporarily + $errorLog = ini_set('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul'); + $listener->onKernelException($event); + // restore the old error_log + ini_set('error_log', $errorLog); + $this->assertInstanceOf('Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException', $event->getException()); + } + + /** + * @dataProvider getFormatsDataProvider + * + * @param array $formats + */ + public function testCommonExceptionsAreBypassed($formats) + { + $request = new Request(); + $request->setRequestFormat(key($formats)); + $exception = new \Exception('foo'); + $event = new GetResponseForExceptionEvent(new TestKernel(), $request, 'foo', $exception); + + $listener = new AccessDeniedListener($formats, null, 'foo'); + $listener->onKernelException($event); + $this->assertSame($exception, $event->getException()); + } + + /** + * @dataProvider getFormatsDataProvider + * + * @param array $formats + * @param string $format + */ + public function testAuthenticationExceptionIsConvertedToAnAccessDeniedHttpExceptionForFormat(array $formats, $format) + { + $request = new Request(); + $request->setRequestFormat($format); + + $this->doTestAuthenticationExceptionIsConvertedToAnHttpExceptionForRequest($request, $formats); + } + + /** + * @dataProvider getContentTypesDataProvider + * + * @param array $formats + * @param string $contentType + */ + public function testAuthenticationExceptionIsConvertedToAnAccessDeniedHttpExceptionForContentType(array $formats, $contentType) + { + $request = new Request(); + $request->headers->set('Content-Type', $contentType); + + $this->doTestAuthenticationExceptionIsConvertedToAnHttpExceptionForRequest($request, $formats); + } + + /** + * @param Request $request + * @param array $formats + */ + private function doTestAuthenticationExceptionIsConvertedToAnHttpExceptionForRequest(Request $request, array $formats) + { + $exception = new AuthenticationException(); + $event = new GetResponseForExceptionEvent(new TestKernel(), $request, 'foo', $exception); + $listener = new AccessDeniedListener($formats, null, 'foo'); + // store the current error_log, and disable it temporarily + $errorLog = ini_set('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul'); + $listener->onKernelException($event); + // restore the old error_log + ini_set('error_log', $errorLog); + $this->assertInstanceOf('Symfony\Component\HttpKernel\Exception\HttpException', $event->getException()); + $this->assertEquals(401, $event->getException()->getStatusCode()); + $this->assertEquals('You are not authenticated', $event->getException()->getMessage()); + $this->assertArrayNotHasKey('WWW-Authenticate', $event->getException()->getHeaders()); + } + + /** + * @param Request $request + * @param array $formats + */ + private function doTestUnauthorizedHttpExceptionHasCorrectChallenge(Request $request, array $formats) + { + $exception = new AuthenticationException(); + $event = new GetResponseForExceptionEvent(new TestKernel(), $request, 'foo', $exception); + $listener = new AccessDeniedListener($formats, 'Basic realm="Restricted Area"', 'foo'); + // store the current error_log, and disable it temporarily + $errorLog = ini_set('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul'); + $listener->onKernelException($event); + // restore the old error_log + ini_set('error_log', $errorLog); + $this->assertInstanceOf('Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException', $event->getException()); + $this->assertEquals(401, $event->getException()->getStatusCode()); + $this->assertEquals('You are not authenticated', $event->getException()->getMessage()); + $headers = $event->getException()->getHeaders(); + $this->assertEquals('Basic realm="Restricted Area"', $headers['WWW-Authenticate']); + } + + public static function getFormatsDataProvider() + { + return array( + array(array('json' => true), 'json'), + ); + } + + public static function getContentTypesDataProvider() + { + return array( + array(array('json' => true), 'application/json'), + ); + } +} + +class TestKernel implements HttpKernelInterface +{ + public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) + { + return new Response('foo'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/BodyListenerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/BodyListenerTest.php new file mode 100644 index 0000000..53afe6c --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/BodyListenerTest.php @@ -0,0 +1,263 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\EventListener; + +use FOS\RestBundle\Normalizer\Exception\NormalizationException; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\HeaderBag; +use FOS\RestBundle\Decoder\ContainerDecoderProvider; +use FOS\RestBundle\EventListener\BodyListener; + +/** + * Request listener test. + * + * @author Alain Horner + * @author Stefan Paschke + */ +class BodyListenerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @param bool $decode use decoder provider + * @param Request $request the original request + * @param string $method a http method (e.g. POST, GET, PUT, ...) + * @param array $expectedParameters the http parameters of the updated request + * @param string $contentType the request header content type + * @param bool $throwExceptionOnUnsupportedContentType + * + * @dataProvider testOnKernelRequestDataProvider + */ + public function testOnKernelRequest($decode, Request $request, $method, $expectedParameters, $contentType = null, $throwExceptionOnUnsupportedContentType = false) + { + $decoder = $this->getMockBuilder('FOS\RestBundle\Decoder\DecoderInterface')->disableOriginalConstructor()->getMock(); + $decoder->expects($this->any()) + ->method('decode') + ->will($this->returnValue($request->getContent())); + + $decoderProvider = new ContainerDecoderProvider(array('json' => 'foo')); + + $listener = new BodyListener($decoderProvider, $throwExceptionOnUnsupportedContentType); + + if ($decode) { + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + $container + ->expects($this->once()) + ->method('get') + ->with('foo') + ->will($this->returnValue($decoder)); + + $decoderProvider->setContainer($container); + } + + $request->setMethod($method); + + if ($contentType) { + $request->headers = new HeaderBag(array('Content-Type' => $contentType)); + } + + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $listener->onKernelRequest($event); + + $this->assertEquals($request->request->all(), $expectedParameters); + } + + public static function testOnKernelRequestDataProvider() + { + return array( + 'Empty POST request' => array(true, new Request(array(), array(), array(), array(), array(), array(), array('foo')), 'POST', array('foo'), 'application/json'), + 'Empty PUT request' => array(true, new Request(array(), array(), array(), array(), array(), array(), array('foo')), 'PUT', array('foo'), 'application/json'), + 'Empty PATCH request' => array(true, new Request(array(), array(), array(), array(), array(), array(), array('foo')), 'PATCH', array('foo'), 'application/json'), + 'Empty DELETE request' => array(true, new Request(array(), array(), array(), array(), array(), array(), array('foo')), 'DELETE', array('foo'), 'application/json'), + 'Empty GET request' => array(false, new Request(array(), array(), array(), array(), array(), array(), array('foo')), 'GET', array(), 'application/json'), + 'POST request with parameters' => array(false, new Request(array(), array('bar'), array(), array(), array(), array('CONTENT_TYPE' => 'application/x-www-form-urlencoded'), array('foo')), 'POST', array('bar'), 'application/x-www-form-urlencoded'), + 'POST request with unallowed format' => array(false, new Request(array(), array(), array(), array(), array(), array(), array('foo')), 'POST', array(), 'application/fooformat'), + 'POST request with no Content-Type' => array(true, new Request(array(), array(), array('_format' => 'json'), array(), array(), array(), array('foo')), 'POST', array('foo')), + ); + } + + public function testOnKernelRequestWithNormalizer() + { + $data = array('foo_bar' => 'foo_bar'); + $normalizedData = array('fooBar' => 'foo_bar'); + + $decoder = $this->getMock('FOS\RestBundle\Decoder\DecoderInterface'); + $decoder + ->expects($this->any()) + ->method('decode') + ->will($this->returnValue($data)); + + $decoderProvider = $this->getMock('FOS\RestBundle\Decoder\DecoderProviderInterface'); + $decoderProvider + ->expects($this->any()) + ->method('getDecoder') + ->will($this->returnValue($decoder)); + + $decoderProvider + ->expects($this->any()) + ->method('supports') + ->will($this->returnValue(true)); + + $normalizer = $this->getMock('FOS\RestBundle\Normalizer\ArrayNormalizerInterface'); + $normalizer + ->expects($this->once()) + ->method('normalize') + ->with($data) + ->will($this->returnValue($normalizedData)); + + $request = new Request(array(), array(), array(), array(), array(), array(), 'foo'); + $request->setMethod('POST'); + + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $listener = new BodyListener($decoderProvider, false, $normalizer); + $listener->onKernelRequest($event); + + $this->assertEquals($normalizedData, $request->request->all()); + } + + /** + * @dataProvider formNormalizationProvider + */ + public function testOnKernelRequestNormalizationWithForms($method, $contentType, $mustBeNormalized) + { + $data = array('foo_bar' => 'foo_bar'); + $normalizedData = array('fooBar' => 'foo_bar'); + $decoderProvider = $this->getMock('FOS\RestBundle\Decoder\DecoderProviderInterface'); + + $normalizer = $this->getMock('FOS\RestBundle\Normalizer\ArrayNormalizerInterface'); + + if ($mustBeNormalized) { + $normalizer + ->expects($this->once()) + ->method('normalize') + ->with($data) + ->will($this->returnValue($normalizedData)); + } else { + $normalizer + ->expects($this->never()) + ->method('normalize'); + } + + $request = new Request(array(), $data, array(), array(), array(), array(), 'foo'); + $request->headers->set('Content-Type', $contentType); + $request->setMethod($method); + + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $listener = new BodyListener($decoderProvider, false, $normalizer, true); + $listener->onKernelRequest($event); + + if ($mustBeNormalized) { + $this->assertEquals($normalizedData, $request->request->all()); + } else { + $this->assertEquals($data, $request->request->all()); + } + } + + public function formNormalizationProvider() + { + $cases = array(); + + foreach (array('POST', 'PUT', 'PATCH', 'DELETE') as $method) { + $cases[] = array($method, 'multipart/form-data', true); + $cases[] = array($method, 'multipart/form-data; boundary=AaB03x', true); + $cases[] = array($method, 'application/x-www-form-urlencoded', true); + $cases[] = array($method, 'application/x-www-form-urlencoded; charset=utf-8', true); + $cases[] = array($method, 'unknown', false); + } + + return $cases; + } + + /** + * @expectedException \Symfony\Component\HttpKernel\Exception\BadRequestHttpException + */ + public function testOnKernelRequestNormalizationException() + { + $decoder = $this->getMock('FOS\RestBundle\Decoder\DecoderInterface'); + $decoder + ->expects($this->any()) + ->method('decode') + ->will($this->returnValue(array())); + + $decoderProvider = $this->getMock('FOS\RestBundle\Decoder\DecoderProviderInterface'); + $decoderProvider + ->expects($this->any()) + ->method('getDecoder') + ->will($this->returnValue($decoder)); + + $decoderProvider + ->expects($this->any()) + ->method('supports') + ->will($this->returnValue(true)); + + $normalizer = $this->getMock('FOS\RestBundle\Normalizer\ArrayNormalizerInterface'); + $normalizer + ->expects($this->once()) + ->method('normalize') + ->will($this->throwException(new NormalizationException())); + + $request = new Request(array(), array(), array(), array(), array(), array(), 'foo'); + $request->setMethod('POST'); + + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $listener = new BodyListener($decoderProvider, false, $normalizer); + $listener->onKernelRequest($event); + } + + /** + * Test that a malformed request will cause a BadRequestHttpException to be thrown. + */ + public function testBadRequestExceptionOnMalformedContent() + { + $this->setExpectedException('\Symfony\Component\HttpKernel\Exception\BadRequestHttpException'); + $this->testOnKernelRequest(true, new Request(array(), array(), array(), array(), array(), array(), 'foo'), 'POST', array(), 'application/json'); + } + + /** + * Test that a unallowed format will cause a UnsupportedMediaTypeHttpException to be thrown. + */ + public function testUnsupportedMediaTypeHttpExceptionOnUnsupportedMediaType() + { + $this->setExpectedException('\Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException'); + $this->testOnKernelRequest(false, new Request(array(), array(), array(), array(), array(), array(), 'foo'), 'POST', array(), 'application/foo', true); + } + + public function testShouldNotThrowUnsupportedMediaTypeHttpExceptionWhenIsAnEmptyDeleteRequest() + { + $this->testOnKernelRequest(false, new Request(), 'DELETE', array(), null, true); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/FormatListenerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/FormatListenerTest.php new file mode 100644 index 0000000..cddae3e --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/FormatListenerTest.php @@ -0,0 +1,183 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\EventListener; + +use FOS\RestBundle\Util\FormatNegotiator; +use Symfony\Component\HttpFoundation\RequestMatcher; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +use FOS\RestBundle\EventListener\FormatListener; + +/** + * Request listener test. + * + * @author Lukas Kahwe Smith + */ +class FormatListenerTest extends \PHPUnit_Framework_TestCase +{ + public function testOnKernelControllerNegotiation() + { + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $request = new Request(); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $formatNegotiator = $this->getMockBuilder('FOS\RestBundle\Util\FormatNegotiator') + ->disableOriginalConstructor() + ->getMock(); + $formatNegotiator->expects($this->once()) + ->method('getBestMediaType') + ->will($this->returnValue('application/xml')); + + $listener = new FormatListener($formatNegotiator); + + $listener->onKernelRequest($event); + + $this->assertEquals($request->getRequestFormat(), 'xml'); + } + + public function testOnKernelControllerNegotiationStopped() + { + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $request = new Request(); + $request->setRequestFormat('xml'); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $formatNegotiator = new FormatNegotiator(); + $formatNegotiator->add(new RequestMatcher('/'), array('stop' => true)); + $formatNegotiator->add(new RequestMatcher('/'), array('fallback_format' => 'json')); + + $listener = new FormatListener($formatNegotiator); + + $listener->onKernelRequest($event); + + $this->assertEquals($request->getRequestFormat(), 'xml'); + } + + /** + * @expectedException \Symfony\Component\HttpKernel\Exception\HttpException + */ + public function testOnKernelControllerException() + { + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $request = new Request(); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $event->expects($this->once()) + ->method('getRequestType') + ->will($this->returnValue(HttpKernelInterface::MASTER_REQUEST)); + + $formatNegotiator = $this->getMockBuilder('FOS\RestBundle\Util\FormatNegotiator') + ->disableOriginalConstructor() + ->getMock(); + + $listener = new FormatListener($formatNegotiator); + + $listener->onKernelRequest($event); + } + + /** + * Test FormatListener won't overwrite request format when it was already specified. + * + * @dataProvider useSpecifiedFormatDataProvider + */ + public function testUseSpecifiedFormat($format, $result) + { + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $request = new Request(); + if ($format) { + $request->setRequestFormat($format); + } + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $formatNegotiator = $this->getMockBuilder('FOS\RestBundle\Util\FormatNegotiator') + ->disableOriginalConstructor() + ->getMock(); + $formatNegotiator->expects($this->any()) + ->method('getBestMediaType') + ->will($this->returnValue('application/xml')); + + $listener = new FormatListener($formatNegotiator); + + $listener->onKernelRequest($event); + + $this->assertEquals($request->getRequestFormat(), $result); + } + + public function useSpecifiedFormatDataProvider() + { + return array( + array(null, 'xml'), + array('json', 'json'), + ); + } + + /** + * Generates a request like a symfony fragment listener does. + * Set request type to master. + */ + public function testSfFragmentFormat() + { + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor() + ->getMock(); + + $request = new Request(); + $attributes = array('_locale' => 'en', '_format' => 'json', '_controller' => 'FooBundle:Index:featured'); + $request->attributes->add($attributes); + $request->attributes->set('_route_params', array_replace($request->attributes->get('_route_params', array()), $attributes)); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $event->expects($this->any()) + ->method('getRequestType') + ->will($this->returnValue(HttpKernelInterface::MASTER_REQUEST)); + + $formatNegotiator = $this->getMockBuilder('FOS\RestBundle\Util\FormatNegotiator') + ->disableOriginalConstructor() + ->getMock(); + $formatNegotiator->expects($this->any()) + ->method('getBestMediaType') + ->will($this->returnValue('application/json')); + + $listener = new FormatListener($formatNegotiator); + + $listener->onKernelRequest($event); + + $this->assertEquals($request->getRequestFormat(), 'json'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/MimeTypeListenerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/MimeTypeListenerTest.php new file mode 100644 index 0000000..6c1e5e9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/MimeTypeListenerTest.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\EventListener; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use FOS\RestBundle\EventListener\MimeTypeListener; + +/** + * Request listener test. + * + * @author Lukas Kahwe Smith + */ +class MimeTypeListenerTest extends \PHPUnit_Framework_TestCase +{ + public function testOnKernelRequest() + { + $formatNegotiator = $this->getMockBuilder('FOS\RestBundle\Util\FormatNegotiator') + ->disableOriginalConstructor()->getMock(); + $formatNegotiator->expects($this->any()) + ->method('registerFormat') + ->with('jsonp', array('application/javascript+jsonp'), true) + ->will($this->returnValue(null)); + + $listener = new MimeTypeListener(array('enabled' => true, 'formats' => array('jsonp' => array('application/javascript+jsonp'))), $formatNegotiator); + + $request = new Request(); + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') + ->disableOriginalConstructor()->getMock(); + $event->expects($this->any()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $this->assertNull($request->getMimeType('jsonp')); + + $listener->onKernelRequest($event); + + $this->assertNull($request->getMimeType('jsonp')); + + $event->expects($this->once()) + ->method('getRequestType') + ->will($this->returnValue(HttpKernelInterface::MASTER_REQUEST)); + + $listener->onKernelRequest($event); + + $this->assertEquals('application/javascript+jsonp', $request->getMimeType('jsonp')); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ParamFetcherListenerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ParamFetcherListenerTest.php new file mode 100644 index 0000000..e46535d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ParamFetcherListenerTest.php @@ -0,0 +1,185 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\EventListener; + +use FOS\RestBundle\EventListener\ParamFetcherListener; +use FOS\RestBundle\Tests\Fixtures\Controller\ParamFetcherController; +use Symfony\Component\HttpFoundation\Request; + +/** + * Param Fetcher Listener Tests. + */ +class ParamFetcherListenerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $container; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $paramFetcher; + + /** + * @var \FOS\RestBundle\EventListener\ParamFetcherListener + */ + private $paramFetcherListener; + + /** + * Tests the ParamFetcher being able to set an attribute on the request + * when configured to do so and the attribute is specified as a null + * default value. + */ + public function testSettingAttributes() + { + $request = new Request(); + $request->attributes->set('customer', null); + $event = $this->getEvent($request); + + $this->paramFetcher->expects($this->once()) + ->method('all') + ->will($this->returnValue(array( + 'customer' => 5, + ))); + + $this->paramFetcherListener->onKernelController($event); + + $this->assertEquals(5, $request->attributes->get('customer'), 'Listener set attribute as expected'); + } + + /** + * Tests the ParamFetcher being able to set an attribute on the request + * when configured to do so and the attribute is specified as a null + * default value. + */ + public function testSettingParamFetcherOnRequest() + { + $request = new Request(); + $event = $this->getEvent($request); + + $this->paramFetcher->expects($this->once()) + ->method('all') + ->will($this->returnValue(array())); + + $this->paramFetcherListener->onKernelController($event); + + $this->assertSame($this->paramFetcher, $request->attributes->get('paramFetcher')); + } + + /** + * Tests that the ParamFetcher can be injected by the default name + * ($paramFetcher) or by a different name if type-hinted. + * + * @dataProvider setParamFetcherByTypehintProvider + */ + public function testSettingParamFetcherByTypehint($actionName, $expectedAttribute) + { + $request = new Request(); + + $event = $this->getEvent($request, $actionName); + + $this->paramFetcher->expects($this->once()) + ->method('all') + ->will($this->returnValue(array())); + + $this->paramFetcherListener->onKernelController($event); + + $this->assertSame($this->paramFetcher, $request->attributes->get($expectedAttribute)); + } + + /** + * Tests that the ParamFetcher can be injected in a invokable controller. + */ + public function testSettingParamFetcherForInvokable() + { + $request = new Request(); + + $event = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent') + ->disableOriginalConstructor() + ->getMock(); + + $event->expects($this->atLeastOnce()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $controller = new ParamFetcherController(); + + $event->expects($this->atLeastOnce()) + ->method('getController') + ->will($this->returnValue($controller)); + + $this->paramFetcher->expects($this->once()) + ->method('all') + ->will($this->returnValue(array())); + + $this->paramFetcherListener->onKernelController($event); + + $this->assertSame($this->paramFetcher, $request->attributes->get('pfInvokable')); + } + + public function setParamFetcherByTypehintProvider() + { + return array( + // Without a typehint, the ParamFetcher should be injected as + // $paramFetcher. + array('byNameAction', 'paramFetcher'), + + // With a typehint, the ParamFetcher should be injected as whatever + // the parameter name is. + array('byTypeAction', 'pf'), + + // The user can typehint using ParamFetcherInterface, too. + array('byInterfaceAction', 'pfi'), + + // If there is no controller argument for the ParamFetcher, it + // should be injected as the default name. + array('notProvidedAction', 'paramFetcher'), + ); + } + + protected function getEvent(Request $request, $actionMethod = 'byNameAction') + { + $event = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent') + ->disableOriginalConstructor() + ->getMock(); + + $event->expects($this->atLeastOnce()) + ->method('getRequest') + ->will($this->returnValue($request)); + + $controller = new ParamFetcherController(); + + $event->expects($this->atLeastOnce()) + ->method('getController') + ->will($this->returnValue(array($controller, $actionMethod))); + + return $event; + } + + public function setUp() + { + $this->container = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\ContainerInterface') + ->getMock(); + + $this->paramFetcher = $this->getMockBuilder('FOS\\RestBundle\\Request\\ParamFetcher') + ->disableOriginalConstructor() + ->getMock(); + + $this->container->expects($this->once()) + ->method('get') + ->with('fos_rest.request.param_fetcher') + ->will($this->returnValue($this->paramFetcher)); + + $this->paramFetcherListener = new ParamFetcherListener($this->container, true); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ViewResponseListenerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ViewResponseListenerTest.php new file mode 100644 index 0000000..a271f34 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/EventListener/ViewResponseListenerTest.php @@ -0,0 +1,373 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\EventListener; + +use FOS\RestBundle\Controller\Annotations\View as ViewAnnotation; +use FOS\RestBundle\EventListener\ViewResponseListener; +use FOS\RestBundle\View\View; +use FOS\RestBundle\View\ViewHandler; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + +/** + * View response listener test. + * + * @author Lukas Kahwe Smith + */ +class ViewResponseListenerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \FOS\RestBundle\EventListener\ViewResponseListener + */ + public $listener; + + /** + * @var \Symfony\Component\DependencyInjection\Container|\PHPUnit_Framework_MockObject_MockObject + */ + public $container; + + /** + * @var \FOS\RestBundle\View\ViewHandlerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + public $viewHandler; + + /** + * @var \Symfony\Bundle\FrameworkBundle\Templating\EngineInterface|\PHPUnit_Framework_MockObject_MockObject + */ + public $templating; + + /** + * @param Request $request + * + * @return \Symfony\Component\HttpKernel\Event\FilterControllerEvent|\PHPUnit_Framework_MockObject_MockObject + */ + protected function getFilterEvent(Request $request) + { + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\FilterControllerEvent') + ->disableOriginalConstructor() + ->getMock(); + + $event->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)); + + return $event; + } + + /** + * @param Request $request + * @param mixed $result + * + * @return \Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent|\PHPUnit_Framework_MockObject_MockObject + */ + protected function getResponseEvent(Request $request, $result) + { + $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent') + ->disableOriginalConstructor() + ->getMock(); + + $event->expects($this->atLeastOnce()) + ->method('getRequest') + ->will($this->returnValue($request)); + $event->expects($this->any()) + ->method('getControllerResult') + ->will($this->returnValue($result)); + + return $event; + } + + public function testOnKernelController() + { + $request = new Request(); + $request->attributes->set('_view', 'foo'); + $event = $this->getFilterEvent($request); + + $this->listener->onKernelController($event); + + $this->assertEquals('foo', $request->attributes->get('_template')); + } + + public function testOnKernelControllerNoView() + { + $request = new Request(); + $event = $this->getFilterEvent($request); + + $this->listener->onKernelController($event); + + $this->assertNull($request->attributes->get('_template')); + } + + public function testOnKernelView() + { + $template = $this->getMockBuilder('Symfony\Bundle\FrameworkBundle\Templating\TemplateReference') + ->disableOriginalConstructor() + ->getMock(); + $template->expects($this->once()) + ->method('set') + ->with('format', null); + + $request = new Request(); + $request->attributes->set('_template_default_vars', array('foo', 'halli')); + $request->attributes->set('foo', 'baz'); + $request->attributes->set('halli', 'galli'); + $request->attributes->set('_template', $template); + $response = new Response(); + + $view = $this->getMockBuilder('FOS\RestBundle\View\View') + ->disableOriginalConstructor() + ->getMock(); + $view->expects($this->exactly(2)) + ->method('getFormat') + ->will($this->onConsecutiveCalls(null, 'html')); + + $this->viewHandler->expects($this->once()) + ->method('handle') + ->with($this->isInstanceOf('FOS\RestBundle\View\View'), $this->equalTo($request)) + ->will($this->returnValue($response)); + $this->viewHandler->expects($this->once()) + ->method('isFormatTemplating') + ->with('html') + ->will($this->returnValue(true)); + + $event = $this->getResponseEvent($request, $view); + $event->expects($this->once()) + ->method('setResponse'); + + $this->container->expects($this->once()) + ->method('get') + ->with($this->equalTo('fos_rest.view_handler')) + ->will($this->returnValue($this->viewHandler)); + + $this->listener->onKernelView($event); + } + + public function testOnKernelViewWhenControllerResultIsNotViewObject() + { + $request = new Request(); + + $event = $this->getResponseEvent($request, array()); + $event->expects($this->never()) + ->method('setResponse'); + + $this->assertEquals(array(), $this->listener->onKernelView($event)); + } + + /** + * onKernelView falls back to FrameworkExtraBundles' onKernelView + * when fos_rest.view_response_listener.force_view is false. + */ + public function testOnKernelViewFallsBackToFrameworkExtraBundle() + { + $template = $this->getMockBuilder('Symfony\Bundle\FrameworkBundle\Templating\TemplateReference') + ->disableOriginalConstructor() + ->getMock(); + + $request = new Request(); + $request->attributes->set('_template', $template); + + $this->templating->expects($this->any()) + ->method('renderResponse') + ->with($template, array()) + ->will($this->returnValue(new Response('output'))); + $this->templating->expects($this->any()) + ->method('render') + ->with($template, array()) + ->will($this->returnValue('output')); + + $event = $this->getResponseEvent($request, array()); + $response = null; + + $event->expects($this->once()) + ->method('setResponse') + ->will($this->returnCallback(function ($r) use (&$response) { + $response = $r; + })); + + $this->container->expects($this->once()) + ->method('get') + ->with($this->equalTo('templating')) + ->will($this->returnValue($this->templating)); + + $this->listener->onKernelView($event); + + $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response); + $this->assertSame('output', $response->getContent()); + } + + public static function statusCodeProvider() + { + return array( + array(201, 200, 201), + array(201, 404, 404), + array(201, 500, 500), + ); + } + + /** + * @dataProvider statusCodeProvider + */ + public function testStatusCode($annotationCode, $viewCode, $expectedCode) + { + $viewAnnotation = new ViewAnnotation(array()); + $viewAnnotation->setStatusCode($annotationCode); + + $request = new Request(); + $request->setRequestFormat('json'); + $request->attributes->set('_view', $viewAnnotation); + + $this->viewHandler = new ViewHandler(array('json' => true)); + $this->viewHandler->setContainer($this->container); + + // This is why we avoid container dependencies! + $that = $this; + $this->container->expects($this->exactly(2)) + ->method('get') + ->with($this->logicalOr('fos_rest.view_handler', 'fos_rest.templating')) + ->will($this->returnCallback(function ($service) use ($that) { + return $service === 'fos_rest.view_handler' ? + $that->viewHandler : + $that->templating; + })); + + $this->templating->expects($this->any()) + ->method('render') + ->will($this->returnValue('foo')); + + $view = new View(); + $view->setStatusCode($viewCode); + $view->setData('foo'); + + $event = $this->getResponseEvent($request, $view); + + $response = new Response(); + $event->expects($this->any()) + ->method('setResponse') + ->will($this->returnCallback(function ($r) use (&$response) { + $response = $r; + })); + + $this->listener->onKernelView($event); + + $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response); + $this->assertSame($expectedCode, $response->getStatusCode()); + } + + public static function serializerEnableMaxDepthChecksProvider() + { + return array( + array(false, get_class(null)), + array(true, 'JMS\Serializer\Exclusion\DepthExclusionStrategy'), + ); + } + + /** + * @dataProvider serializerEnableMaxDepthChecksProvider + */ + public function testSerializerEnableMaxDepthChecks($enableMaxDepthChecks, $expectedClass) + { + $viewAnnotation = new ViewAnnotation(array()); + $viewAnnotation->setSerializerEnableMaxDepthChecks($enableMaxDepthChecks); + + $request = new Request(); + $request->setRequestFormat('json'); + $request->attributes->set('_view', $viewAnnotation); + + $this->viewHandler = new ViewHandler(array('json' => true)); + $this->viewHandler->setContainer($this->container); + + // This is why we avoid container dependencies! + $that = $this; + $this->container->expects($this->exactly(2)) + ->method('get') + ->with($this->logicalOr('fos_rest.view_handler', 'fos_rest.templating')) + ->will($this->returnCallback(function ($service) use ($that) { + return $service === 'fos_rest.view_handler' ? + $that->viewHandler : + $that->templating; + })); + + $this->templating->expects($this->any()) + ->method('render') + ->will($this->returnValue('foo')); + + $view = new View(); + + $event = $this->getResponseEvent($request, $view); + + $this->listener->onKernelView($event); + + $context = $view->getSerializationContext(); + $exclusionStrategy = $context->getExclusionStrategy(); + + $this->assertEquals($expectedClass, get_class($exclusionStrategy)); + } + + public function getDataForDefaultVarsCopy() + { + return array( + array(true, false, false), + array(true, true, true), + array(false, null, true), + ); + } + + /** + * @dataProvider getDataForDefaultVarsCopy + */ + public function testViewWithNoCopyDefaultVars($createAnnotation, $populateDefaultVars, $shouldCopy) + { + $request = new Request(); + $request->attributes->set('_template_default_vars', array('customer')); + $request->attributes->set('customer', 'A person goes here'); + $view = View::create(); + + if ($createAnnotation) { + $viewAnnotation = new ViewAnnotation(array()); + $viewAnnotation->setPopulateDefaultVars($populateDefaultVars); + $request->attributes->set('_view', $viewAnnotation); + } + + $event = $this->getResponseEvent($request, $view); + + $this->viewHandler = new ViewHandler(array('html' => true)); + $this->viewHandler->setContainer($this->container); + + // This is why we avoid container dependencies! + $that = $this; + $this->container->expects($this->exactly(2)) + ->method('get') + ->with($this->logicalOr('fos_rest.view_handler', 'fos_rest.templating')) + ->will($this->returnCallback(function ($service) use ($that) { + return $service === 'fos_rest.view_handler' ? + $that->viewHandler : + $that->templating; + })); + + $this->listener->onKernelView($event); + + $data = $view->getData(); + if ($shouldCopy) { + $this->assertArrayHasKey('customer', $data); + $this->assertEquals('A person goes here', $data['customer']); + } else { + $this->assertNull($data); + } + } + + protected function setUp() + { + $this->viewHandler = $this->getMock('FOS\RestBundle\View\ViewHandlerInterface'); + $this->templating = $this->getMock('Symfony\Bundle\FrameworkBundle\Templating\EngineInterface'); + $this->container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); + $this->listener = new ViewResponseListener($this->container); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/FOSRestBundleTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/FOSRestBundleTest.php new file mode 100644 index 0000000..3119a09 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/FOSRestBundleTest.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests; + +use FOS\RestBundle\FOSRestBundle; + +/** + * FOSRestBundle test. + * + * @author Eriksen Costa + */ +class FOSRestBundleTest extends \PHPUnit_Framework_TestCase +{ + public function testBuild() + { + $container = $this->getMockBuilder('\Symfony\Component\DependencyInjection\ContainerBuilder') + ->setMethods(array('addCompilerPass')) + ->getMock(); + $container->expects($this->exactly(6)) + ->method('addCompilerPass') + ->with($this->isInstanceOf('\Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface')); + + $bundle = new FOSRestBundle(); + $bundle->build($container); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedConditionalUsersController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedConditionalUsersController.php new file mode 100644 index 0000000..17368b9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedConditionalUsersController.php @@ -0,0 +1,195 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use FOS\RestBundle\Controller\Annotations\Route; +use FOS\RestBundle\Controller\Annotations\NoRoute; +use FOS\RestBundle\Controller\Annotations\Get; +use FOS\RestBundle\Controller\Annotations\Post; +use FOS\RestBundle\Controller\Annotations\Put; +use FOS\RestBundle\Controller\Annotations\Patch; +use FOS\RestBundle\Controller\Annotations\Delete; +use FOS\RestBundle\Controller\Annotations\Head; +use FOS\RestBundle\Controller\Annotations\Options; +use FOS\RestBundle\Controller\Annotations\Link; +use FOS\RestBundle\Controller\Annotations\Unlink; + +class AnnotatedConditionalUsersController extends Controller +{ + public function optionsUsersAction() + { + } + + // [OPTIONS] /users + + /** + * @Options + */ + public function boptionsUsersAction() + { + } + + // [OPTIONS] /users + + public function getUsersAction() + { + } + + // [GET] /users + + /** + * @Route(requirements={"slug" = "[a-z]+"}) + */ + public function getUserAction($slug) + { + } + + // [GET] /users/{slug} + + /** + * @Patch + */ + public function patchUsersAction() + { + } + + /** + * @Patch(requirements={"slug" = "[a-z]+"}) + */ + public function patchUserAction($slug) + { + } + + // [GET] /users/{slug} + + /** + * @Route(requirements={"slug" = "[a-z]+", "id" = "\d+"}) + */ + public function getUserCommentAction($slug, $id) + { + } + + // [GET] /users/{slug}/comments/{id} + + /** + * @Post(requirements={"slug" = "[a-z]+"}) + */ + public function rateUserAction($slug) + { + } + + // [POST] /users/{slug}/rate + + /** + * @Route("/users/{slug}/rate_comment/{id}", requirements={"slug" = "[a-z]+", "id" = "\d+"}, methods={"PATCH", "POST"}) + */ + public function rateUserCommentAction($slug, $id) + { + } + + // [PATCH, POST] /users/{slug}/rate_comment/{id} + + /** + * @Get + */ + public function bgetUserAction($slug) + { + } + + // [GET] /users/{slug}/bget + + /** + * @Post + */ + public function bpostUserAction($slug) + { + } + + // [POST] /users/{slug}/bpost + + /** + * @Put + */ + public function bputUserAction($slug) + { + } + + // [PUT] /users/{slug}/bput + + /** + * @Delete + */ + public function bdelUserAction($slug) + { + } + + // [DELETE] /users/{slug}/bdel + + /** + * @Head + */ + public function bheadUserAction($slug) + { + } + + // [HEAD] /users/{slug}/bhead + + /** + * @Link + */ + public function bLinkUserAction($slug) + { + } + + // [LINK] /users/{slug}/blink + + /** + * @Unlink + */ + public function bunlinkUserAction($slug) + { + } + + // [UNLINK] /users/{slug}/bunlink + + /** + * @NoRoute + */ + public function splitUserAction($slug) + { + } + + /** + * @Route(requirements={"_format"="custom"}) + */ + public function customUserAction($slug) + { + } + + /** + * @Get(condition="context.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') matches '/firefox/i'") + */ + public function conditionalUserAction() + { + } + + /** + * @Link("/users1", name="_a_link_method", condition="context.getMethod() in ['LINK'] and request.headers.get('User-Agent') matches '/firefox/i'") + * @Get("/users2", name="_a_get_method", condition="context.getMethod() in ['GET'] and request.headers.get('User-Agent') matches '/firefox/i'") + * @Get("/users3", name="_an_other_get_method") + * @Post("/users4", name="_a_post_method", condition="context.getMethod() in ['POST'] and request.headers.get('User-Agent') matches '/firefox/i'") + */ + public function multiplegetUsersAction() + { + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedPrefixedController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedPrefixedController.php new file mode 100644 index 0000000..572467f --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedPrefixedController.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use FOS\RestBundle\Controller\Annotations\Prefix; + +/** + * @author Donald Tyler + * @Prefix("aprefix") + */ +class AnnotatedPrefixedController extends Controller +{ + public function getSomethingAction() + { + } + + // [GET] /aprefix/something.{_format} +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedUsersController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedUsersController.php new file mode 100644 index 0000000..0f8fc3c --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/AnnotatedUsersController.php @@ -0,0 +1,205 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use FOS\RestBundle\Controller\Annotations\Route; +use FOS\RestBundle\Controller\Annotations\NoRoute; +use FOS\RestBundle\Controller\Annotations\Get; +use FOS\RestBundle\Controller\Annotations\Post; +use FOS\RestBundle\Controller\Annotations\Put; +use FOS\RestBundle\Controller\Annotations\Patch; +use FOS\RestBundle\Controller\Annotations\Delete; +use FOS\RestBundle\Controller\Annotations\Head; +use FOS\RestBundle\Controller\Annotations\Options; +use FOS\RestBundle\Controller\Annotations\Link; +use FOS\RestBundle\Controller\Annotations\Unlink; + +class AnnotatedUsersController extends Controller +{ + public function optionsUsersAction() + { + } + + // [OPTIONS] /users + + /** + * @Options + */ + public function boptionsUsersAction() + { + } + + // [OPTIONS] /users + + public function getUsersAction() + { + } + + // [GET] /users + + /** + * @Route(requirements={"slug" = "[a-z]+"}) + */ + public function getUserAction($slug) + { + } + + // [GET] /users/{slug} + + /** + * @Route(requirements={"slug" = "[a-z]+", "id" = "\d+"}, options={"expose"=true}) + */ + public function getUserPostAction($slug, $id) + { + } + + // [GET] /users/{slug}/posts/{id} + + /** + * @Patch + */ + public function patchUsersAction() + { + } + + /** + * @Patch(requirements={"slug" = "[a-z]+"}) + */ + public function patchUserAction($slug) + { + } + + // [GET] /users/{slug} + + /** + * @Route(requirements={"slug" = "[a-z]+", "id" = "\d+"}) + */ + public function getUserCommentAction($slug, $id) + { + } + + // [GET] /users/{slug}/comments/{id} + + /** + * @Post(requirements={"slug" = "[a-z]+"}) + */ + public function rateUserAction($slug) + { + } + + // [POST] /users/{slug}/rate + + /** + * @Route("/users/{slug}/rate_comment/{id}", requirements={"slug" = "[a-z]+", "id" = "\d+"}, methods={"PATCH", "POST"}) + */ + public function rateUserCommentAction($slug, $id) + { + } + + // [PATCH, POST] /users/{slug}/rate_comment/{id} + + /** + * @Get + */ + public function bgetUserAction($slug) + { + } + + // [GET] /users/{slug}/bget + + /** + * @Post + */ + public function bpostUserAction($slug) + { + } + + // [POST] /users/{slug}/bpost + + /** + * @Put + */ + public function bputUserAction($slug) + { + } + + // [PUT] /users/{slug}/bput + + /** + * @Delete + */ + public function bdelUserAction($slug) + { + } + + // [DELETE] /users/{slug}/bdel + + /** + * @Head + */ + public function bheadUserAction($slug) + { + } + + // [HEAD] /users/{slug}/bhead + + /** + * @Link + */ + public function bLinkUserAction($slug) + { + } + + // [LINK] /users/{slug}/blink + + /** + * @Unlink + */ + public function bunlinkUserAction($slug) + { + } + + // [UNLINK] /users/{slug}/bunlink + + /** + * @NoRoute + */ + public function splitUserAction($slug) + { + } + + /** + * @Route(requirements={"_format"="custom"}) + */ + public function customUserAction($slug) + { + } + + /** + * @Link("/users1", name="_a_link_method") + * @Get("/users2", name="_a_get_method") + * @Get("/users3", name="_an_other_get_method") + * @Post("/users4", name="_a_post_method") + */ + public function multiplegetUsersAction() + { + } + + /** + * @POST("/users1/{foo}", name="post_users_foo", options={ "method_prefix" = false }) + * @POST("/users2/{foo}", name="post_users_bar", options={ "method_prefix" = false }) + */ + public function multiplepostUsersAction() + { + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ArticleController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ArticleController.php new file mode 100644 index 0000000..c5ea75d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ArticleController.php @@ -0,0 +1,173 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use FOS\RestBundle\Routing\ClassResourceInterface; +use FOS\RestBundle\Controller\FOSRestController; +use Symfony\Component\HttpFoundation\Request; + +class ArticleController extends FosRestController implements ClassResourceInterface +{ + public function optionsAction() + { + } + + // [OPTIONS] /articles + + public function cgetAction() + { + } + + // [GET] /articles + + public function getAction($slug) + { + } + + // [GET] /articles/{slug} + + public function cpostAction() + { + } + + // [POST] /articles + + public function cpatchAction() + { + } + + // [PATCH] /articles + + public function putAction($slug) + { + } + + // [PUT] /articles/{slug} + + public function patchAction($slug) + { + } + + // [PATCH] /articles/{slug} + + public function lockAction($slug) + { + } + + // [PATCH] /articles/{slug}/lock + + public function getCommentsAction($slug) + { + } + + // [GET] /articles/{slug}/comments + + public function getCommentAction($slug, $id) + { + } + + // [GET] /articles/{slug}/comments/{id} + + public function deleteCommentAction($slug, $id) + { + } + + // [DELETE] /articles/{slug}/comments/{id} + + public function banAction($slug, $id) + { + } + + // [PATCH] /articles/{slug}/ban + + public function postCommentVoteAction($slug, $id) + { + } + + // [POST] /articles/{slug}/comments/{id}/vote + + public function _articlebarAction() + { + } + + // NO route + + public function check_articlenameAction() + { + } + + // [GET] /articles/check_articlename + + // conventional HATEOAS actions below + + public function newAction() + { + } + + // [GET] /articles/new + + public function editAction($slug) + { + } + + // [GET] /article/{slug}/edit + + public function removeAction($slug) + { + } + + // [GET] /article/{slug}/remove + + public function newCommentAction($slug) + { + } + + // [GET] /articles/{slug}/comments/new + + public function editCommentAction($slug, $id) + { + } + + // [GET] /articles/{slug}/comments/{id}/edit + + public function removeCommentAction($slug, $id) + { + } + + // [GET] /articles/{slug}/comments/{id}/remove + + public function hideCommentAction($articleId, $commentId) + { + } + + // [PATCH] /articles/{articleId}/comments/{commentId}/hide + + // Parameter of type Request should be ignored + + public function getVotesAction(Request $request, $slug) + { + } + + // [GET] /articles/{slug}/votes + + public function getVoteAction(Request $request, $slug, $id) + { + } + + // [GET] /articles/{slug}/votes/{id} + + public function getFoosAction($slug, Request $request) + { + } + + // [GET] /articles/{slug}/foos +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/InformationController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/InformationController.php new file mode 100644 index 0000000..a43f05f --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/InformationController.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use FOS\RestBundle\Controller\FOSRestController; +use FOS\RestBundle\Routing\ClassResourceInterface; + +class InformationController extends FOSRestController implements ClassResourceInterface +{ + public function cgetAction() + { + } + + // [GET] /information +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/MediaController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/MediaController.php new file mode 100644 index 0000000..64e44ad --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/MediaController.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use FOS\RestBundle\Controller\FOSRestController; +use FOS\RestBundle\Routing\ClassResourceInterface; + +class MediaController extends FOSRestController implements ClassResourceInterface +{ + public function cgetAction() + { + } + + // [GET] /media + + public function getAction($slug) + { + } + + // [GET] /media/{slug} +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/OrdersController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/OrdersController.php new file mode 100644 index 0000000..6230279 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/OrdersController.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; + +class OrdersController extends Controller +{ + // conventional HATEOAS action after REST action + + public function getFoosAction() + { + } + + // [GET] /foos + + public function newFoosAction() + { + } + + // [GET] /foos/new + + // conventional HATEOAS action before REST action + + public function newBarsAction() + { + } + + // [GET] /bars/new + + public function getBarsCustomAction() + { + } + + // [GET] /bars/custom + + public function getBarsAction($slug) + { + } + + // [GET] /bars/{slug} +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ParamFetcherController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ParamFetcherController.php new file mode 100644 index 0000000..93689f7 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ParamFetcherController.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use FOS\RestBundle\Request\ParamFetcher; +use FOS\RestBundle\Request\ParamFetcherInterface; + +/** + * Fixture for testing whether the ParamFetcher can be injected into + * a type-hinted controller method. + */ +class ParamFetcherController +{ + /** + * Make sure the ParamFetcher can be injected by name. + */ + public function byNameAction($paramFetcher) + { + } + + /** + * Make sure the ParamFetcher can be injected according to the typehint. + */ + public function byTypeAction(ParamFetcher $pf) + { + } + + /** + * Make sure the ParamFetcher can be injected if the typehint is for + * the interface. + */ + public function byInterfaceAction(ParamFetcherInterface $pfi) + { + } + + /** + * Make sure the ParamFetcher can be set as a request attribute even if + * there is no controller parameter to receive it. + */ + public function notProvidedAction() + { + } + + /** + * Make sure the ParamFetcher can be set for controller which are used as invokable. + */ + public function __invoke(ParamFetcher $pfInvokable) + { + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ReportController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ReportController.php new file mode 100644 index 0000000..3a7f217 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/ReportController.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use FOS\RestBundle\Controller\FOSRestController; +use FOS\RestBundle\Controller\Annotations as Rest; + +/** + * Class ReportController. + */ +class ReportController extends FOSRestController +{ + public function getBillingSpendingsAction() + { + } + + /** + * @Rest\Get("billing/spendings/{campaign}") + */ + public function getBillingSpendingsByCampaignAction($campaign) + { + } + + public function getBillingPaymentsAction() + { + } + + public function getBillingEarningsAction() + { + } + + /** + * @Rest\Get("billing/earnings/{platform}") + */ + public function getBillingEarningsByPlatformAction($platform) + { + } + + public function getBillingWithdrawalsAction() + { + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicCommentsController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicCommentsController.php new file mode 100644 index 0000000..ca46a5d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicCommentsController.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; + +class UserTopicCommentsController extends Controller +{ + public function getCommentsAction($slug, $title) + { + } + + // [GET] /users/{slug}/topics/{title}/comments + + public function putCommentAction($slug, $title, $id) + { + } + + // [PUT] /users/{slug}/topics/{title}/comments/{id} + + public function banCommentAction($slug, $title, $id) + { + } + + // [POST] /users/{slug}/topics/{title}/comments/{id}/ban + + // conventional HATEOAS actions below + + public function newCommentsAction($slug, $title) + { + } + + // [GET] /users/{slug}/topics/{title}/comments/new + + public function editCommentAction($slug, $title, $id) + { + } + + // [GET] /users/{slug}/topics/{title}/comments/edit + + public function removeCommentAction($slug, $title, $id) + { + } + + // [GET] /users/{slug}/topics/{title}/comments/remove +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicsController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicsController.php new file mode 100644 index 0000000..a941185 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UserTopicsController.php @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; + +class UserTopicsController extends Controller +{ + public function getTopicsAction($slug) + { + } + + // [GET] /users/{slug}/topics + + public function getTopicAction($slug, $title) + { + } + + // [GET] /users/{slug}/topics/{title} + + public function putTopicAction($slug, $title) + { + } + + // [PUT] /users/{slug}/topics/{title} + + public function hideTopicAction($slug, $title) + { + } + + // [POST] /users/{slug}/topics/{title}/hide + + // conventional HATEOAS actions below + + public function newTopicsAction($slug) + { + } + + // [GET] /users/{slug}/topics/new + + public function editTopicAction($slug, $title) + { + } + + // [GET] /users/{slug}/topics/{title}/edit + + public function removeTopicAction($slug, $title) + { + } + + // [GET] /remove/{slug}/topics/{title}/remove +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UsersController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UsersController.php new file mode 100644 index 0000000..8de24db --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Controller/UsersController.php @@ -0,0 +1,184 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Fixtures\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Request; + +class UsersController extends Controller +{ + public function optionsUsersAction() + { + } + + // [OPTION] /users + + public function getUsersAction() + { + } + + // [GET] /users + + public function getUserAction($slug) + { + } + + // [GET] /users/{slug} + + public function postUsersAction() + { + } + + // [POST] /users + + public function patchUsersAction() + { + } + + // [PATCH] /users + + public function putUserAction($slug) + { + } + + // [PUT] /users/{slug} + + public function patchUserAction($slug) + { + } + + // [PATCH] /users/{slug} + + public function lockUserAction($slug) + { + } + + // [PATCH] /users/{slug}/lock + + public function getUserCommentsAction($slug) + { + } + + // [GET] /users/{slug}/comments + + public function getUserCommentAction($slug, $id) + { + } + + // [GET] /users/{slug}/comments/{id} + + public function deleteUserCommentAction($slug, $id) + { + } + + // [DELETE] /users/{slug}/comments/{id} + + public function banUserAction($slug, $id) + { + } + + // [PATCH] /users/{slug}/ban + + public function postUserCommentVoteAction($slug, $id) + { + } + + // [POST] /users/{slug}/comments/{id}/vote + + public function _userbarAction() + { + } + + // NO route + + public function check_usernameUsersAction() + { + } + + // [GET] /users/check_username + + // conventional HATEOAS actions below + + public function newUsersAction() + { + } + + // [GET] /users/new + + public function editUserAction($slug) + { + } + + // [GET] /user/{slug}/edit + + public function removeUserAction($slug) + { + } + + // [GET] /user/{slug}/remove + + public function newUserCommentsAction($slug) + { + } + + // [GET] /users/{slug}/comments/new + + public function editUserCommentAction($slug, $id) + { + } + + // [GET] /users/{slug}/comments/{id}/edit + + public function removeUserCommentAction($slug, $id) + { + } + + // [GET] /users/{slug}/comments/{id}/remove + + public function hideUserCommentAction($userId, $commentId) + { + } + + // [PATCH] /users/{userId}/comments/{commentId}/hide + + public function getFooBarsAction($foo) + { + } + + // [GET] /foos/{foo}/bars + + // Parameter of type Request should be ignored + + public function getUserVotesAction(Request $request, $slug) + { + } + + // [GET] /users/{slug}/votes + + public function getUserVoteAction(Request $request, $slug, $id) + { + } + + // [GET] /users/{slug}/votes/{id} + + public function getUserFoosAction($slug, Request $request) + { + } + + // [GET] /users/{slug}/foos + + public function getCategoriesAction() + { + } + + // [GET] /categories +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_conditional_controller.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_conditional_controller.yml new file mode 100644 index 0000000..d947025 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_conditional_controller.yml @@ -0,0 +1,91 @@ +get_users: + path: /users.{_format} + controller: ::getUsersAction + methods: [GET] + +get_user: + path: /users/{slug}.{_format} + controller: ::getUserAction + requirements: {slug: '[a-z]+'} + methods: [GET] + +patch_users: + path: /users.{_format} + controller: ::patchUsersAction + methods: [PATCH] + +patch_user: + path: /users/{slug}.{_format} + controller: ::patchUserAction + requirements: {slug: '[a-z]+'} + methods: [PATCH] + +get_user_comment: + path: /users/{slug}/comments/{id}.{_format} + controller: ::getUserCommentAction + requirements: {slug: '[a-z]+', id: '\d+'} + methods: [GET] + +rate_user: + path: /users/{slug}/rate.{_format} + controller: ::rateUserAction + requirements: {slug: '[a-z]+'} + methods: [POST] + +rate_user_comment: + path: /users/{slug}/rate_comment/{id}.{_format} + controller: ::rateUserCommentAction + requirements: {slug: '[a-z]+', id: '\d+'} + methods: [PATCH, POST] + +bget_user: + path: /users/{slug}/bget.{_format} + controller: ::bgetUserAction + methods: [GET] + +bpost_user: + path: /users/{slug}/bpost.{_format} + controller: ::bpostUserAction + methods: [POST] + +bput_user: + path: /users/{slug}/bput.{_format} + controller: ::bputUserAction + methods: [PUT] + +bdel_user: + path: /users/{slug}/bdel.{_format} + controller: ::bdelUserAction + methods: [DELETE] + +bhead_user: + path: /users/{slug}/bhead.{_format} + controller: ::bheadUserAction + methods: [HEAD] + +conditional_user: + path: /users/conditional.{_format} + controller: ::conditionalUserAction + methods: [GET] + condition: "context.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') matches '/firefox/i'" + + +multipleget_users_a_get_method: + path: /users2.{_format} + controller: ::multiplegetUsersAction + methods: [GET] + condition: "context.getMethod() in ['GET'] and request.headers.get('User-Agent') matches '/firefox/i'" +multipleget_users_an_other_get_method: + path: /users3.{_format} + controller: ::multiplegetUsersAction + methods: [GET] +multipleget_users_a_post_method: + path: /users4.{_format} + controller: ::multiplegetUsersAction + methods: [POST] + condition: "context.getMethod() in ['POST'] and request.headers.get('User-Agent') matches '/firefox/i'" +multipleget_users_a_link_method: + path: /users1.{_format} + controller: ::multiplegetUsersAction + methods: [LINK] + condition: "context.getMethod() in ['LINK'] and request.headers.get('User-Agent') matches '/firefox/i'" diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_users_controller.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_users_controller.yml new file mode 100644 index 0000000..ded2cf0 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/annotated_users_controller.yml @@ -0,0 +1,99 @@ +get_users: + path: /users.{_format} + controller: ::getUsersAction + methods: [GET] + +get_user: + path: /users/{slug}.{_format} + controller: ::getUserAction + requirements: {slug: '[a-z]+'} + methods: [GET] + +patch_users: + path: /users.{_format} + controller: ::patchUsersAction + methods: [PATCH] + +patch_user: + path: /users/{slug}.{_format} + controller: ::patchUserAction + requirements: {slug: '[a-z]+'} + methods: [PATCH] + +get_user_comment: + path: /users/{slug}/comments/{id}.{_format} + controller: ::getUserCommentAction + requirements: {slug: '[a-z]+', id: '\d+'} + methods: [GET] + +get_user_post: + path: /users/{slug}/posts/{id}.{_format} + controller: ::getUserPostAction + options: + expose: true + requirements: {slug: '[a-z]+', id: '\d+'} + methods: [GET] + +rate_user: + path: /users/{slug}/rate.{_format} + controller: ::rateUserAction + requirements: {slug: '[a-z]+'} + methods: [POST] + +rate_user_comment: + path: /users/{slug}/rate_comment/{id}.{_format} + controller: ::rateUserCommentAction + requirements: {slug: '[a-z]+', id: '\d+'} + methods: [PATCH, POST] + +bget_user: + path: /users/{slug}/bget.{_format} + controller: ::bgetUserAction + methods: [GET] + +bpost_user: + path: /users/{slug}/bpost.{_format} + controller: ::bpostUserAction + methods: [POST] + +bput_user: + path: /users/{slug}/bput.{_format} + controller: ::bputUserAction + methods: [PUT] + +bdel_user: + path: /users/{slug}/bdel.{_format} + controller: ::bdelUserAction + methods: [DELETE] + +bhead_user: + path: /users/{slug}/bhead.{_format} + controller: ::bheadUserAction + methods: [HEAD] + + +multipleget_users_a_get_method: + path: /users2.{_format} + controller: ::multiplegetUsersAction + methods: [GET] +multipleget_users_an_other_get_method: + path: /users3.{_format} + controller: ::multiplegetUsersAction + methods: [GET] +multipleget_users_a_post_method: + path: /users4.{_format} + controller: ::multiplegetUsersAction + methods: [POST] +multipleget_users_a_link_method: + path: /users1.{_format} + controller: ::multiplegetUsersAction + methods: [LINK] + +post_users_foo: + path: /users1/{foo}.{_format} + controller: ::multiplepostUsersAction + methods: [POST] +post_users_bar: + path: /users2/{foo}.{_format} + controller: ::multiplepostUsersAction + methods: [POST] diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/base_named_prefixed_reports_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/base_named_prefixed_reports_collection.yml new file mode 100644 index 0000000..f90ca13 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/base_named_prefixed_reports_collection.yml @@ -0,0 +1,29 @@ +base_api_get_billing_spendings: + path: /base/billing/spendings.{_format} + controller: ::getBillingSpendingsAction + method: GET + +base_api_get_billing_spendings_by_campaign: + path: /base/billing/spendings/{campaign}.{_format} + controller: ::getBillingSpendingsByCampaignAction + method: GET + +base_api_get_billing_payments: + path: /base/billing/payments.{_format} + controller: ::getBillingPaymentsAction + method: GET + +base_api_get_billing_earnings: + path: /base/billing/earnings.{_format} + controller: ::getBillingEarningsAction + method: GET + +base_api_get_billing_earnings_by_platform: + path: /base/billing/earnings/{platform}.{_format} + controller: ::getBillingEarningsByPlatformAction + method: GET + +base_api_get_billing_withdrawals: + path: /base/billing/withdrawals.{_format} + controller: ::getBillingWithdrawalsAction + method: GET diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/named_prefixed_reports_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/named_prefixed_reports_collection.yml new file mode 100644 index 0000000..8cacf99 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/named_prefixed_reports_collection.yml @@ -0,0 +1,29 @@ +api_get_billing_spendings: + path: /billing/spendings.{_format} + controller: ::getBillingSpendingsAction + methods: [GET] + +api_get_billing_spendings_by_campaign: + path: /billing/spendings/{campaign}.{_format} + controller: ::getBillingSpendingsByCampaignAction + methods: [GET] + +api_get_billing_payments: + path: /billing/payments.{_format} + controller: ::getBillingPaymentsAction + methods: [GET] + +api_get_billing_earnings: + path: /billing/earnings.{_format} + controller: ::getBillingEarningsAction + methods: [GET] + +api_get_billing_earnings_by_platform: + path: /billing/earnings/{platform}.{_format} + controller: ::getBillingEarningsByPlatformAction + methods: [GET] + +api_get_billing_withdrawals: + path: /billing/withdrawals.{_format} + controller: ::getBillingWithdrawalsAction + methods: [GET] diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/prefixed_users_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/prefixed_users_collection.yml new file mode 100644 index 0000000..be2f839 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/prefixed_users_collection.yml @@ -0,0 +1,114 @@ +get_users: + methods: [GET] + path: /resources/all/users.{_format} + controller: ::getUsersAction + +get_user: + methods: [GET] + path: /resources/all/users/{slug}.{_format} + controller: ::getUserAction + +post_users: + methods: [POST] + path: /resources/all/users.{_format} + controller: ::postUsersAction + +patch_users: + methods: [PATCH] + path: /resources/all/users.{_format} + controller: ::patchUsersAction + +put_user: + methods: [PUT] + path: /resources/all/users/{slug}.{_format} + controller: ::putUserAction + +patch_user: + methods: [PATCH] + path: /resources/all/users/{slug}.{_format} + controller: ::patchUserAction + +lock_user: + methods: [PATCH] + path: /resources/all/users/{slug}/lock.{_format} + controller: ::lockUserAction + +get_user_comments: + methods: [GET] + path: /resources/all/users/{slug}/comments.{_format} + controller: ::getUserCommentsAction + +get_user_comment: + methods: [GET] + path: /resources/all/users/{slug}/comments/{id}.{_format} + controller: ::getUserCommentAction + +delete_user_comment: + methods: [DELETE] + path: /resources/all/users/{slug}/comments/{id}.{_format} + controller: ::deleteUserCommentAction + +new_users: + methods: [GET] + path: /resources/all/users/new.{_format} + controller: ::newUsersAction + +new_user_comments: + methods: [GET] + path: /resources/all/users/{slug}/comments/new.{_format} + controller: ::newUserCommentsAction + +ban_user: + methods: [PATCH] + path: /resources/all/users/{slug}/ban.{_format} + controller: ::banUserAction + +post_user_comment_vote: + methods: [POST] + path: /resources/all/users/{slug}/comments/{id}/votes.{_format} + controller: ::postUserCommentVoteAction + +get_user_topics: + methods: [GET] + path: /resources/all/users/{slug}/topics.{_format} + controller: ::getTopics + +new_user_topics: + methods: [GET] + path: /resources/all/users/{slug}/topics/new.{_format} + controller: ::newTopics + +get_user_topic: + methods: [GET] + path: /resources/all/users/{slug}/topics/{title}.{_format} + controller: ::getTopic + +put_user_topic: + methods: [PUT] + path: /resources/all/users/{slug}/topics/{title}.{_format} + controller: ::putTopic + +hide_user_topic: + methods: [PATCH] + path: /resources/all/users/{slug}/topics/{title}/hide.{_format} + controller: ::hideTopic + +test_get_user_topic_comments: + methods: [GET] + path: /resources/all/users/{slug}/topics/{title}/additional/comments.{_format} + controller: ::getComments + +test_new_user_topic_comments: + methods: [GET] + path: /resources/all/users/{slug}/topics/{title}/additional/comments/new.{_format} + controller: ::newComments + +test_put_user_topic_comment: + methods: [PUT] + path: /resources/all/users/{slug}/topics/{title}/additional/comments/{id}.{_format} + controller: ::putComment + +test_ban_user_topic_comment: + methods: [PATCH] + path: /resources/all/users/{slug}/topics/{title}/additional/comments/{id}/ban.{_format} + controller: ::banComment diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/resource_controller.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/resource_controller.yml new file mode 100644 index 0000000..de23cfa --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/resource_controller.yml @@ -0,0 +1,99 @@ +options_articles: + methods: [OPTIONS] + path: /articles.{_format} + controller: ::optionsAction + +get_articles: + methods: [GET] + path: /articles.{_format} + controller: ::cgetAction + +get_article: + methods: [GET] + path: /articles/{slug}.{_format} + controller: ::getAction + +post_articles: + methods: [POST] + path: /articles.{_format} + controller: ::cpostAction + +patch_articles: + methods: [PATCH] + path: /articles.{_format} + controller: ::cpatchAction + +put_article: + methods: [PUT] + path: /articles/{slug}.{_format} + controller: ::putAction + +patch_article: + methods: [PATCH] + path: /articles/{slug}.{_format} + controller: ::patchAction + +lock_article: + methods: [PATCH] + path: /articles/{slug}/lock.{_format} + controller: ::lockAction + +get_article_comments: + methods: [GET] + path: /articles/{slug}/comments.{_format} + controller: ::getCommentsAction + +get_article_comment: + methods: [GET] + path: /articles/{slug}/comments/{id}.{_format} + controller: ::getCommentAction + +delete_article_comment: + methods: [DELETE] + path: /articles/{slug}/comments/{id}.{_format} + controller: ::deleteCommentAction + +new_article: + methods: [GET] + path: /articles/new.{_format} + controller: ::newAction + +new_article_comment: + methods: [GET] + path: /articles/{slug}/comments/new.{_format} + controller: ::newCommentAction + +ban_article: + methods: [PATCH] + path: /articles/{slug}/ban.{_format} + controller: ::banAction + +post_article_comment_vote: + methods: [POST] + path: /articles/{slug}/comments/{id}/votes.{_format} + controller: ::postCommentVoteAction + +check_articlename_article: + methods: [GET] + path: /articles/check_articlename.{_format} + controller: ::check_articlenameAction + +hide_article_comment: + methods: [PATCH] + path: /articles/{articleId}/comments/{commentId}/hide.{_format} + controller: ::hideCommentAction + +get_article_votes: + methods: [GET] + path: /articles/{slug}/votes.{_format} + controller: ::getVotesAction + +get_article_vote: + methods: [GET] + path: /articles/{slug}/votes/{id}.{_format} + controller: ::getVoteAction + +get_article_foos: + methods: [GET] + path: /articles/{slug}/foos.{_format} + controller: ::getFoosAction diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_collection.yml new file mode 100644 index 0000000..a2eadbf --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_collection.yml @@ -0,0 +1,114 @@ +get_users: + methods: [GET] + path: /users.{_format} + controller: ::getUsersAction + +get_user: + methods: [GET] + path: /users/{slug}.{_format} + controller: ::getUserAction + +post_users: + methods: [POST] + path: /users.{_format} + controller: ::postUsersAction + +patch_users: + methods: [PATCH] + path: /users.{_format} + controller: ::patchUsersAction + +put_user: + methods: [PUT] + path: /users/{slug}.{_format} + controller: ::putUserAction + +patch_user: + methods: [PATCH] + path: /users/{slug}.{_format} + controller: ::patchUserAction + +lock_user: + methods: [PATCH] + path: /users/{slug}/lock.{_format} + controller: ::lockUserAction + +get_user_comments: + methods: [GET] + path: /users/{slug}/comments.{_format} + controller: ::getUserCommentsAction + +get_user_comment: + methods: [GET] + path: /users/{slug}/comments/{id}.{_format} + controller: ::getUserCommentAction + +delete_user_comment: + methods: [DELETE] + path: /users/{slug}/comments/{id}.{_format} + controller: ::deleteUserCommentAction + +new_users: + methods: [GET] + path: /users/new.{_format} + controller: ::newUsersAction + +new_user_comments: + methods: [GET] + path: /users/{slug}/comments/new.{_format} + controller: ::newUserCommentsAction + +ban_user: + methods: [PATCH] + path: /users/{slug}/ban.{_format} + controller: ::banUserAction + +post_user_comment_vote: + methods: [POST] + path: /users/{slug}/comments/{id}/votes.{_format} + controller: ::postUserCommentVoteAction + +get_user_topics: + methods: [GET] + path: /users/{slug}/topics.{_format} + controller: ::getTopics + +new_user_topics: + methods: [GET] + path: /users/{slug}/topics/new.{_format} + controller: ::newTopics + +get_user_topic: + methods: [GET] + path: /users/{slug}/topics/{title}.{_format} + controller: ::getTopic + +put_user_topic: + methods: [PUT] + path: /users/{slug}/topics/{title}.{_format} + controller: ::putTopic + +hide_user_topic: + methods: [PATCH] + path: /users/{slug}/topics/{title}/hide.{_format} + controller: ::hideTopic + +get_user_topic_comments: + methods: [GET] + path: /users/{slug}/topics/{title}/comments.{_format} + controller: ::getComments + +new_user_topic_comments: + methods: [GET] + path: /users/{slug}/topics/{title}/comments/new.{_format} + controller: ::newComments + +put_user_topic_comment: + methods: [PUT] + path: /users/{slug}/topics/{title}/comments/{id}.{_format} + controller: ::putComment + +ban_user_topic_comment: + methods: [PATCH] + path: /users/{slug}/topics/{title}/comments/{id}/ban.{_format} + controller: ::banComment diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_controller.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_controller.yml new file mode 100644 index 0000000..d5607a6 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Etalon/users_controller.yml @@ -0,0 +1,104 @@ +get_users: + methods: [GET] + path: /users.{_format} + controller: ::getUsersAction + +get_user: + methods: [GET] + path: /users/{slug}.{_format} + controller: ::getUserAction + +post_users: + methods: [POST] + path: /users.{_format} + controller: ::postUsersAction + +patch_users: + methods: [PATCH] + path: /users.{_format} + controller: ::patchUsersAction + +put_user: + methods: [PUT] + path: /users/{slug}.{_format} + controller: ::putUserAction + +patch_user: + methods: [PATCH] + path: /users/{slug}.{_format} + controller: ::patchUserAction + +lock_user: + methods: [PATCH] + path: /users/{slug}/lock.{_format} + controller: ::lockUserAction + +get_user_comments: + methods: [GET] + path: /users/{slug}/comments.{_format} + controller: ::getUserCommentsAction + +get_user_comment: + methods: [GET] + path: /users/{slug}/comments/{id}.{_format} + controller: ::getUserCommentAction + +delete_user_comment: + methods: [DELETE] + path: /users/{slug}/comments/{id}.{_format} + controller: ::deleteUserCommentAction + +new_users: + methods: [GET] + path: /users/new.{_format} + controller: ::newUsersAction + +new_user_comments: + methods: [GET] + path: /users/{slug}/comments/new.{_format} + controller: ::newUserCommentsAction + +ban_user: + methods: [PATCH] + path: /users/{slug}/ban.{_format} + controller: ::banUserAction + +post_user_comment_vote: + methods: [POST] + path: /users/{slug}/comments/{id}/votes.{_format} + controller: ::postUserCommentVoteAction + +check_username_users: + methods: [GET] + path: /users/check_username.{_format} + controller: ::check_usernameUsersAction + +hide_user_comment: + methods: [PATCH] + path: /users/{userId}/comments/{commentId}/hide.{_format} + controller: ::hideUserCommentAction + +get_foo_bars: + methods: [GET] + path: /foos/{foo}/bars.{_format} + controller: ::getFooBarsAction + +get_user_votes: + methods: [GET] + path: /users/{slug}/votes.{_format} + controller: ::getUserVotesAction + +get_user_vote: + methods: [GET] + path: /users/{slug}/votes/{id}.{_format} + controller: ::getUserVoteAction + +get_user_foos: + methods: [GET] + path: /users/{slug}/foos.{_format} + controller: ::getUserFoosAction + +get_categories: + methods: [GET] + path: /categories.{_format} + controller: ::getCategoriesAction diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/base_named_prefixed_reports_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/base_named_prefixed_reports_collection.yml new file mode 100644 index 0000000..f50520c --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/base_named_prefixed_reports_collection.yml @@ -0,0 +1,5 @@ +report: + type: rest + resource: named_prefixed_reports_collection.yml + prefix: /base + name_prefix: base_ diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/named_prefixed_reports_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/named_prefixed_reports_collection.yml new file mode 100644 index 0000000..2f0dc73 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/named_prefixed_reports_collection.yml @@ -0,0 +1,4 @@ +report: + type: rest + resource: 'FOS\RestBundle\Tests\Fixtures\Controller\ReportController' + name_prefix: api_ diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.xml new file mode 100644 index 0000000..fd3ed3b --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.yml new file mode 100644 index 0000000..7476017 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/prefixed_users_collection.yml @@ -0,0 +1,16 @@ +users: + type: rest + resource: FOS\RestBundle\Tests\Fixtures\Controller\UsersController + prefix: /resources/all + +user_topics: + type: rest + resource: FOS\RestBundle\Tests\Fixtures\Controller\UserTopicsController + parent: users + +user_topic_comments: + type: rest + resource: FOS\RestBundle\Tests\Fixtures\Controller\UserTopicCommentsController + parent: user_topics + prefix: /additional + name_prefix: test_ diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.xml new file mode 100644 index 0000000..443ac36 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.xml @@ -0,0 +1,10 @@ + + + + FOSRestBundle:UsersController:getUsers + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.yml new file mode 100644 index 0000000..f115e65 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes.yml @@ -0,0 +1,4 @@ +get_users: + path: /users + defaults: + _controller: FOSRestBundle:UsersController:getUsers diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.xml new file mode 100644 index 0000000..a627999 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.xml @@ -0,0 +1,13 @@ + + + + FOSRestBundle:UsersController:getUsers + + [a-z]+ + home + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.yml new file mode 100644 index 0000000..4afc952 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/routes_with_options_requirements_and_defaults.yml @@ -0,0 +1,9 @@ +users: + type: rest + resource: FOS\RestBundle\Tests\Fixtures\Controller\UsersController + options: + expose: true + requirements: + slug: "[a-z]+" + defaults: + slug: home diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.xml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.xml new file mode 100644 index 0000000..5aeb4ba --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.yml new file mode 100644 index 0000000..b28bd3c --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Fixtures/Routes/users_collection.yml @@ -0,0 +1,13 @@ +users: + type: rest + resource: FOS\RestBundle\Tests\Fixtures\Controller\UsersController + +user_topics: + type: rest + resource: FOS\RestBundle\Tests\Fixtures\Controller\UserTopicsController + parent: users + +user_topic_comments: + type: rest + resource: FOS\RestBundle\Tests\Fixtures\Controller\UserTopicCommentsController + parent: user_topics diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/RequestBodyParamConverterController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/RequestBodyParamConverterController.php new file mode 100644 index 0000000..b97cf71 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/RequestBodyParamConverterController.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Functional\Bundle\TestBundle\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Response; + +class RequestBodyParamConverterController extends Controller +{ + public function putPostAction(Post $post) + { + return new Response($post->getName()); + } +} + +class Post +{ + private $name; + private $body; + + public function getName() + { + return $this->name; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getBody() + { + return $this->body; + } + + public function setBody($body) + { + $this->body = $body; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/SerializerErrorController.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/SerializerErrorController.php new file mode 100644 index 0000000..75d9ace --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Controller/SerializerErrorController.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Functional\Bundle\TestBundle\Controller; + +use FOS\RestBundle\Controller\Annotations\View; +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\Validator\Constraints\NotBlank; + +/** + * Controller to test serialization of various errors and exceptions. + * + * @author Florian Voutzinos + */ +class SerializerErrorController extends Controller +{ + /** + * @View + */ + public function exceptionAction() + { + throw new \Exception('Something bad happened.'); + } + + /** + * @View + */ + public function invalidFormAction() + { + $form = $this->createFormBuilder(null, array( + 'csrf_protection' => false, + ))->add('name', 'text', array( + 'constraints' => array(new NotBlank()), + ))->getForm(); + + $form->submit(array()); + + return $form; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml new file mode 100644 index 0000000..f96794d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml @@ -0,0 +1,11 @@ +request_body_param_converter: + path: /body-converter + defaults: { _controller: TestBundle:RequestBodyParamConverter:putPost } + +test_serializer_error_exception: + path: /serializer-error/exception.{_format} + defaults: { _controller: TestBundle:SerializerError:exception } + +test_serializer_error_invalid_form: + path: /serializer-error/invalid-form.{_format} + defaults: { _controller: TestBundle:SerializerError:invalidForm } diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/TestBundle.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/TestBundle.php new file mode 100644 index 0000000..e4c25ca --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/Bundle/TestBundle/TestBundle.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Functional\Bundle\TestBundle; + +use Symfony\Component\HttpKernel\Bundle\Bundle; + +class TestBundle extends Bundle +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/RequestBodyParamConverterTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/RequestBodyParamConverterTest.php new file mode 100644 index 0000000..41134e8 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/RequestBodyParamConverterTest.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Functional; + +class RequestBodyParamConverterTest extends WebTestCase +{ + public function testRequestBodyIsDeserialized() + { + $client = $this->createClient(array('test_case' => 'RequestBodyParamConverter')); + $client->request( + 'POST', + '/body-converter', + array(), + array(), + array('CONTENT_TYPE' => 'application/json'), + '{"name": "Post 1", "body": "This is a blog post"}' + ); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame('Post 1', $client->getResponse()->getContent()); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/SerializerErrorTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/SerializerErrorTest.php new file mode 100644 index 0000000..a2e1be7 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/SerializerErrorTest.php @@ -0,0 +1,141 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Functional; + +/** + * Test class for serialization errors and exceptions. + * + * @author Florian Voutzinos + */ +class SerializerErrorTest extends WebTestCase +{ + /** + * @dataProvider serializeExceptionJsonProvider + */ + public function testSerializeExceptionJson($testCase, $expectedContent) + { + $this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul'); + + $client = $this->createClient(array('test_case' => $testCase)); + $client->request('GET', '/serializer-error/exception.json'); + + $this->assertEquals($expectedContent, $client->getResponse()->getContent()); + } + + public function serializeExceptionJsonProvider() + { + return array( + array('Serializer', '{"code":500,"message":"Something bad happened.","errors":null}'), + array('JMSSerializer', '{"code":500,"message":"Something bad happened."}'), + ); + } + + /** + * @dataProvider serializeExceptionXmlProvider + */ + public function testSerializeExceptionXml($testCase, $expectedContent) + { + $this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul'); + + $client = $this->createClient(array('test_case' => $testCase)); + $client->request('GET', '/serializer-error/exception.xml'); + + $this->assertEquals($expectedContent, $client->getResponse()->getContent()); + } + + public function serializeExceptionXmlProvider() + { + $expectedSerializerContent = << +500Something bad happened. + +XML; + + $expectedJMSContent = << + + 500 + + + + +XML; + + return array( + array('Serializer', $expectedSerializerContent), + array('JMSSerializer', $expectedJMSContent), + ); + } + + /** + * @dataProvider serializeInvalidFormJsonProvider + */ + public function testSerializeInvalidFormJson($testCase, $expectedContent) + { + $client = $this->createClient(array('test_case' => $testCase)); + $client->request('GET', '/serializer-error/invalid-form.json'); + + $this->assertEquals($expectedContent, $client->getResponse()->getContent()); + } + + public function serializeInvalidFormJsonProvider() + { + return array( + array('Serializer', '{"code":400,"message":"Validation Failed","errors":{"children":{"name":{"errors":["This value should not be blank."]}}}}'), + array('JMSSerializer', '{"code":400,"message":"Validation Failed","errors":{"children":{"name":{"errors":["This value should not be blank."]}}}}'), + ); + } + + /** + * @dataProvider serializeInvalidFormXmlProvider + */ + public function testSerializeInvalidFormXml($testCase, $expectedContent) + { + $client = $this->createClient(array('test_case' => $testCase)); + $client->request('GET', '/serializer-error/invalid-form.xml'); + + $this->assertEquals($expectedContent, $client->getResponse()->getContent()); + } + + public function serializeInvalidFormXmlProvider() + { + $expectedSerializerContent = << +400Validation FailedThis value should not be blank. + +XML; + + $expectedJMSContent = << + + 400 + + +
    + + + + + + + +
    +
    + +XML; + + return array( + array('Serializer', $expectedSerializerContent), + array('JMSSerializer', $expectedJMSContent), + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/WebTestCase.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/WebTestCase.php new file mode 100644 index 0000000..ff87488 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/WebTestCase.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Functional; + +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase as BaseWebTestCase; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\HttpKernel\Kernel; + +class WebTestCase extends BaseWebTestCase +{ + protected function deleteTmpDir($testCase) + { + if (!file_exists($dir = sys_get_temp_dir().'/'.Kernel::VERSION.'/'.$testCase)) { + return; + } + + $fs = new Filesystem(); + $fs->remove($dir); + } + + protected static function getKernelClass() + { + require_once __DIR__.'/app/AppKernel.php'; + + return 'FOS\RestBundle\Tests\Functional\app\AppKernel'; + } + + protected static function createKernel(array $options = array()) + { + $class = self::getKernelClass(); + + if (!isset($options['test_case'])) { + throw new \InvalidArgumentException('The option "test_case" must be set.'); + } + + return new $class( + $options['test_case'], + isset($options['root_config']) ? $options['root_config'] : 'config.yml', + isset($options['environment']) ? $options['environment'] : 'fosrestbundletest'.strtolower($options['test_case']), + isset($options['debug']) ? $options['debug'] : true + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/AppKernel.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/AppKernel.php new file mode 100644 index 0000000..1d80d0b --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/AppKernel.php @@ -0,0 +1,115 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Functional\app; + +// get the autoload file +$dir = __DIR__; +$lastDir = null; +while ($dir !== $lastDir) { + $lastDir = $dir; + + if (file_exists($dir.'/autoload.php')) { + require_once $dir.'/autoload.php'; + break; + } + + if (file_exists($dir.'/autoload.php.dist')) { + require_once $dir.'/autoload.php.dist'; + break; + } + + if (file_exists($dir.'/vendor/autoload.php')) { + require_once $dir.'/vendor/autoload.php'; + break; + } + + $dir = dirname($dir); +} + +use Symfony\Component\Config\Loader\LoaderInterface; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\HttpKernel\Kernel; + +/** + * App Test Kernel for functional tests. + * + * @author Johannes M. Schmitt + */ +class AppKernel extends Kernel +{ + private $testCase; + private $rootConfig; + + public function __construct($testCase, $rootConfig, $environment, $debug) + { + if (!is_dir(__DIR__.'/'.$testCase)) { + throw new \InvalidArgumentException(sprintf('The test case "%s" does not exist.', $testCase)); + } + $this->testCase = $testCase; + + $fs = new Filesystem(); + if (!$fs->isAbsolutePath($rootConfig) && !file_exists($rootConfig = __DIR__.'/'.$testCase.'/'.$rootConfig)) { + throw new \InvalidArgumentException(sprintf('The root config "%s" does not exist.', $rootConfig)); + } + $this->rootConfig = $rootConfig; + + parent::__construct($environment, $debug); + } + + public function registerBundles() + { + if (!file_exists($filename = $this->getRootDir().'/'.$this->testCase.'/bundles.php')) { + throw new \RuntimeException(sprintf('The bundles file "%s" does not exist.', $filename)); + } + + return include $filename; + } + + public function getRootDir() + { + return __DIR__; + } + + public function getCacheDir() + { + return sys_get_temp_dir().'/'.Kernel::VERSION.'/'.$this->testCase.'/cache/'.$this->environment; + } + + public function getLogDir() + { + return sys_get_temp_dir().'/'.Kernel::VERSION.'/'.$this->testCase.'/logs'; + } + + public function registerContainerConfiguration(LoaderInterface $loader) + { + $loader->load($this->rootConfig); + } + + public function serialize() + { + return serialize(array($this->testCase, $this->rootConfig, $this->getEnvironment(), $this->isDebug())); + } + + public function unserialize($str) + { + $a = unserialize($str); + $this->__construct($a[0], $a[1], $a[2], $a[3]); + } + + protected function getKernelParameters() + { + $parameters = parent::getKernelParameters(); + $parameters['kernel.test_case'] = $this->testCase; + + return $parameters; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/bundles.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/bundles.php new file mode 100644 index 0000000..dbddcb1 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/bundles.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return array( + new \Symfony\Bundle\FrameworkBundle\FrameworkBundle(), + new \JMS\SerializerBundle\JMSSerializerBundle(), + new \FOS\RestBundle\FOSRestBundle(), + new \FOS\RestBundle\Tests\Functional\Bundle\TestBundle\TestBundle(), +); diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/config.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/config.yml new file mode 100644 index 0000000..a48e6f9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/JMSSerializer/config.yml @@ -0,0 +1,8 @@ +imports: + - { resource: ../config/default.yml } + +fos_rest: + view: + view_response_listener: 'force' + exception: + enabled: true diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/bundles.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/bundles.php new file mode 100644 index 0000000..6227d14 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/bundles.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return array( + new \Symfony\Bundle\FrameworkBundle\FrameworkBundle(), + new \FOS\RestBundle\FOSRestBundle(), + new \FOS\RestBundle\Tests\Functional\Bundle\TestBundle\TestBundle(), + new \Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), +); diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/config.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/config.yml new file mode 100644 index 0000000..631d33f --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/RequestBodyParamConverter/config.yml @@ -0,0 +1,20 @@ +imports: + - { resource: ../config/default.yml } + +framework: + serializer: + enabled: true + +fos_rest: + body_converter: + enabled: true + +sensio_framework_extra: + request: + converters: true + +services: + get_set_method_normalizer: + class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer + tags: + - { name: serializer.normalizer } diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/bundles.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/bundles.php new file mode 100644 index 0000000..3a03eba --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/bundles.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return array( + new \Symfony\Bundle\FrameworkBundle\FrameworkBundle(), + new \FOS\RestBundle\FOSRestBundle(), + new \FOS\RestBundle\Tests\Functional\Bundle\TestBundle\TestBundle(), +); diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/config.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/config.yml new file mode 100644 index 0000000..3b7a6f0 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/Serializer/config.yml @@ -0,0 +1,12 @@ +imports: + - { resource: ../config/default.yml } + +framework: + serializer: + enabled: true + +fos_rest: + view: + view_response_listener: 'force' + exception: + enabled: true diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/default.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/default.yml new file mode 100644 index 0000000..8ddd7ed --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/default.yml @@ -0,0 +1,2 @@ +imports: + - { resource: framework.yml } diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/framework.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/framework.yml new file mode 100644 index 0000000..d6e38b4 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/framework.yml @@ -0,0 +1,11 @@ +framework: + secret: test + router: { resource: "%kernel.root_dir%/config/routing.yml" } + test: ~ + form: ~ + csrf_protection: ~ + session: + storage_id: session.storage.mock_file + default_locale: en + templating: + engines: ['php'] diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/routing.yml b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/routing.yml new file mode 100644 index 0000000..0f2e664 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Functional/app/config/routing.yml @@ -0,0 +1,2 @@ +test_bundle: + resource: @TestBundle/Resources/config/routing.yml diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Normalizer/CamelKeysNormalizerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Normalizer/CamelKeysNormalizerTest.php new file mode 100644 index 0000000..2f90e8f --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Normalizer/CamelKeysNormalizerTest.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Normalizer; + +use FOS\RestBundle\Normalizer\CamelKeysNormalizer; + +class CamelKeysNormalizerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @expectedException \FOS\RestBundle\Normalizer\Exception\NormalizationException + */ + public function testNormalizeSameValueException() + { + $normalizer = new CamelKeysNormalizer(); + $normalizer->normalize(array( + 'foo' => array( + 'foo_bar' => 'foo', + 'foo_Bar' => 'foo', + ), + )); + } + + /** + * @dataProvider normalizeProvider + */ + public function testNormalize(array $array, array $expected) + { + $normalizer = new CamelKeysNormalizer(); + $this->assertEquals($expected, $normalizer->normalize($array)); + } + + public function normalizeProvider() + { + return array( + array(array(), array()), + array( + array('foo' => array('Foo_bar_baz' => array('foo_Bar' => array('foo_bar' => 'foo_bar'))), + 'foo_1ar' => array('foo_bar'), + ), + array('foo' => array('FooBarBaz' => array('fooBar' => array('fooBar' => 'foo_bar'))), + 'foo1ar' => array('foo_bar'), + ), + ), + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/AbstractRequestBodyParamConverterTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/AbstractRequestBodyParamConverterTest.php new file mode 100644 index 0000000..ecd6358 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/AbstractRequestBodyParamConverterTest.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Request; + +use Symfony\Component\HttpFoundation\Request; + +/** + * @author Tyler Stroud + */ +abstract class AbstractRequestBodyParamConverterTest extends \PHPUnit_Framework_TestCase +{ + protected function createConfiguration($class = null, $name = null, $options = null) + { + $config = $this->getMockBuilder('Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter') + ->disableOriginalConstructor() + ->setMethods(array('getClass', 'getAliasName', 'getOptions', 'getName', 'allowArray')) + ->getMock(); + + if ($name !== null) { + $config->expects($this->any()) + ->method('getName') + ->will($this->returnValue($name)); + } + + if ($class !== null) { + $config->expects($this->any()) + ->method('getClass') + ->will($this->returnValue($class)); + } + + if ($options !== null) { + $config->expects($this->any()) + ->method('getOptions') + ->will($this->returnValue($options)); + } + + return $config; + } + + protected function createRequest($body = null, $contentType = null) + { + $request = new Request( + array(), + array(), + array(), + array(), + array(), + array(), + $body + ); + $request->headers->set('CONTENT_TYPE', $contentType); + + return $request; + } + + protected function createDeserializationContext($groups = null, $version = null) + { + $context = $this->getMock('JMS\Serializer\DeserializationContext'); + if (null !== $groups) { + $context->expects($this->once()) + ->method('setGroups') + ->with($groups); + } + if (null !== $version) { + $context->expects($this->once()) + ->method('setVersion') + ->with($version); + } + + return $context; + } +} + +class Post +{ + public $name; + public $body; + + public function __construct($name, $body) + { + $this->name = $name; + $this->body = $body; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamFetcherTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamFetcherTest.php new file mode 100644 index 0000000..982ca28 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamFetcherTest.php @@ -0,0 +1,757 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Request; + +use FOS\RestBundle\Controller\Annotations\RequestParam; +use FOS\RestBundle\Controller\Annotations\QueryParam; +use FOS\RestBundle\Request\ParamFetcher; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\Validator\Constraints\Regex; +use Symfony\Component\Validator\ConstraintViolation; +use Symfony\Component\Validator\ConstraintViolationList; + +/** + * ParamFetcher test. + * + * @author Alexander + * @author Boris Guéry + */ +class ParamFetcherTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var array + */ + private $controller; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $paramReader; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $validator; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $violationFormatter; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $constraint; + + /** + * Test setup. + */ + public function setup() + { + $this->controller = array(new \stdClass(), 'indexAction'); + + $this->paramReader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $this->constraint = $this->getMockForAbstractClass('Symfony\Component\Validator\Constraint'); + + $annotations = array(); + $annotations['foo'] = new QueryParam(); + $annotations['foo']->name = 'foo'; + $annotations['foo']->requirements = '\d+'; + $annotations['foo']->default = '1'; + $annotations['foo']->description = 'The foo'; + $annotations['foo']->nullable = false; + + $annotations['bar'] = new RequestParam(); + $annotations['bar']->name = 'bar'; + $annotations['bar']->requirements = '\d+'; + $annotations['bar']->description = 'The bar'; + + $annotations['baz'] = new RequestParam(); + $annotations['baz']->name = 'baz'; + $annotations['baz']->requirements = '\d?'; + + $annotations['buzz'] = new QueryParam(); + $annotations['buzz']->array = true; + $annotations['buzz']->name = 'buzz'; + $annotations['buzz']->requirements = '\d+'; + $annotations['buzz']->default = '1'; + $annotations['buzz']->nullable = false; + $annotations['buzz']->description = 'An array'; + + $annotations['boo'] = new QueryParam(); + $annotations['boo']->array = true; + $annotations['boo']->name = 'boo'; + $annotations['boo']->description = 'An array with no default value'; + + $annotations['boozz'] = new QueryParam(); + $annotations['boozz']->name = 'boozz'; + $annotations['boozz']->requirements = '\d+'; + $annotations['boozz']->description = 'A scalar param with no default value (an optional limit param for example)'; + + $annotations['biz'] = new QueryParam(); + $annotations['biz']->name = 'biz'; + $annotations['biz']->key = 'business'; + $annotations['biz']->requirements = '\d+'; + $annotations['biz']->default = null; + $annotations['biz']->nullable = true; + $annotations['biz']->description = 'A scalar param with an explicitly defined null default'; + + $annotations['arr'] = new RequestParam(); + $annotations['arr']->name = 'arr'; + $annotations['arr']->array = true; + + $annotations['arr_null_strict'] = new RequestParam(); + $annotations['arr_null_strict']->name = 'arr_null_strict'; + $annotations['arr_null_strict']->array = true; + $annotations['arr_null_strict']->nullable = true; + $annotations['arr_null_strict']->strict = true; + + $annotations['moo'] = new QueryParam(); + $annotations['moo']->name = 'mooh'; + $annotations['moo']->key = 'moo'; + $annotations['moo']->requirements = '\d+'; + $annotations['moo']->default = null; + $annotations['moo']->nullable = true; + $annotations['moo']->allowBlank = false; + $annotations['moo']->description = 'A scalar param with an explicitly defined null default'; + + $annotations['i_cant_be_with_moo'] = new QueryParam(); + $annotations['i_cant_be_with_moo']->name = 'its_likely_a_bug_from_client_side_if_i_m_with_moo'; + $annotations['i_cant_be_with_moo']->key = 'i_cant_be_with_moo'; + $annotations['i_cant_be_with_moo']->requirements = '\d+'; + $annotations['i_cant_be_with_moo']->default = null; + $annotations['i_cant_be_with_moo']->nullable = true; + $annotations['i_cant_be_with_moo']->incompatibles = array('moo'); + $annotations['i_cant_be_with_moo']->description = 'A scalar param that can not be present in the same request with a given other parameter'; + + $this->paramReader + ->expects($this->any()) + ->method('read') + ->will($this->returnValue($annotations)); + + $this->validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); + $this->violationFormatter = $this->getMock('FOS\RestBundle\Util\ViolationFormatterInterface'); + } + + /** + * Get a param fetcher. + * + * @param array $query Query parameters for the request. + * @param array $request Request parameters for the request. + * @param array $attributes Attributes for the request. + * + * @return ParamFetcher + */ + public function getParamFetcher($query = array(), $request = array(), $attributes = null) + { + $attributes = $attributes ?: array('_controller' => __CLASS__.'::stubAction'); + + $req = new Request($query, $request, $attributes); + + return new ParamFetcher($this->paramReader, $req, $this->violationFormatter, $this->validator); + } + + /** + * Test valid parameters. + * + * @param string $param which param to test + * @param string $expected Expected query parameter value. + * @param string $expectedAll Expected query parameter values. + * @param array $query Query parameters for the request. + * @param array $request Request parameters for the request. + * @param \Closure $callback Callback to be applied on the validator + * + * @dataProvider validatesConfiguredParamDataProvider + */ + public function testValidatesConfiguredParam($param, $expected, $expectedAll, $query, $request, \Closure $callback = null) + { + if (null !== $callback) { + $self = $this; + $validator = $this->validator; + $callback($validator, $self); + } + + $queryFetcher = $this->getParamFetcher($query, $request); + $queryFetcher->setController($this->controller); + + $this->assertEquals($expected, $queryFetcher->get($param)); + $this->assertEquals($expectedAll, $queryFetcher->all()); + } + + /** + * Data provider for the valid parameters test. + * + * @return array Data + */ + public static function validatesConfiguredParamDataProvider() + { + return array( + array( // check that non-strict missing params take default value + 'foo', + '1', + array('foo' => '1', 'bar' => '2', 'baz' => '4', 'buzz' => array(1), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array(), + array('bar' => '2', 'baz' => '4', 'arr' => array()), + ), + array( // pass Param in GET + 'foo', + '42', + array('foo' => '42', 'bar' => '2', 'baz' => '4', 'buzz' => array(1), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('foo' => '42'), + array('bar' => '2', 'baz' => '4', 'arr' => array()), + ), + array( // check that invalid non-strict params take default value + 'foo', + '1', + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(1), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('foo' => 'bar'), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + function (\PHPUnit_Framework_MockObject_MockObject $validator, \PHPUnit_Framework_TestCase $self) { + $errors = new ConstraintViolationList(array( + new ConstraintViolation('expected error', null, array(), null, null, null), + )); + + $validator->expects($self->at(0)) + ->method('validateValue') + ->with('bar', new Regex(array('pattern' => '#^\\d+$#xsu', 'message' => "Query parameter value 'bar', does not match requirements '\\d+'")), null) + ->will($self->returnValue($errors)); + $validator->expects($self->at(1)) + ->method('validateValue') + ->with('bar', new Regex(array('pattern' => '#^\\d+$#xsu', 'message' => "Query parameter value 'bar', does not match requirements '\\d+'")), null) + ->will($self->returnValue($errors)); + + }, + ), + array( // nullable array with strict + 'arr_null_strict', + array(), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(1), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array(), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + array( // invalid array + 'buzz', + array(1), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(1), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => 'invaliddata'), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + array( // invalid array (multiple depth) + 'buzz', + array(1), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(1), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(array(1))), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + + array( // multiple array + 'buzz', + array(2, 3, 4), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 3, 4)), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + array( // multiple array with one invalid value + 'buzz', + array(2, 1, 4), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 1, 4), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 'invaliddata', 4)), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + function (\PHPUnit_Framework_MockObject_MockObject $validator, \PHPUnit_Framework_TestCase $self) { + $errors = new ConstraintViolationList(array( + new ConstraintViolation('expected error', null, array(), null, null, null), + )); + + $validator->expects($self->at(1)) + ->method('validateValue') + ->with('invaliddata', new Regex(array('pattern' => '#^\\d+$#xsu', 'message' => "Query parameter value 'invaliddata', does not match requirements '\\d+'")), null) + ->will($self->returnValue($errors)); + + $validator->expects($self->at(6)) + ->method('validateValue') + ->with('invaliddata', new Regex(array('pattern' => '#^\\d+$#xsu', 'message' => "Query parameter value 'invaliddata', does not match requirements '\\d+'")), null) + ->will($self->returnValue($errors)); + }, + ), + array( // Array not provided in GET query + 'boo', + array(), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 3, 4)), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + array( // QueryParam provided in GET query but as a scalar + 'boo', + array(), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array(), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 3, 4), 'boo' => 'scalar'), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + array( // QueryParam provided in GET query with valid values + 'boo', + array('1', 'foo', 5), + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5)), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + array( // QueryParam provided in GET query with valid values + 'boozz', + null, + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => null, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5)), + array('bar' => '1', 'baz' => '4', 'arr' => array()), + ), + array( // QueryParam provided in GET query with valid values + 'boozz', + 5, + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => 5, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => null, 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => 5), + array('bar' => '1', 'baz' => '4', 'boozz' => 5, 'arr' => array()), + ), + array( // QueryParam provided in GET query with valid values + 'moo', + 'string', + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => 5, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => 'string', 'i_cant_be_with_moo' => null), + array('buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => 5, 'moo' => 'string'), + array('bar' => '1', 'baz' => '4', 'boozz' => 5, 'arr' => array()), + ), + array( // QueryParam provided in GET query with valid values + 'i_cant_be_with_moo', + 5, + array('foo' => '1', 'bar' => '1', 'baz' => '4', 'buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => 5, 'biz' => null, 'arr' => array(), 'arr_null_strict' => array(),'moo' => null, 'i_cant_be_with_moo' => 5), + array('buzz' => array(2, 3, 4), 'boo' => array('1', 'foo', 5), 'boozz' => 5, 'i_cant_be_with_moo' => 5), + array('bar' => '1', 'baz' => '4', 'boozz' => 5, 'arr' => array()), + ), + + ); + } + + public function testValidatesAddParam() + { + $queryFetcher = $this->getParamFetcher(array(), array('bar' => '2', 'baz' => '4', 'bub' => '10', 'arr' => array())); + $queryFetcher->setController($this->controller); + + $runtimeParam = new RequestParam(); + $runtimeParam->name = 'bub'; + $runtimeParam->requirements = '\d+'; + $runtimeParam->description = 'The bub'; + $queryFetcher->addParam($runtimeParam); + + $this->assertEquals(10, $queryFetcher->get('bub')); + $this->assertEquals(array('foo' => '1', 'bar' => '2', 'baz' => '4', 'buzz' => array(1), 'boo' => array(), 'boozz' => null, 'biz' => null, 'bub' => 10, 'arr' => array(), 'arr_null_strict' => array(), 'moo' => '', 'i_cant_be_with_moo' => null), $queryFetcher->all()); + } + + public function testValidatesConfiguredParamStrictly() + { + $constraint = new Regex(array( + 'pattern' => '#^\d+$#xsu', + 'message' => "Query parameter value '354', does not match requirements '\\d+'", + )); + + $this->validator->expects($this->once()) + ->method('validateValue') + ->with('354', $constraint) + ; + + $queryFetcher = $this->getParamFetcher(array('boozz' => 354), array()); + $queryFetcher->setController($this->controller); + $this->assertEquals(354, $queryFetcher->get('boozz', true)); + + $queryFetcher = $this->getParamFetcher(array(), array()); + $queryFetcher->setController($this->controller); + try { + $queryFetcher->get('boozz', true); + $this->fail('Fetching get() in strict mode with no default value did not throw an exception'); + } catch (HttpException $e) { + } + + $queryFetcher = $this->getParamFetcher(array(), array()); + $queryFetcher->setController($this->controller); + $this->assertNull($queryFetcher->get('biz', true)); + } + + /** + * Throw exception on invalid parameters. + * + * @dataProvider exceptionOnValidatesFailureDataProvider + */ + public function testExceptionOnValidatesFailure($query, $request, $param, \Closure $callback = null) + { + if (null !== $callback) { + $self = $this; + $validator = $this->validator; + $callback($validator, $self); + } + + $queryFetcher = $this->getParamFetcher($query, $request); + $queryFetcher->setController($this->controller); + + try { + try { + $queryFetcher->get($param, true); + $this->fail('Fetching get() in strict mode did not throw an exception'); + } catch (HttpException $e) { + try { + $queryFetcher->all(true); + $this->fail('Fetching all() in strict mode did not throw an exception'); + } catch (HttpException $e) { + return; + } + } + } catch (\Exception $e) { + $this->fail('Fetching in strict mode did not throw an Symfony\Component\HttpKernel\Exception\HttpException'); + } + } + + /** + * @return array Data + */ + public static function exceptionOnValidatesFailureDataProvider() + { + return array( + array( // test missing 'arr' request param of array type + array('boozz' => 'foo'), + array('bar' => 'foo', 'baz' => 'foo'), + 'arr', + ), + array( // test param present with an other param declared as incompatible + array('i_cant_be_with_moo' => 42, 'moo' => 'plop'), + array(), + 'i_cant_be_with_moo', + ), + array( // test missing strict param + array(), + array(), + 'bar', + ), + array( // test invalid strict param + array(), + array('bar' => 'foo'), + 'bar', + function (\PHPUnit_Framework_MockObject_MockObject $validator, \PHPUnit_Framework_TestCase $self) { + $errors = new ConstraintViolationList(array( + new ConstraintViolation('expected error', null, array(), null, null, null), + )); + + $validator->expects($self->at(0)) + ->method('validateValue') + ->with('foo', new Regex(array('pattern' => '#^\\d+$#xsu', 'message' => "Request parameter value 'foo', does not match requirements '\\d+'")), null) + ->will($self->returnValue($errors)); + + $validator->expects($self->at(1)) + ->method('validateValue') + ->with('foo', new Regex(array('pattern' => '#^\\d+$#xsu', 'message' => "Request parameter value 'foo', does not match requirements '\\d+'")), null) + ->will($self->returnValue($errors)); + }, + ), + array( // test missing strict param with lax requirement + array(), + array('baz' => 'foo'), + 'baz', + function (\PHPUnit_Framework_MockObject_MockObject $validator, \PHPUnit_Framework_TestCase $self) { + $errors = new ConstraintViolationList(array( + new ConstraintViolation('expected error', null, array(), null, null, null), + )); + + $validator->expects($self->at(0)) + ->method('validateValue') + ->with('foo', new Regex(array('pattern' => '#^\\d?$#xsu', 'message' => "Request parameter value 'foo', does not match requirements '\\d?'")), null) + ->will($self->returnValue($errors)); + }, + ), + ); + } + + /** + * @expectedException LogicException + * @expectedExceptionMessage Controller and method needs to be set via setController + */ + public function testExceptionOnRequestWithoutController() + { + $queryFetcher = new ParamFetcher($this->paramReader, new Request(), $this->violationFormatter, $this->validator); + $queryFetcher->get('none', '42'); + } + + /** + * @expectedException LogicException + * @expectedExceptionMessage Controller and method needs to be set via setController + */ + public function testExceptionOnNoController() + { + $queryFetcher = $this->getParamFetcher(); + $queryFetcher->setController(array()); + $queryFetcher->get('none', '42'); + } + + /** + * @expectedException LogicException + * @expectedExceptionMessage Controller needs to be set as a class instance (closures/functions are not supported) + */ + public function testExceptionOnNonController() + { + $queryFetcher = $this->getParamFetcher(); + $queryFetcher->setController(array('foo', 'bar')); + $queryFetcher->get('none', '42'); + } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessage No @QueryParam/@RequestParam configuration for parameter 'none'. + */ + public function testExceptionOnNonConfiguredParameter() + { + $queryFetcher = $this->getParamFetcher(); + $queryFetcher->setController($this->controller); + $queryFetcher->get('none', '42'); + } + + public function testKeyPrecedenceOverName() + { + $queryFetcher = $this->getParamFetcher(array('business' => 5)); + $queryFetcher->setController($this->controller); + $this->assertEquals(5, $queryFetcher->get('biz')); + } + + /** + * Test an Exception is thrown in strict mode. + */ + public function testConstraintThrowExceptionInStrictMode() + { + $errors = new ConstraintViolationList(array( + new ConstraintViolation('expected message 1', null, array(), null, null, null), + new ConstraintViolation('expected message 2', null, array(), null, null, null), + )); + + $this->validator->expects($this->once()) + ->method('validateValue') + ->with('foobar', $this->constraint) + ->will($this->returnValue($errors)); + + $param = new QueryParam(); + $param->name = 'bizoo'; + $param->strict = true; + $param->requirements = $this->constraint; + $param->description = 'A requirements param'; + + $request = new Request(array('bizoo' => 'foobar'), array(), array('_controller' => __CLASS__.'::stubAction')); + $reader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $reader->expects($this->any()) + ->method('read') + ->will($this->returnValue(array('bizoo' => $param))); + + $this->violationFormatter->expects($this->once()) + ->method('formatList') + ->will($this->returnValue('foobar')); + + $this->setExpectedException( + '\\Symfony\\Component\\HttpKernel\\Exception\\BadRequestHttpException', + 'foobar' + ); + + $queryFetcher = new ParamFetcher($reader, $request, $this->violationFormatter, $this->validator); + $queryFetcher->setController($this->controller); + $queryFetcher->get('bizoo'); + } + + /** + * Test that the default value is returned in safe mode. + */ + public function testConstraintReturnDefaultInSafeMode() + { + $violation1 = $this->getMockBuilder('Symfony\Component\Validator\ConstraintViolation') + ->disableOriginalConstructor() + ->getMock(); + + $violation1->expects($this->never())->method('getMessage'); + + $this->validator->expects($this->once()) + ->method('validateValue') + ->with('foobar', $this->constraint) + ->will($this->returnValue(array($violation1))); + + $param = new QueryParam(); + $param->name = 'bizoo'; + $param->requirements = $this->constraint; + $param->default = 'expected'; + $param->description = 'A requirements param'; + + $request = new Request(array('bizoo' => 'foobar'), array(), array('_controller' => __CLASS__.'::stubAction')); + $reader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $reader->expects($this->any()) + ->method('read') + ->will($this->returnValue(array('bizoo' => $param))); + + $queryFetcher = new ParamFetcher($reader, $request, $this->violationFormatter, $this->validator); + $queryFetcher->setController($this->controller); + $this->assertEquals('expected', $queryFetcher->get('bizoo')); + } + + /** + * Test a succesful return with a requirements. + */ + public function testConstraintOk() + { + $this->validator->expects($this->once()) + ->method('validateValue') + ->with('foobar', $this->constraint) + ->will($this->returnValue(array())); + + $param = new QueryParam(); + $param->name = 'bizoo'; + $param->requirements = $this->constraint; + $param->default = 'not expected'; + $param->description = 'A requirements param'; + + $request = new Request(array('bizoo' => 'foobar'), array(), array('_controller' => __CLASS__.'::stubAction')); + $reader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $reader->expects($this->any()) + ->method('read') + ->will($this->returnValue(array('bizoo' => $param))); + + $queryFetcher = new ParamFetcher($reader, $request, $this->violationFormatter, $this->validator); + $queryFetcher->setController($this->controller); + $this->assertEquals('foobar', $queryFetcher->get('bizoo')); + } + + /** + * Test that we can use deep array structure with a requirements. + */ + public function testDeepArrayAllowedWithConstraint() + { + $this->validator->expects($this->once()) + ->method('validateValue') + ->with(array('foo' => array('b', 'a', 'r')), $this->constraint) + ->will($this->returnValue(array())); + + $param = new QueryParam(); + $param->name = 'bizoo'; + $param->requirements = $this->constraint; + $param->default = 'not expected'; + $param->description = 'A requirements param'; + + $request = new Request(array('bizoo' => array('foo' => array('b', 'a', 'r'))), array(), array('_controller' => __CLASS__.'::stubAction')); + $reader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $reader->expects($this->any()) + ->method('read') + ->will($this->returnValue(array('bizoo' => $param))); + + $queryFetcher = new ParamFetcher($reader, $request, $this->violationFormatter, $this->validator); + $queryFetcher->setController($this->controller); + $this->assertSame(array('foo' => array('b', 'a', 'r')), $queryFetcher->get('bizoo')); + } + + /** + * @expectedException \RuntimeException + * @expectedExceptionMessage The ParamFetcher requirements feature requires the symfony/validator component. + */ + public function testNullValidatorWithRequirements() + { + $param = new QueryParam(); + $param->name = 'bizoo'; + $param->requirements = '\d+'; + $param->default = 'not expected'; + $param->description = 'A requirements param'; + + $request = new Request(array('bizoo' => 'foobar'), array(), array('_controller' => __CLASS__.'::stubAction')); + $reader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $reader->expects($this->any()) + ->method('read') + ->will($this->returnValue(array('bizoo' => $param))); + + $queryFetcher = new ParamFetcher($reader, $request, $this->violationFormatter); + $queryFetcher->setController($this->controller); + $queryFetcher->get('bizoo'); + } + + public function testNullValidatorWithoutRequirements() + { + $param = new QueryParam(); + $param->name = 'bizoo'; + $param->default = 'not expected'; + $param->description = 'A param without requirement nor validator'; + + $request = new Request(array('bizoo' => 'foobar'), array(), array('_controller' => __CLASS__.'::stubAction')); + $reader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $reader->expects($this->any()) + ->method('read') + ->will($this->returnValue(array('bizoo' => $param))); + + $queryFetcher = new ParamFetcher($reader, $request, $this->violationFormatter); + $queryFetcher->setController($this->controller); + $this->assertEquals('foobar', $queryFetcher->get('bizoo')); + } + + public function testCustomErrorMessage() + { + $param = new QueryParam(); + $param->name = 'fero'; + $errorMessage = 'variable must be an integer'; + $param->requirements = array('rule' => '\d+', 'error_message' => $errorMessage); + $param->description = 'integer value'; + $param->strict = true; + + $request = new Request(array('fero' => 'foobar'), array(), array('_controller' => __CLASS__.'::stubAction')); + $reader = $this->getMockBuilder('FOS\RestBundle\Request\ParamReader') + ->disableOriginalConstructor() + ->getMock(); + + $reader->expects($this->any()) + ->method('read') + ->will($this->returnValue(array('fero' => $param))); + + $constraint = new Regex(array( + 'pattern' => '#^\d+$#xsu', + 'message' => $errorMessage, + )); + + $errors = new ConstraintViolationList(array( + new ConstraintViolation($errorMessage, null, array(), null, null, null), + )); + + $this->validator->expects($this->once()) + ->method('validateValue') + ->with('foobar', $constraint) + ->will($this->returnValue($errors)); + + $queryFetcher = new ParamFetcher($reader, $request, $this->violationFormatter, $this->validator); + $queryFetcher->setController($this->controller); + + try { + $queryFetcher->get('fero'); + $this->fail('Fetching get() in strict mode with no default value did not throw an exception'); + } catch (HttpException $httpException) { + $this->assertEquals($errorMessage, $httpException->getMessage()); + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamReaderTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamReaderTest.php new file mode 100644 index 0000000..f677ed2 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/ParamReaderTest.php @@ -0,0 +1,102 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Request; + +use FOS\RestBundle\Controller\Annotations\NamePrefix; +use FOS\RestBundle\Controller\Annotations\QueryParam; +use FOS\RestBundle\Request\ParamReader; + +/** + * QueryParamReader test. + * + * @author Alexander + */ +class ParamReaderTest extends \PHPUnit_Framework_TestCase +{ + private $paramReader; + + /** + * Test setup. + */ + public function setup() + { + $annotationReader = $this->getMock('Doctrine\Common\Annotations\Reader'); + + $methodAnnotations = array(); + $foo = new QueryParam(); + $foo->name = 'foo'; + $foo->requirements = '\d+'; + $foo->description = 'The foo'; + $methodAnnotations[] = $foo; + + $bar = new QueryParam(); + $bar->name = 'bar'; + $bar->requirements = '\d+'; + $bar->description = 'The bar'; + $methodAnnotations[] = $bar; + + $methodAnnotations[] = new NamePrefix(array()); + + $annotationReader + ->expects($this->any()) + ->method('getMethodAnnotations') + ->will($this->returnValue($methodAnnotations)); + + $classAnnotations = array(); + + $baz = new QueryParam(); + $baz->name = 'baz'; + $baz->requirements = '\d+'; + $baz->description = 'The baz'; + $classAnnotations[] = $baz; + + $mikz = new QueryParam(); + $mikz->name = 'mikz'; + $mikz->requirements = '\d+'; + $mikz->description = 'The real mikz'; + $classAnnotations[] = $mikz; + + $not = new NamePrefix(array()); + $classAnnotations[] = $not; + + $annotationReader + ->expects($this->any()) + ->method('getClassAnnotations') + ->will($this->returnValue($classAnnotations)); + + $this->paramReader = new ParamReader($annotationReader); + } + + /** + * Test that only QueryParam annotations are returned. + */ + public function testReadsOnlyParamAnnotations() + { + $annotations = $this->paramReader->read(new \ReflectionClass(__CLASS__), 'setup'); + + $this->assertCount(4, $annotations); + + foreach ($annotations as $name => $annotation) { + $this->assertThat($annotation, $this->isInstanceOf('FOS\RestBundle\Controller\Annotations\Param')); + $this->assertEquals($annotation->name, $name); + } + } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessage Class 'FOS\RestBundle\Tests\Request\ParamReaderTest' has no method 'foo' method. + */ + public function testExceptionOnNonExistingMethod() + { + $this->paramReader->read(new \ReflectionClass(__CLASS__), 'foo'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverter20Test.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverter20Test.php new file mode 100644 index 0000000..57e76ec --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverter20Test.php @@ -0,0 +1,312 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Request; + +use FOS\RestBundle\Request\RequestBodyParamConverter20; +use JMS\Serializer\Exception\RuntimeException; +use JMS\Serializer\Exception\UnsupportedFormatException; + +class RequestBodyParamConverter20Test extends AbstractRequestBodyParamConverterTest +{ + private $serializer; + private $converter; + + public function setUp() + { + // skip the test if the installed version of SensioFrameworkExtraBundle + // is not compatible with the RequestBodyParamConverter20 class + $parameter = new \ReflectionParameter( + array( + 'Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface', + 'supports', + ), + 'configuration' + ); + if ('Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface' !== $parameter->getClass()->getName()) { + $this->markTestSkipped('skipping RequestBodyParamConverter20Test due to an incompatible version of the SensioFrameworkExtraBundle'); + } + + $this->serializer = $this->getMock('JMS\Serializer\SerializerInterface'); + $this->converter = $this->getMock( + 'FOS\RestBundle\Request\RequestBodyParamConverter20', + array('getDeserializationContext'), + array($this->serializer) + ); + } + + public function testConstructThrowsExceptionIfValidatorIsSetAndValidationArgumentIsNull() + { + $this->setExpectedException('InvalidArgumentException'); + new RequestBodyParamConverter20( + $this->serializer, + null, + null, + $this->getMock('Symfony\Component\Validator\ValidatorInterface') + ); + } + + public function testSupports() + { + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->assertTrue($this->converter->supports($config)); + } + + public function testSupportsWithNoClass() + { + $this->assertFalse($this->converter->supports($this->createConfiguration(null, 'post'))); + } + + public function testApply() + { + $requestBody = '{"name": "Post 1", "body": "This is a blog post"}'; + $expectedPost = new Post('Post 1', 'This is a blog post'); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with($requestBody, 'FOS\RestBundle\Tests\Request\Post', 'json') + ->will($this->returnValue($expectedPost)); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($this->createDeserializationContext())); + + $request = $this->createRequest('{"name": "Post 1", "body": "This is a blog post"}', 'application/json'); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->converter->apply($request, $config); + + $this->assertSame($expectedPost, $request->attributes->get('post')); + } + + public function testApplyWithUnsupportedContentType() + { + $this->serializer->expects($this->once()) + ->method('deserialize') + ->will($this->throwException(new UnsupportedFormatException('unsupported format'))); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($this->createDeserializationContext())); + + $request = $this->createRequest('', 'text/html'); + + $this->setExpectedException('Symfony\Component\HttpKernel\Exception\HttpException', 'unsupported format'); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->converter->apply($request, $config); + } + + public function testApplyWhenSerializerThrowsException() + { + $this->serializer->expects($this->once()) + ->method('deserialize') + ->will($this->throwException(new RuntimeException('serializer exception'))); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($this->createDeserializationContext())); + + $request = $this->createRequest(); + + $this->setExpectedException( + 'Symfony\Component\HttpKernel\Exception\HttpException', + 'serializer exception' + ); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->converter->apply($request, $config); + } + + public function testApplyWithSerializerContextOptionsForJMSSerializer() + { + $requestBody = '{"name": "Post 1", "body": "This is a blog post"}'; + $options = array( + 'deserializationContext' => array( + 'groups' => array('group1'), + 'version' => '1.0', + ), + ); + + $context = $this->createDeserializationContext( + $options['deserializationContext']['groups'], + $options['deserializationContext']['version'] + ); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($context)); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with($requestBody, 'FOS\RestBundle\Tests\Request\Post', 'json', $context); + + $request = $this->createRequest($requestBody, 'application/json'); + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post', $options); + + $this->converter->apply($request, $config); + } + + public function testApplyWithDefaultSerializerContextExclusionPolicy() + { + $this->converter = $this->getMock( + 'FOS\RestBundle\Request\RequestBodyParamConverter20', + array('getDeserializationContext'), + array($this->serializer, array('group1'), '1.0') + ); + + $context = $this->createDeserializationContext(array('group1'), '1.0'); + $request = $this->createRequest('', 'application/json'); + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($context)); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with('', 'FOS\RestBundle\Tests\Request\Post', 'json', $context); + + $this->converter->apply($request, $config); + } + + public function testApplyWithSerializerContextOptionsForSymfonySerializer() + { + $this->serializer = $this->getMock('Symfony\Component\Serializer\SerializerInterface', array('serialize', 'deserialize')); + $this->converter = new RequestBodyParamConverter20($this->serializer); + $requestBody = '{"name": "Post 1", "body": "This is a blog post"}'; + + $options = array( + 'deserializationContext' => array( + 'json_decode_options' => 2, // JSON_BIGINT_AS_STRING + ), + ); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with($requestBody, 'FOS\RestBundle\Tests\Request\Post', 'json', $options['deserializationContext']); + + $request = $this->createRequest($requestBody, 'application/json'); + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post', $options); + + $this->converter->apply($request, $config); + } + + public function testApplyWithValidationErrors() + { + $validator = $this->getMockBuilder('Symfony\Component\Validator\Validator') + ->disableOriginalConstructor() + ->getMock(); + $validationErrors = $this->getMock('Symfony\Component\Validator\ConstraintViolationList'); + + $this->converter = new RequestBodyParamConverter20($this->serializer, null, null, $validator, 'validationErrors'); + + $expectedPost = new Post('Post 1', 'This is a blog post'); + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with('', 'FOS\RestBundle\Tests\Request\Post', 'json') + ->will($this->returnValue($expectedPost)); + + $request = $this->createRequest('', 'application/json'); + $options = array( + 'validator' => array( + 'groups' => array('group1'), + 'traverse' => true, + 'deep' => true, + ), + ); + + $validator->expects($this->once()) + ->method('validate') + ->with($expectedPost, array('group1'), true, true) + ->will($this->returnValue($validationErrors)); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post', $options); + $this->converter->apply($request, $config); + + $this->assertSame($expectedPost, $request->attributes->get('post')); + $this->assertSame($validationErrors, $request->attributes->get('validationErrors')); + } + + public function testDefaultValidatorOptions() + { + $this->converter = new RequestBodyParamConverter20($this->serializer); + $reflClass = new \ReflectionClass($this->converter); + $method = $reflClass->getMethod('getValidatorOptions'); + $method->setAccessible(true); + $options = $method->invoke($this->converter, array()); + + $expected = array( + 'groups' => null, + 'traverse' => false, + 'deep' => false, + ); + + $this->assertEquals($expected, $options); + } + + public function testDefaultValidatorOptionsMergedWithUserOptions() + { + // Annotation example + // @ParamConverter( + // post, + // class="AcmeBlogBundle:Post", + // options={"validator"={"groups"={"Posting"}} + // ) + $userOptions = array( + 'validator' => array( + 'groups' => array('Posting'), + ), + ); + + $expectedOptions = array( + 'groups' => array('Posting'), + 'traverse' => false, + 'deep' => false, + ); + + $converterMock = $this->getMockBuilder('FOS\RestBundle\Request\RequestBodyParamConverter20') + ->disableOriginalConstructor() + ->getMock() + ; + + $reflClass = new \ReflectionClass($converterMock); + $method = $reflClass->getMethod('getValidatorOptions'); + $method->setAccessible(true); + $mergedOptions = $method->invoke($converterMock, $userOptions); + + $this->assertEquals($expectedOptions, $mergedOptions); + } + + public function testValidatorOptionsStructureAfterMergeWithUserOptions() + { + // Annotation example + // @ParamConverter( + // post, + // class="AcmeBlogBundle:Post", + // options={"validator"={"groups"={"Posting"}} + // ) + $userOptions = array( + 'validator' => array( + 'groups' => array('Posting'), + ), + ); + $config = $this->createConfiguration(null, null, $userOptions); + + $validator = $this->getMockBuilder('Symfony\Component\Validator\Validator') + ->disableOriginalConstructor() + ->getMock(); + $this->converter = new RequestBodyParamConverter20($this->serializer, null, null, $validator, 'validationErrors'); + $request = $this->createRequest(); + + $this->converter->apply($request, $config); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverterTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverterTest.php new file mode 100644 index 0000000..0e12996 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Request/RequestBodyParamConverterTest.php @@ -0,0 +1,328 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Request; + +use FOS\RestBundle\Request\RequestBodyParamConverter; +use JMS\Serializer\Exception\RuntimeException; +use JMS\Serializer\Exception\UnsupportedFormatException; + +/** + * @author Tyler Stroud + */ +class RequestBodyParamConverterTest extends AbstractRequestBodyParamConverterTest +{ + protected $serializer; + protected $converter; + + public function setUp() + { + // skip the test if the installed version of SensioFrameworkExtraBundle + // is not compatible with the RequestBodyParamConverter class + $parameter = new \ReflectionParameter( + array( + 'Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface', + 'supports', + ), + 'configuration' + ); + if ('Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter' != $parameter->getClass()->getName()) { + $this->markTestSkipped( + 'skipping RequestBodyParamConverterTest due to an incompatible version of the SensioFrameworkExtraBundle' + ); + } + + $this->serializer = $this->getMock('JMS\Serializer\SerializerInterface'); + $this->converter = $this->getMock( + 'FOS\RestBundle\Request\RequestBodyParamConverter', + array('getDeserializationContext'), + array($this->serializer) + ); + } + + public function testConstructThrowsExceptionIfValidatorIsSetAndValidationArgumentIsNull() + { + $this->setExpectedException('InvalidArgumentException'); + new RequestBodyParamConverter( + $this->serializer, + null, + null, + $this->getMock('Symfony\Component\Validator\ValidatorInterface') + ); + } + + public function testSupports() + { + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->assertTrue($this->converter->supports($config)); + } + + public function testSupportsWithNoClass() + { + $this->assertFalse($this->converter->supports($this->createConfiguration(null, 'post'))); + } + + public function testApply() + { + $requestBody = '{"name": "Post 1", "body": "This is a blog post"}'; + $expectedPost = new Post('Post 1', 'This is a blog post'); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with($requestBody, 'FOS\RestBundle\Tests\Request\Post', 'json') + ->will($this->returnValue($expectedPost)); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($this->createDeserializationContext())); + + $request = $this->createRequest('{"name": "Post 1", "body": "This is a blog post"}', 'application/json'); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->converter->apply($request, $config); + + $this->assertSame($expectedPost, $request->attributes->get('post')); + } + + public function testApplyWithUnsupportedContentType() + { + $this->serializer->expects($this->once()) + ->method('deserialize') + ->will($this->throwException(new UnsupportedFormatException('unsupported format'))); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($this->createDeserializationContext())); + + $request = $this->createRequest('', 'text/html'); + + $this->setExpectedException('Symfony\Component\HttpKernel\Exception\HttpException', 'unsupported format'); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->converter->apply($request, $config); + } + + public function testApplyWhenSerializerThrowsException() + { + $this->serializer->expects($this->once()) + ->method('deserialize') + ->will($this->throwException(new RuntimeException('serializer exception'))); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($this->createDeserializationContext())); + + $request = $this->createRequest(); + + $this->setExpectedException( + 'Symfony\Component\HttpKernel\Exception\HttpException', + 'serializer exception' + ); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + $this->converter->apply($request, $config); + } + + public function testApplyWithSerializerContextOptionsForJMSSerializer() + { + $requestBody = '{"name": "Post 1", "body": "This is a blog post"}'; + $options = array( + 'deserializationContext' => array( + 'groups' => array('group1'), + 'version' => '1.0', + ), + ); + + $context = $this->createDeserializationContext( + $options['deserializationContext']['groups'], + $options['deserializationContext']['version'] + ); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($context)); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with($requestBody, 'FOS\RestBundle\Tests\Request\Post', 'json', $context); + + $request = $this->createRequest($requestBody, 'application/json'); + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post', $options); + + $this->converter->apply($request, $config); + } + + public function testApplyWithDefaultSerializerContextExclusionPolicy() + { + $this->converter = $this->getMock( + 'FOS\RestBundle\Request\RequestBodyParamConverter', + array('getDeserializationContext'), + array($this->serializer, array('group1'), '1.0') + ); + + $context = $this->createDeserializationContext(array('group1'), '1.0'); + $request = $this->createRequest('', 'application/json'); + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post'); + + $this->converter->expects($this->once()) + ->method('getDeserializationContext') + ->will($this->returnValue($context)); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with('', 'FOS\RestBundle\Tests\Request\Post', 'json', $context); + + $this->converter->apply($request, $config); + } + + public function testApplyWithSerializerContextOptionsForSymfonySerializer() + { + $this->serializer = $this->getMock('Symfony\Component\Serializer\SerializerInterface', array('serialize', 'deserialize')); + $this->converter = new RequestBodyParamConverter($this->serializer); + $requestBody = '{"name": "Post 1", "body": "This is a blog post"}'; + + $options = array( + 'deserializationContext' => array( + 'json_decode_options' => 2, // JSON_BIGINT_AS_STRING + ), + ); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with($requestBody, 'FOS\RestBundle\Tests\Request\Post', 'json', $options['deserializationContext']); + + $request = $this->createRequest($requestBody, 'application/json'); + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post', $options); + + $this->converter->apply($request, $config); + } + + public function testApplyWithValidationErrors() + { + $expectedPost = new Post('Post 1', 'This is a blog post'); + $validationErrors = $this->getMock('Symfony\Component\Validator\ConstraintViolationList'); + + if (interface_exists('Symfony\Component\Validator\Validator\ValidatorInterface')) { + $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); + $validator + ->expects($this->once()) + ->method('validate') + ->with($expectedPost, null, array('group1')) + ->will($this->returnValue($validationErrors)); + } else { + $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); + $validator + ->expects($this->once()) + ->method('validate') + ->with($expectedPost, array('group1'), true, true) + ->will($this->returnValue($validationErrors)); + } + + $this->converter = new RequestBodyParamConverter($this->serializer, null, null, $validator, 'validationErrors'); + + $this->serializer->expects($this->once()) + ->method('deserialize') + ->with('', 'FOS\RestBundle\Tests\Request\Post', 'json') + ->will($this->returnValue($expectedPost)); + + $request = $this->createRequest('', 'application/json'); + $options = array( + 'validator' => array( + 'groups' => array('group1'), + 'traverse' => true, + 'deep' => true, + ), + ); + + $config = $this->createConfiguration('FOS\RestBundle\Tests\Request\Post', 'post', $options); + $this->converter->apply($request, $config); + + $this->assertSame($expectedPost, $request->attributes->get('post')); + $this->assertSame($validationErrors, $request->attributes->get('validationErrors')); + } + + public function testDefaultValidatorOptions() + { + $this->converter = new RequestBodyParamConverter($this->serializer); + $reflClass = new \ReflectionClass($this->converter); + $method = $reflClass->getMethod('getValidatorOptions'); + $method->setAccessible(true); + $options = $method->invoke($this->converter, array()); + + $expected = array( + 'groups' => null, + 'traverse' => false, + 'deep' => false, + ); + + $this->assertEquals($expected, $options); + } + + public function testDefaultValidatorOptionsMergedWithUserOptions() + { + // Annotation example + // @ParamConverter( + // post, + // class="AcmeBlogBundle:Post", + // options={"validator"={"groups"={"Posting"}} + // ) + $userOptions = array( + 'validator' => array( + 'groups' => array('Posting'), + ), + ); + + $expectedOptions = array( + 'groups' => array('Posting'), + 'traverse' => false, + 'deep' => false, + ); + + $converterMock = $this->getMockBuilder('FOS\RestBundle\Request\RequestBodyParamConverter') + ->disableOriginalConstructor() + ->getMock() + ; + + $reflClass = new \ReflectionClass($converterMock); + $method = $reflClass->getMethod('getValidatorOptions'); + $method->setAccessible(true); + $mergedOptions = $method->invoke($converterMock, $userOptions); + + $this->assertEquals($expectedOptions, $mergedOptions); + } + + public function testValidatorOptionsStructureAfterMergeWithUserOptions() + { + // Annotation example + // @ParamConverter( + // post, + // class="AcmeBlogBundle:Post", + // options={"validator"={"groups"={"Posting"}} + // ) + $userOptions = array( + 'validator' => array( + 'groups' => array('Posting'), + ), + ); + $config = $this->createConfiguration(null, null, $userOptions); + + if (interface_exists('Symfony\Component\Validator\Validator\ValidatorInterface')) { + $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); + } else { + $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); + } + + $this->converter = new RequestBodyParamConverter($this->serializer, null, null, $validator, 'validationErrors'); + $request = $this->createRequest(); + + $this->converter->apply($request, $config); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/LoaderTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/LoaderTest.php new file mode 100644 index 0000000..a3e5847 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/LoaderTest.php @@ -0,0 +1,83 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Routing\Loader; + +use Doctrine\Common\Annotations\AnnotationReader; +use Symfony\Component\Yaml\Yaml; +use FOS\RestBundle\Routing\Loader\RestRouteLoader; +use FOS\RestBundle\Routing\Loader\Reader\RestControllerReader; +use FOS\RestBundle\Routing\Loader\Reader\RestActionReader; +use FOS\RestBundle\Request\ParamReader; +use FOS\RestBundle\Util\Inflector\DoctrineInflector; + +/** + * Base Loader testing class. + * + * @author Konstantin Kudryashov + */ +abstract class LoaderTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Symfony\Component\DependencyInjection\ContainerBuilder + */ + protected $containerMock; + + /** + * Load routes etalon from yml fixture file under Tests\Fixtures directory. + * + * @param string $etalonName name of the YML fixture + * + * @return array + */ + protected function loadEtalonRoutesInfo($etalonName) + { + return Yaml::parse(file_get_contents(__DIR__.'/../../Fixtures/Etalon/'.$etalonName)); + } + + private function getAnnotationReader() + { + return new AnnotationReader(); + } + + /** + * Builds a RestRouteLoader. + * + * @param array $formats available resource formats + * + * @return RestRouteLoader + */ + protected function getControllerLoader(array $formats = array()) + { + // This check allows to override the container + if ($this->containerMock === null) { + $this->containerMock = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->disableOriginalConstructor() + ->setMethods(array('get', 'has')) + ->getMock(); + } + $l = $this->getMockBuilder('Symfony\Component\Config\FileLocator') + ->disableOriginalConstructor() + ->getMock(); + $p = $this->getMockBuilder('Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser') + ->disableOriginalConstructor() + ->getMock(); + + $annotationReader = $this->getAnnotationReader(); + $paramReader = new ParamReader($annotationReader); + $inflector = new DoctrineInflector(); + + $ar = new RestActionReader($annotationReader, $paramReader, $inflector, true, $formats); + $cr = new RestControllerReader($ar, $annotationReader); + + return new RestRouteLoader($this->containerMock, $l, $p, $cr, 'html'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestRouteLoaderTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestRouteLoaderTest.php new file mode 100644 index 0000000..2e9941c --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestRouteLoaderTest.php @@ -0,0 +1,321 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Routing\Loader; + +use FOS\RestBundle\Routing\RestRouteCollection; +use Symfony\Component\Routing\RouteCollection; + +/** + * RestRouteLoader test. + * + * @author Konstantin Kudryashov + */ +class RestRouteLoaderTest extends LoaderTest +{ + /** + * Test that UsersController RESTful class gets parsed correctly. + */ + public function testUsersFixture() + { + $collection = $this->loadFromControllerFixture('UsersController'); + $etalonRoutes = $this->loadEtalonRoutesInfo('users_controller.yml'); + + $this->assertTrue($collection instanceof RestRouteCollection); + $this->assertEquals(26, count($collection->all())); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, sprintf('route for %s does not exist', $name)); + $this->assertEquals($params['path'], $route->getPath(), 'Path does not match for route: '.$name); + $this->assertEquals($params['methods'][0], $methods[0], 'Method does not match for route: '.$name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), 'Controller does not match for route: '.$name); + } + } + + /** + * Test that ResourceController RESTful class gets parsed correctly. + */ + public function testResourceFixture() + { + $collection = $this->loadFromControllerFixture('ArticleController'); + $etalonRoutes = $this->loadEtalonRoutesInfo('resource_controller.yml'); + + $this->assertTrue($collection instanceof RestRouteCollection); + $this->assertEquals(24, count($collection->all())); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, sprintf('route for %s does not exist', $name)); + $this->assertEquals($params['path'], $route->getPath(), 'Path does not match for route: '.$name); + $this->assertEquals($params['methods'][0], $methods[0], 'Method does not match for route: '.$name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), 'Controller does not match for route: '.$name); + } + } + + /** + * Test that custom actions (new/edit/remove) are dumped earlier. + */ + public function testCustomActionRoutesOrder() + { + // without prefix + + $collection = $this->loadFromControllerFixture('OrdersController'); + $pos = array_flip(array_keys($collection->all())); + + $this->assertLessThan($pos['get_foos'], $pos['new_foos']); + $this->assertLessThan($pos['get_bars'], $pos['new_bars']); + + // with prefix + + $collection = $this->loadFromControllerFixture('OrdersController', 'prefix_'); + $pos = array_flip(array_keys($collection->all())); + + $this->assertLessThan($pos['prefix_get_foos'], $pos['prefix_new_foos']); + $this->assertLessThan($pos['prefix_get_bars'], $pos['prefix_new_bars']); + } + + /** + * Test that annotated UsersController RESTful class gets parsed correctly. + */ + public function testAnnotatedUsersFixture() + { + $collection = $this->loadFromControllerFixture('AnnotatedUsersController'); + $etalonRoutes = $this->loadEtalonRoutesInfo('annotated_users_controller.yml'); + + $this->assertTrue($collection instanceof RestRouteCollection); + $this->assertEquals(24, count($collection->all())); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + + // Symfony sets _method to keep BC, should be removed in 3.0 + $params['requirements']['_method'] = implode('|', $params['methods']); + + $this->assertNotNull($route, "no route found for '$name'"); + $this->assertEquals($params['path'], $route->getPath(), 'path failed to match for '.$name); + $this->assertEquals($params['requirements'], $route->getRequirements(), 'requirements failed to match for '.$name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), 'controller failed to match for '.$name); + if (isset($params['condition'])) { + $this->assertEquals($params['condition'], $route->getCondition(), 'condition failed to match for '.$name); + } + + if (isset($params['options'])) { + foreach ($params['options'] as $option => $value) { + $this->assertEquals($value, $route->getOption($option)); + } + } + } + } + + /** + * Test that annotated UsersController RESTful class gets parsed correctly with condition option (expression-language). + */ + public function testAnnotatedConditionalUsersFixture() + { + if (!method_exists('Symfony\Component\Routing\Annotation\Route', 'setCondition')) { + $this->markTestSkipped('The "Routing" component have a version <2.4'); + + return; + } + + $collection = $this->loadFromControllerFixture('AnnotatedConditionalUsersController'); + $etalonRoutes = $this->loadEtalonRoutesInfo('annotated_conditional_controller.yml'); + + $this->assertTrue($collection instanceof RestRouteCollection); + $this->assertEquals(22, count($collection->all())); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + + // Symfony sets _method to keep BC, should be removed with 3.0 + $params['requirements']['_method'] = implode('|', $params['methods']); + + $this->assertNotNull($route, "no route found for '$name'"); + $this->assertEquals($params['path'], $route->getPath(), 'path failed to match for '.$name); + $this->assertEquals($params['requirements'], $route->getRequirements(), 'requirements failed to match for '.$name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), 'controller failed to match for '.$name); + if (isset($params['condition'])) { + $this->assertEquals($params['condition'], $route->getCondition(), 'condition failed to match for '.$name); + } + } + } + + /** + * Test that a custom format annotation is not overwritten. + */ + public function testCustomFormatRequirementIsKept() + { + $collection = $this->loadFromControllerFixture( + 'AnnotatedUsersController', + null, + array('json' => true, 'xml' => true, 'html' => true) + ); + $routeCustom = $collection->get('custom_user'); + $routeWithRequirements = $collection->get('get_user'); + + $this->assertEquals('custom', $routeCustom->getRequirement('_format')); + $this->assertEquals('json|xml|html', $routeWithRequirements->getRequirement('_format')); + } + + /** + * @see https://github.com/FriendsOfSymfony/RestBundle/issues/37 + */ + public function testPrefixIsResetForEachController() + { + // we can't use the getControllerLoader method because we need to verify that the prefix + // is reset when using the same ControllerLoader for both Controllers. + $loader = $this->getControllerLoader(); + + // get the path for the prefixed controller, and verify it is prefixed + $collection = $loader->load('FOS\RestBundle\Tests\Fixtures\Controller\AnnotatedPrefixedController', 'rest'); + $prefixedRoute = $collection->get('get_something'); + $this->assertEquals('/aprefix/', substr($prefixedRoute->getPath(), 0, 9)); + + // get the path for the non-prefixed controller, and verify it's not prefixed + $collection2 = $loader->load('FOS\RestBundle\Tests\Fixtures\Controller\UsersController', 'rest'); + $nonPrefixedRoute = $collection2->get('get_users'); + $this->assertNotEquals('/aprefix/', substr($nonPrefixedRoute->getPath(), 0, 9)); + } + + /** + * Test that conventional actions exist and are registered as GET methods. + * + * @see https://github.com/FriendsOfSymfony/RestBundle/issues/67 + */ + public function testConventionalActions() + { + $expectedMethod = array('GET'); + $collection = $this->loadFromControllerFixture('UsersController'); + $subcollection = $this->loadFromControllerFixture('UserTopicsController'); + $subsubcollection = $this->loadFromControllerFixture('UserTopicCommentsController'); + + // resource actions + $this->assertEquals($expectedMethod, $collection->get('new_users')->getMethods()); + $this->assertEquals($expectedMethod, $collection->get('edit_user')->getMethods()); + $this->assertEquals($expectedMethod, $collection->get('remove_user')->getMethods()); + + // subresource actions + $this->assertEquals($expectedMethod, $collection->get('new_user_comments')->getMethods()); + $this->assertEquals($expectedMethod, $collection->get('edit_user_comment')->getMethods()); + $this->assertEquals($expectedMethod, $collection->get('remove_user_comment')->getMethods()); + + // resource collection actions + $this->assertEquals($expectedMethod, $subcollection->get('new_topics')->getMethods()); + $this->assertEquals($expectedMethod, $subcollection->get('edit_topic')->getMethods()); + $this->assertEquals($expectedMethod, $subcollection->get('remove_topic')->getMethods()); + + // resource collection's resource collection actions + $this->assertEquals($expectedMethod, $subsubcollection->get('new_comments')->getMethods()); + $this->assertEquals($expectedMethod, $subsubcollection->get('edit_comment')->getMethods()); + $this->assertEquals($expectedMethod, $subsubcollection->get('remove_comment')->getMethods()); + } + + /** + * Test that custom actions (new/edit/remove) are dumped earlier, + * and that developer routes order is kept. + * + * @see https://github.com/FriendsOfSymfony/RestBundle/issues/379 + */ + public function testCustomActionRoutesInDeveloperOrder() + { + // without prefix + + $collection = $this->loadFromControllerFixture('OrdersController'); + $pos = array_flip(array_keys($collection->all())); + + $this->assertLessThan($pos['get_bars'], $pos['get_bars_custom']); + + // with prefix + + $collection = $this->loadFromControllerFixture('OrdersController', 'prefix_'); + $pos = array_flip(array_keys($collection->all())); + + $this->assertLessThan($pos['prefix_get_bars'], $pos['prefix_get_bars_custom']); + } + + /** + * Test if the routes are also working with uninflected words. + * + * @see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/761 + */ + public function testMediaFixture() + { + $expectedMethod = array('GET'); + $collection = $this->loadFromControllerFixture('MediaController'); + + $this->assertCount(2, $collection->all()); + $this->assertEquals($expectedMethod, $collection->get('get_media')->getMethods()); + $this->assertEquals($expectedMethod, $collection->get('cget_media')->getMethods()); + } + + /** + * Test if the routes are also working with uninflected words. + * + * @see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/761 + */ + public function testInformationFixture() + { + $collection = $this->loadFromControllerFixture('InformationController'); + + $this->assertCount(2, $collection->all()); + + $getRoute = $collection->get('get_information'); + $cgetRoute = $collection->get('cget_information'); + + $this->assertEquals($getRoute, $cgetRoute); + $this->assertNotSame($getRoute, $cgetRoute); + } + + /** + * @see https://github.com/FriendsOfSymfony/FOSRestBundle/issues/770 + * @see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/792 + */ + public function testNamePrefixIsPrependingCorrectly() + { + $collection = $this->loadFromControllerFixture('InformationController', 'prefix_'); + + $this->assertNotNull($collection->get('prefix_get_information')); + $this->assertNotNull($collection->get('prefix_cget_information')); + } + + /** + * @see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/879 + */ + public function testNameMethodPrefixIsPrependingCorrectly() + { + $collection = $this->loadFromControllerFixture('AnnotatedUsersController'); + + $this->assertNotNull($collection->get('post_users_foo'), 'route for "post_users_foo" does not exist'); + $this->assertNotNull($collection->get('post_users_bar'), 'route for "post_users_bar" does not exist'); + } + + /** + * Load routes collection from fixture class under Tests\Fixtures directory. + * + * @param string $fixtureName name of the class fixture + * @param string $namePrefix route name prefix + * @param array $formats resource formats available + * + * @return RouteCollection + */ + protected function loadFromControllerFixture($fixtureName, $namePrefix = null, array $formats = array()) + { + $loader = $this->getControllerLoader($formats); + $loader->getControllerReader()->getActionReader()->setNamePrefix($namePrefix); + + return $loader->load('FOS\RestBundle\Tests\Fixtures\Controller\\'.$fixtureName, 'rest'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestXmlCollectionLoaderTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestXmlCollectionLoaderTest.php new file mode 100644 index 0000000..11d0f7e --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestXmlCollectionLoaderTest.php @@ -0,0 +1,158 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Routing\Loader; + +use Symfony\Component\Config\Loader\LoaderResolver; +use Symfony\Component\Config\FileLocator; +use Symfony\Component\Routing\RouteCollection; +use FOS\RestBundle\Routing\Loader\RestRouteProcessor; +use FOS\RestBundle\Routing\Loader\RestXmlCollectionLoader; + +/** + * RestXmlCollectionLoader test. + * + * @author Konstantin Kudryashov + */ +class RestXmlCollectionLoaderTest extends LoaderTest +{ + /** + * Test that XML collection gets parsed correctly. + */ + public function testUsersFixture() + { + $collection = $this->loadFromXmlCollectionFixture('users_collection.xml'); + $etalonRoutes = $this->loadEtalonRoutesInfo('users_collection.yml'); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, $name); + $this->assertEquals($params['path'], $route->getPath(), $name); + $this->assertEquals($params['methods'][0], $methods[0], $name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), $name); + } + } + + /** + * Test that XML collection with custom prefixes gets parsed correctly. + */ + public function testPrefixedUsersFixture() + { + $collection = $this->loadFromXmlCollectionFixture('prefixed_users_collection.xml'); + $etalonRoutes = $this->loadEtalonRoutesInfo('prefixed_users_collection.yml'); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, $name); + $this->assertEquals($params['path'], $route->getPath(), $name); + $this->assertEquals($params['methods'][0], $methods[0], $name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), $name); + } + } + + public function testManualRoutes() + { + $collection = $this->loadFromXmlCollectionFixture('routes.xml'); + $route = $collection->get('get_users'); + + $this->assertEquals('/users.{_format}', $route->getPath()); + $this->assertEquals('json|xml|html', $route->getRequirement('_format')); + $this->assertEquals('FOSRestBundle:UsersController:getUsers', $route->getDefault('_controller')); + } + + public function testManualRoutesWithoutIncludeFormat() + { + $collection = $this->loadFromXmlCollectionFixture('routes.xml', false); + $route = $collection->get('get_users'); + + $this->assertEquals('/users', $route->getPath()); + } + + public function testManualRoutesWithFormats() + { + $collection = $this->loadFromXmlCollectionFixture( + 'routes.xml', + true, + array( + 'json' => false, + ) + ); + $route = $collection->get('get_users'); + + $this->assertEquals('json', $route->getRequirement('_format')); + } + + public function testManualRoutesWithDefaultFormat() + { + $collection = $this->loadFromXmlCollectionFixture( + 'routes.xml', + true, + array( + 'json' => false, + 'xml' => false, + 'html' => true, + ), + 'xml' + ); + $route = $collection->get('get_users'); + + $this->assertEquals('xml', $route->getDefault('_format')); + } + + public function testForwardOptionsRequirementsAndDefaults() + { + $collection = $this->loadFromXmlCollectionFixture('routes_with_options_requirements_and_defaults.xml'); + + foreach ($collection as $route) { + $this->assertTrue('true' === $route->getOption('expose')); + $this->assertEquals('[a-z]+', $route->getRequirement('slug')); + $this->assertEquals('home', $route->getDefault('slug')); + } + } + + /** + * Load routes collection from XML fixture routes under Tests\Fixtures directory. + * + * @param string $fixtureName name of the class fixture + * @param bool $includeFormat whether or not the requested view format must be included in the route path + * @param string[] $formats supported view formats + * @param string $defaultFormat default view format + * + * @return RouteCollection + */ + protected function loadFromXmlCollectionFixture( + $fixtureName, + $includeFormat = true, + array $formats = array( + 'json' => false, + 'xml' => false, + 'html' => true, + ), + $defaultFormat = null + ) { + $collectionLoader = new RestXmlCollectionLoader( + new FileLocator(array(__DIR__.'/../../Fixtures/Routes')), + new RestRouteProcessor(), + $includeFormat, + $formats, + $defaultFormat + ); + $controllerLoader = $this->getControllerLoader(); + + new LoaderResolver(array($collectionLoader, $controllerLoader)); + + return $collectionLoader->load($fixtureName, 'rest'); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestYamlCollectionLoaderTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestYamlCollectionLoaderTest.php new file mode 100644 index 0000000..16b8893 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Routing/Loader/RestYamlCollectionLoaderTest.php @@ -0,0 +1,250 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Routing\Loader; + +use FOS\RestBundle\Tests\Fixtures\Controller\UsersController; +use Symfony\Component\Config\Loader\LoaderResolver; +use Symfony\Component\Config\FileLocator; +use Symfony\Component\Routing\RouteCollection; +use FOS\RestBundle\Routing\Loader\RestRouteProcessor; +use FOS\RestBundle\Routing\Loader\RestYamlCollectionLoader; + +/** + * RestYamlCollectionLoader test. + * + * @author Konstantin Kudryashov + */ +class RestYamlCollectionLoaderTest extends LoaderTest +{ + /** + * Test that YAML collection gets parsed correctly. + */ + public function testUsersFixture() + { + $collection = $this->loadFromYamlCollectionFixture('users_collection.yml'); + $etalonRoutes = $this->loadEtalonRoutesInfo('users_collection.yml'); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, $name); + $this->assertEquals($params['path'], $route->getPath(), $name); + $this->assertEquals($params['methods'][0], $methods[0], $name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), $name); + } + } + + /** + * Test that YAML collection with custom prefixes gets parsed correctly. + */ + public function testPrefixedUsersFixture() + { + $collection = $this->loadFromYamlCollectionFixture('prefixed_users_collection.yml'); + $etalonRoutes = $this->loadEtalonRoutesInfo('prefixed_users_collection.yml'); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, $name); + $this->assertEquals($params['path'], $route->getPath(), $name); + $this->assertEquals($params['methods'][0], $methods[0], $name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), $name); + } + } + + /** + * Test that YAML collection with named prefixes gets parsed correctly. + */ + public function testNamedPrefixedReportsFixture() + { + $collection = $this->loadFromYamlCollectionFixture('named_prefixed_reports_collection.yml'); + $etalonRoutes = $this->loadEtalonRoutesInfo('named_prefixed_reports_collection.yml'); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, $name); + $this->assertEquals($params['path'], $route->getPath(), $name); + $this->assertEquals($params['methods'][0], $methods[0], $name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), $name); + } + } + + /** + * Test that collection with named prefixes has no duplicates. + */ + public function testNamedPrefixedReportsFixtureHasNoDuplicates() + { + $names = array(); + $collection = $this->loadFromYamlCollectionFixture('named_prefixed_reports_collection.yml'); + foreach ($collection as $route) { + $names[] = $route->getPath(); + } + $this->assertEquals(count($names), count(array_unique($names))); + } + + public function testForwardOptionsRequirementsAndDefaults() + { + $collection = $this->loadFromYamlCollectionFixture('routes_with_options_requirements_and_defaults.yml'); + + foreach ($collection as $route) { + $this->assertTrue($route->getOption('expose')); + $this->assertEquals('[a-z]+', $route->getRequirement('slug')); + $this->assertEquals('home', $route->getDefault('slug')); + } + } + + public function testManualRoutes() + { + $collection = $this->loadFromYamlCollectionFixture('routes.yml'); + $route = $collection->get('get_users'); + + $this->assertEquals('/users.{_format}', $route->getPath()); + $this->assertEquals('json|xml|html', $route->getRequirement('_format')); + $this->assertEquals('FOSRestBundle:UsersController:getUsers', $route->getDefault('_controller')); + } + + public function testManualRoutesWithoutIncludeFormat() + { + $collection = $this->loadFromYamlCollectionFixture('routes.yml', false); + $route = $collection->get('get_users'); + + $this->assertEquals('/users', $route->getPath()); + } + + public function testManualRoutesWithFormats() + { + $collection = $this->loadFromYamlCollectionFixture( + 'routes.yml', + true, + array( + 'json' => false, + ) + ); + $route = $collection->get('get_users'); + + $this->assertEquals('json', $route->getRequirement('_format')); + } + + public function testManualRoutesWithDefaultFormat() + { + $collection = $this->loadFromYamlCollectionFixture( + 'routes.yml', + true, + array( + 'json' => false, + 'xml' => false, + 'html' => true, + ), + 'xml' + ); + $route = $collection->get('get_users'); + + $this->assertEquals('xml', $route->getDefault('_format')); + } + + /** + * Tests that we can use "controller as service" even if the controller is registered in the + * container by its class name. + * + * @link https://github.com/FriendsOfSymfony/FOSRestBundle/issues/604#issuecomment-40284026 + */ + public function testControllerAsServiceWithClassName() + { + $controller = new UsersController(); + + // We register the controller in the fake container by its class name + $this->containerMock = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder') + ->disableOriginalConstructor() + ->setMethods(array('has', 'get', 'enterScope', 'leaveScope')) + ->getMock(); + $this->containerMock->expects($this->any()) + ->method('has') + ->will($this->returnCallback(function ($serviceId) use ($controller) { + return $serviceId == get_class($controller); + })); + $this->containerMock->expects($this->once()) + ->method('get') + ->with(get_class($controller)) + ->will($this->returnValue($controller)); + + $collection = $this->loadFromYamlCollectionFixture('users_collection.yml'); + + $route = $collection->get('get_users'); + + // We check that it's "controller:method" (controller as service) and not "controller::method" + $this->assertEquals( + 'FOS\RestBundle\Tests\Fixtures\Controller\UsersController:getUsersAction', + $route->getDefault('_controller') + ); + } + + /** + * Load routes collection from YAML fixture routes under Tests\Fixtures directory. + * + * @param string $fixtureName name of the class fixture + * @param bool $includeFormat whether or not the requested view format must be included in the route path + * @param string[] $formats supported view formats + * @param string $defaultFormat default view format + * + * @return RouteCollection + */ + protected function loadFromYamlCollectionFixture( + $fixtureName, + $includeFormat = true, + array $formats = array( + 'json' => false, + 'xml' => false, + 'html' => true, + ), + $defaultFormat = null + ) { + $collectionLoader = new RestYamlCollectionLoader( + new FileLocator(array(__DIR__.'/../../Fixtures/Routes')), + new RestRouteProcessor(), + $includeFormat, + $formats, + $defaultFormat + ); + $controllerLoader = $this->getControllerLoader(); + + // LoaderResolver sets the resolvers on the loaders passed to it + new LoaderResolver(array($collectionLoader, $controllerLoader)); + + return $collectionLoader->load($fixtureName, 'rest'); + } + + /** + * Test that YAML collection with named prefixes gets parsed correctly with inheritance. + */ + public function testNamedPrefixedBaseReportsFixture() + { + $collection = $this->loadFromYamlCollectionFixture('base_named_prefixed_reports_collection.yml'); + $etalonRoutes = $this->loadEtalonRoutesInfo('base_named_prefixed_reports_collection.yml'); + + foreach ($etalonRoutes as $name => $params) { + $route = $collection->get($name); + $methods = $route->getMethods(); + + $this->assertNotNull($route, $name); + $this->assertEquals($params['path'], $route->getPath(), $name); + $this->assertEquals($params['method'], $methods[0], $name); + $this->assertContains($params['controller'], $route->getDefault('_controller'), $name); + } + + $name = 'api_get_billing_payments'; + $this->assertArrayNotHasKey($name, $etalonRoutes); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Util/ViolationFormatterTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Util/ViolationFormatterTest.php new file mode 100644 index 0000000..24cd86e --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/Util/ViolationFormatterTest.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\Util; + +use FOS\RestBundle\Controller\Annotations\RequestParam; +use FOS\RestBundle\Controller\Annotations\QueryParam; +use FOS\RestBundle\Util\ViolationFormatter; +use Symfony\Component\Validator\ConstraintViolation; +use Symfony\Component\Validator\ConstraintViolationList; + +/** + * ViolationFormatter test. + * + * @author Loick Piera + */ +class ViolationFormatterTest extends \PHPUnit_Framework_TestCase +{ + public function testViolationIsWellFormatted() + { + $violation = $this->getMockBuilder('Symfony\Component\Validator\ConstraintViolation') + ->disableOriginalConstructor() + ->getMock(); + + $violation->expects($this->once()) + ->method('getInvalidValue') + ->will($this->returnValue('bar')); + + $violation->expects($this->once()) + ->method('getMessage') + ->will($this->returnValue('expected message')); + + $param = new QueryParam(); + $param->name = 'foo'; + + $formatter = new ViolationFormatter(); + $this->assertEquals( + "Query parameter foo value 'bar' violated a constraint (expected message)", + $formatter->format($param, $violation) + ); + } + + public function testViolationListIsWellFormatted() + { + $errors = new ConstraintViolationList(array( + new ConstraintViolation('expected message 1', null, array(), null, null, 'bar'), + new ConstraintViolation('expected message 2', null, array(), null, null, 'bar'), + )); + + $param = new RequestParam(); + $param->name = 'foo'; + + $formatter = new ViolationFormatter(); + $this->assertEquals( + "Request parameter foo value 'bar' violated a constraint (expected message 1)" + ."\nRequest parameter foo value 'bar' violated a constraint (expected message 2)", + $formatter->formatList($param, $errors) + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/JsonpHandlerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/JsonpHandlerTest.php new file mode 100644 index 0000000..adbfc37 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/JsonpHandlerTest.php @@ -0,0 +1,123 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\View; + +use FOS\RestBundle\View\View; +use FOS\RestBundle\View\ViewHandler; +use FOS\RestBundle\View\JsonpHandler; +use Symfony\Component\HttpFoundation\Request; + +/** + * Jsonp handler test. + * + * @author Victor Berchet + * @author Lukas K. Smith + */ +class JsonpHandlerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @dataProvider handleDataProvider + */ + public function testHandle($query) + { + $data = array('foo' => 'bar'); + + $viewHandler = new ViewHandler(array('jsonp' => false)); + $jsonpHandler = new JsonpHandler(key($query)); + $viewHandler->registerHandler('jsonp', array($jsonpHandler, 'createResponse')); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get', 'getParameter')); + $serializer = $this->getMock('stdClass', array('serialize', 'setVersion')); + $serializer + ->expects($this->once()) + ->method('serialize') + ->will($this->returnValue(var_export($data, true))); + + $container + ->expects($this->once()) + ->method('get') + ->with('fos_rest.serializer') + ->will($this->returnValue($serializer)); + + $container + ->expects($this->any()) + ->method('getParameter') + ->will($this->onConsecutiveCalls('version', '1.0')); + + $viewHandler->setContainer($container); + + $view = new View($data); + $view->setFormat('jsonp'); + $request = new Request($query); + + $response = $viewHandler->handle($view, $request); + + $this->assertEquals('/**/'.reset($query).'('.var_export($data, true).')', $response->getContent()); + } + + public static function handleDataProvider() + { + return array( + 'jQuery callback syntax' => array(array('callback' => 'jQuery171065827149929257_1343950463342')), + 'YUI callback syntax' => array(array('callback' => 'YUI.Env.JSONP._12345')), + 'jQuery custom syntax' => array(array('custom' => 'jQuery171065827149929257_1343950463342')), + 'YUI custom syntax' => array(array('custom' => 'YUI.Env.JSONP._12345')), + ); + } + + /** + * @expectedException \Symfony\Component\HttpKernel\Exception\BadRequestHttpException + * @dataProvider getCallbackFailureDataProvider + */ + public function testGetCallbackFailure(Request $request) + { + $data = array('foo' => 'bar'); + + $viewHandler = new ViewHandler(array('jsonp' => false)); + $jsonpHandler = new JsonpHandler('callback'); + $viewHandler->registerHandler('jsonp', array($jsonpHandler, 'createResponse')); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get', 'getParameter')); + $serializer = $this->getMock('stdClass', array('serialize', 'setVersion')); + $serializer + ->expects($this->once()) + ->method('serialize') + ->will($this->returnValue(var_export($data, true))); + + $container + ->expects($this->once()) + ->method('get') + ->with('fos_rest.serializer') + ->will($this->returnValue($serializer)); + + $container + ->expects($this->any()) + ->method('getParameter') + ->will($this->onConsecutiveCalls('version', '1.0')); + + $viewHandler->setContainer($container); + + $data = array('foo' => 'bar'); + + $view = new View($data); + $view->setFormat('jsonp'); + $viewHandler->handle($view, $request); + } + + public function getCallbackFailureDataProvider() + { + return array( + 'no callback' => array(new Request()), + 'incorrect callback param name' => array(new Request(array('foo' => 'bar'))), + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewHandlerTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewHandlerTest.php new file mode 100644 index 0000000..b7dd109 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewHandlerTest.php @@ -0,0 +1,669 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\View; + +use FOS\RestBundle\Serializer\ExceptionWrapperSerializeHandler; +use FOS\RestBundle\Util\ExceptionWrapper; +use FOS\RestBundle\View\ExceptionWrapperHandler; +use FOS\RestBundle\View\View; +use FOS\RestBundle\View\ViewHandler; +use JMS\Serializer\Handler\FormErrorHandler; +use JMS\Serializer\Handler\HandlerRegistry; +use JMS\Serializer\SerializerBuilder; +use FOS\RestBundle\Util\Codes; +use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\Form\Form; +use Symfony\Component\Form\FormError; +use Symfony\Component\Form\Forms; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Form\FormView; + +/** + * View test. + * + * @author Victor Berchet + */ +class ViewHandlerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @dataProvider supportsFormatDataProvider + */ + public function testSupportsFormat($expected, $formats, $customFormatName) + { + $viewHandler = new ViewHandler($formats); + $viewHandler->registerHandler($customFormatName, function () {}); + + $this->assertEquals($expected, $viewHandler->supports('html')); + } + + public static function supportsFormatDataProvider() + { + return array( + 'not supported' => array(false, array('json' => false), 'xml'), + 'html default' => array(true, array('html' => true), 'xml'), + 'html custom' => array(true, array('json' => false), 'html'), + 'html both' => array(true, array('html' => true), 'html'), + ); + } + + public function testRegisterHandle() + { + $viewHandler = new ViewHandler(); + $viewHandler->registerHandler('html', ($callback = function () {})); + $this->assertAttributeEquals(array('html' => $callback), 'customHandlers', $viewHandler); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testRegisterHandleExpectsException() + { + $viewHandler = new ViewHandler(); + + $viewHandler->registerHandler('json', new \stdClass()); + } + + /** + * @dataProvider getStatusCodeDataProvider + */ + public function testGetStatusCode($expected, $data, $isSubmitted, $isValid, $isSubmittedCalled, $isValidCalled, $noContentCode) + { + $reflectionMethod = new \ReflectionMethod('FOS\RestBundle\View\ViewHandler', 'getStatusCode'); + $reflectionMethod->setAccessible(true); + + $form = $this->getMock('Symfony\Component\Form\Form', array('isSubmitted', 'isValid'), array(), '', false); + $form + ->expects($this->exactly($isSubmittedCalled)) + ->method('isSubmitted') + ->will($this->returnValue($isSubmitted)); + $form + ->expects($this->exactly($isValidCalled)) + ->method('isValid') + ->will($this->returnValue($isValid)); + + if ($data) { + $data = array('form' => $form); + } + $view = new View($data ? $data : null); + + $viewHandler = new ViewHandler(array(), $expected, $noContentCode); + $this->assertEquals($expected, $reflectionMethod->invoke($viewHandler, $view, $view->getData())); + } + + public static function getStatusCodeDataProvider() + { + return array( + 'no data' => array(Codes::HTTP_OK, false, false, false, 0, 0, Codes::HTTP_OK), + 'no data with 204' => array(Codes::HTTP_NO_CONTENT, false, false, false, 0, 0, Codes::HTTP_NO_CONTENT), + 'form key form not bound' => array(Codes::HTTP_OK, true, false, true, 1, 0, Codes::HTTP_OK), + 'form key form is bound and invalid' => array(403, true, true, false, 1, 1, Codes::HTTP_OK), + 'form key form bound and valid' => array(Codes::HTTP_OK, true, true, true, 1, 1, Codes::HTTP_OK), + 'form key null form bound and valid' => array(Codes::HTTP_OK, true, true, true, 1, 1, Codes::HTTP_OK), + ); + } + + /** + * @dataProvider createResponseWithLocationDataProvider + */ + public function testCreateResponseWithLocation($expected, $format, $forceRedirects, $noContentCode) + { + $viewHandler = new ViewHandler(array('html' => true, 'json' => false, 'xml' => false), Codes::HTTP_BAD_REQUEST, $noContentCode, false, $forceRedirects); + $view = new View(); + $view->setLocation('foo'); + $returnedResponse = $viewHandler->createResponse($view, new Request(), $format); + + $this->assertEquals($expected, $returnedResponse->getStatusCode()); + $this->assertEquals('foo', $returnedResponse->headers->get('location')); + } + + public static function createResponseWithLocationDataProvider() + { + return array( + 'empty force redirects' => array(200, 'xml', array('json' => 403), Codes::HTTP_OK), + 'empty force redirects with 204' => array(204, 'xml', array('json' => 403), Codes::HTTP_NO_CONTENT), + 'force redirects response is redirect' => array(200, 'json', array(), Codes::HTTP_OK), + 'force redirects response not redirect' => array(403, 'json', array('json' => 403), Codes::HTTP_OK), + 'html and redirect' => array(301, 'html', array('html' => 301), Codes::HTTP_OK), + ); + } + + public function testCreateResponseWithLocationAndData() + { + $testValue = array('naviter' => 'oudie'); + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + $this->setupMockedSerializer($container, $testValue); + + $viewHandler = new ViewHandler(array('json' => false)); + $viewHandler->setContainer($container); + + $view = new View(); + $view->setStatusCode(Codes::HTTP_CREATED); + $view->setLocation('foo'); + $view->setData($testValue); + $returnedResponse = $viewHandler->createResponse($view, new Request(), 'json'); + + $this->assertEquals('foo', $returnedResponse->headers->get('location')); + $this->assertEquals(var_export($testValue, true), $returnedResponse->getContent()); + } + + public function testCreateResponseWithRoute() + { + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + + $doRoute = function ($name, $parameters) { + $route = '/'; + foreach ($parameters as $name => $value) { + $route .= sprintf('%s/%s/', $name, $value); + } + + return $route; + }; + + $router = $this->getMockBuilder('Symfony\Component\Routing\RouterInterface') + ->getMock(); + + $router + ->expects($this->any()) + ->method('generate') + ->will($this->returnCallback($doRoute)); + + $container + ->expects($this->any()) + ->method('get') + ->with('fos_rest.router') + ->will($this->returnValue($router)); + + $viewHandler = new ViewHandler(array('json' => false)); + $viewHandler->setContainer($container); + + $view = new View(); + $view->setStatusCode(Codes::HTTP_CREATED); + $view->setRoute('foo'); + $view->setRouteParameters(array('id' => 2)); + $returnedResponse = $viewHandler->createResponse($view, new Request(), 'json'); + + $this->assertEquals('/id/2/', $returnedResponse->headers->get('location')); + } + + public function testShouldReturnErrorResponseWhenDataContainsFormAndFormIsNotValid() + { + $container = new Container(); + + $serializer = $this->getMock('JMS\Serializer\Serializer', array(), array(), '', false); + $serializer + ->expects($this->once()) + ->method('serialize') + ->will($this->returnCallback(function ($data) { + return serialize($data); + })) + ; + + $container->set('fos_rest.serializer', $serializer); + $container->set('fos_rest.exception_handler', new ExceptionWrapperHandler()); + + //test + $viewHandler = new ViewHandler(null, $expectedFailedValidationCode = Codes::HTTP_I_AM_A_TEAPOT); + $viewHandler->setContainer($container); + + $form = $this->getMock('Symfony\\Component\\Form\\Form', array('createView', 'getData', 'isValid', 'isSubmitted'), array(), '', false); + $form + ->expects($this->any()) + ->method('isValid') + ->will($this->returnValue(false)); + $form + ->expects($this->any()) + ->method('isSubmitted') + ->will($this->returnValue(true)); + + $view = new View($form); + $response = $viewHandler->createResponse($view, new Request(), 'json'); + + $data = unserialize($response->getContent()); + $this->assertInstanceOf('FOS\\RestBundle\\Util\\ExceptionWrapper', $data); + $this->assertEquals('Validation Failed', $this->readAttribute($data, 'message')); + $this->assertInstanceOf('Symfony\\Component\\Form\\Form', $this->readAttribute($data, 'errors')); + $this->assertEquals($expectedFailedValidationCode, $this->readAttribute($data, 'code')); + } + + /** + * @dataProvider createResponseWithoutLocationDataProvider + */ + public function testCreateResponseWithoutLocation($format, $expected, $createViewCalls = 0, $formIsValid = false, $form = false) + { + $viewHandler = new ViewHandler(array('html' => true, 'json' => false)); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + if ('html' === $format) { + $templating = $this->getMockBuilder('Symfony\Bundle\FrameworkBundle\Templating\PhpEngine') + ->setMethods(array('render')) + ->disableOriginalConstructor() + ->getMock(); + + $templating + ->expects($this->once()) + ->method('render') + ->will($this->returnValue(var_export($expected, true))); + + $container + ->expects($this->once()) + ->method('get') + ->with('fos_rest.templating') + ->will($this->returnValue($templating)); + } else { + $this->setupMockedSerializer($container, $expected); + } + + $viewHandler->setContainer($container); + + if ($form) { + $data = $this->getMock('Symfony\Component\Form\Form', array('createView', 'getData', 'isValid', 'isSubmitted'), array(), '', false); + $data + ->expects($this->exactly($createViewCalls)) + ->method('createView') + ->will($this->returnValue(array('bla' => 'toto'))); + $data + ->expects($this->exactly($createViewCalls)) + ->method('getData') + ->will($this->returnValue(array('bla' => 'toto'))); + $data + ->expects($this->any()) + ->method('isValid') + ->will($this->returnValue($formIsValid)); + $data + ->expects($this->any()) + ->method('isSubmitted') + ->will($this->returnValue(true)); + } else { + $data = array('foo' => 'bar'); + } + + $view = new View($data); + $response = $viewHandler->createResponse($view, new Request(), $format); + $this->assertEquals(var_export($expected, true), $response->getContent()); + } + + private function setupMockedSerializer($container, $expected) + { + $serializer = $this->getMockBuilder('JMS\Serializer\Serializer') + ->setMethods(array('serialize')) + ->disableOriginalConstructor() + ->getMock(); + + $serializer + ->expects($this->once()) + ->method('serialize') + ->will($this->returnValue(var_export($expected, true))); + + $container + ->expects($this->any()) + ->method('get') + ->with($this->logicalOr( + $this->equalTo('fos_rest.serializer'), + $this->equalTo('fos_rest.exception_handler') + )) + ->will( + $this->returnCallback( + function ($method) use ($serializer) { + switch ($method) { + case 'fos_rest.serializer': + return $serializer; + case 'fos_rest.exception_handler': + return new ExceptionWrapperHandler(); + } + } + ) + ); + } + + public static function createResponseWithoutLocationDataProvider() + { + return array( + 'not templating aware no form' => array('json', array('foo' => 'bar')), + 'templating aware no form' => array('html', array('foo' => 'bar')), + 'templating aware and form' => array('html', array('data' => array('bla' => 'toto')), 1, true, true), + 'not templating aware and invalid form' => array('json', array('data' => array(0 => 'error', 1 => 'error')), 0, false, true), + ); + } + + /** + * @dataProvider createSerializeNullDataProvider + */ + public function testSerializeNull($expected, $serializeNull) + { + $viewHandler = new ViewHandler(array('json' => false), 404, 200, $serializeNull); + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + + $viewHandler->setContainer($container); + + $serializer = $this->getMockBuilder('JMS\Serializer\Serializer') + ->setMethods(array('serialize', 'setExclusionStrategy')) + ->disableOriginalConstructor() + ->getMock(); + + if ($serializeNull) { + $serializer + ->expects($this->once()) + ->method('serialize') + ->will($this->returnValue(json_encode(null))); + + $container + ->expects($this->once()) + ->method('get') + ->with('fos_rest.serializer') + ->will($this->returnValue($serializer)); + } else { + $serializer + ->expects($this->never()) + ->method('serialize'); + + $container + ->expects($this->never()) + ->method('get'); + } + + $response = $viewHandler->createResponse(new View(), new Request(), 'json'); + $this->assertEquals($expected, $response->getContent()); + } + + public static function createSerializeNullDataProvider() + { + return array( + 'should serialize null' => array('null', true), + 'should not serialize null' => array('', false), + ); + } + + /** + * @dataProvider createSerializeNullDataValuesDataProvider + */ + public function testSerializeNullDataValues($expected, $serializeNull) + { + $viewHandler = new ViewHandler(array('json' => false), 404, 200); + $viewHandler->setSerializeNullStrategy($serializeNull); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + + $viewHandler->setContainer($container); + $contextMethod = new \ReflectionMethod($viewHandler, 'getSerializationContext'); + $contextMethod->setAccessible(true); + + $view = new View(); + $context = $contextMethod->invoke($viewHandler, $view); + $this->assertEquals($expected, $context->shouldSerializeNull()); + } + + public static function createSerializeNullDataValuesDataProvider() + { + return array( + 'should serialize null values' => array(true, true), + 'should not serialize null values' => array(false, false), + ); + } + + /** + * @dataProvider createResponseDataProvider + */ + public function testCreateResponse($expected, $formats) + { + $viewHandler = new ViewHandler($formats); + $viewHandler->registerHandler('html', function ($handler, $view) { return $view; }); + + $response = $viewHandler->handle(new View(null, $expected), new Request()); + $this->assertEquals($expected, $response->getStatusCode()); + } + + public static function createResponseDataProvider() + { + return array( + 'no handler' => array(Codes::HTTP_UNSUPPORTED_MEDIA_TYPE, array()), + 'custom handler' => array(200, array()), + 'transform called' => array(200, array('json' => false)), + ); + } + + public function testHandle() + { + $viewHandler = new ViewHandler(array('html' => true)); + + $templating = $this->getMockBuilder('Symfony\Bundle\FrameworkBundle\Templating\PhpEngine') + ->setMethods(array('render')) + ->disableOriginalConstructor() + ->getMock(); + $templating + ->expects($this->once()) + ->method('render') + ->will($this->returnValue('')); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + $container + ->expects($this->exactly(2)) + ->method('get') + ->will($this->onConsecutiveCalls(new Request(), $templating)); + $viewHandler->setContainer($container); + + $data = array('foo' => 'bar'); + + $view = new View($data); + $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $viewHandler->handle($view)); + } + + public function testHandleCustom() + { + $viewHandler = new ViewHandler(array()); + $viewHandler->registerHandler('html', ($callback = function () { return 'foo'; })); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + $container + ->expects($this->once()) + ->method('get') + ->with('request') + ->will($this->returnValue(new Request())); + $viewHandler->setContainer($container); + + $data = array('foo' => 'bar'); + + $view = new View($data); + $this->assertEquals('foo', $viewHandler->handle($view)); + } + + /** + * @expectedException \Symfony\Component\HttpKernel\Exception\HttpException + */ + public function testHandleNotSupported() + { + $viewHandler = new ViewHandler(array()); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + $container + ->expects($this->once()) + ->method('get') + ->with('request') + ->will($this->returnValue(new Request())); + $viewHandler->setContainer($container); + + $data = array('foo' => 'bar'); + + $view = new View($data); + $viewHandler->handle($view); + } + + /** + * @dataProvider prepareTemplateParametersDataProvider + */ + public function testPrepareTemplateParametersWithProvider($viewData, $templateData, $expected) + { + $handler = new ViewHandler(array('html' => true)); + + $view = new View(); + $view->setFormat('html'); + $view->setData($viewData); + + if (null !== $templateData) { + $view->setTemplateData($templateData); + } + + $this->assertEquals($expected, $handler->prepareTemplateParameters($view)); + } + + public function prepareTemplateParametersDataProvider() + { + $object = new \stdClass(); + + $formView = new FormView(); + $form = $this->getMockBuilder('Symfony\Component\Form\Form') + ->setMethods(array('createView', 'getData')) + ->disableOriginalConstructor() + ->getMock(); + $form + ->expects($this->once()) + ->method('createView') + ->will($this->returnValue($formView)); + $form + ->expects($this->once()) + ->method('getData') + ->will($this->returnValue($formView)); + + $self = $this; + + return array( + 'assoc array does not change' => array(array('foo' => 'bar'), null, array('foo' => 'bar')), + 'ordered array is wrapped as data key' => array(array('foo', 'bar'), null, array('data' => array('foo', 'bar'))), + 'object is wrapped as data key' => array($object, null, array('data' => $object)), + 'form is wrapped as form key' => array($form, null, array('form' => $formView, 'data' => $formView)), + 'template data is added to data' => array(array('foo' => 'bar'), array('baz' => 'qux'), array('foo' => 'bar', 'baz' => 'qux')), + 'lazy template data is added to data' => array( + array('foo' => 'bar'), + function () { return array('baz' => 'qux'); }, + array('foo' => 'bar', 'baz' => 'qux'), + ), + 'lazy template data have reference to viewhandler and view' => array( + array('foo' => 'bar'), + function ($handler, $view) use ($self) { + $self->assertInstanceOf('FOS\\RestBundle\\View\\ViewHandlerInterface', $handler); + $self->assertInstanceOf('FOS\\RestBundle\\View\\View', $view); + $self->assertTrue($handler->isFormatTemplating($view->getFormat())); + + return array('format' => $view->getFormat()); + }, + array('foo' => 'bar', 'format' => 'html'), + ), + ); + } + + public function testConfigurableViewHandlerInterface() + { + //test + $viewHandler = new ViewHandler(); + $viewHandler->setExclusionStrategyGroups('bar'); + $viewHandler->setExclusionStrategyVersion('1.1'); + $viewHandler->setSerializeNullStrategy(true); + + $contextMethod = new \ReflectionMethod($viewHandler, 'getSerializationContext'); + $contextMethod->setAccessible(true); + + $view = new View(); + $context = $contextMethod->invoke($viewHandler, $view); + $this->assertEquals(array('bar'), $context->attributes->get('groups')->getOrThrow(new \Exception('Serialization groups not set as expected'))); + $this->assertEquals('1.1', $context->attributes->get('version')->getOrThrow(new \Exception('Serialization version not set as expected'))); + $this->assertTrue($context->shouldSerializeNull()); + } + + /** + * @dataProvider exceptionWrapperSerializeResponseContentProvider + * + * @param string $format + */ + public function testCreateResponseWithFormErrorsAndSerializationGroups($format) + { + $form = Forms::createFormFactory()->createBuilder() + ->add('name', 'text') + ->add('description', 'text') + ->getForm(); + + $form->get('name')->addError(new FormError('Invalid name')); + + $exceptionWrapper = new ExceptionWrapper( + array( + 'status_code' => 400, + 'message' => 'Validation Failed', + 'errors' => $form, + ) + ); + + $view = new View($exceptionWrapper); + $view->getSerializationContext()->setGroups(array('Custom')); + + $wrapperHandler = new ExceptionWrapperSerializeHandler(); + $translatorMock = $this->getMock( + 'Symfony\\Component\\Translation\\TranslatorInterface', + array('trans', 'transChoice', 'setLocale', 'getLocale') + ); + $translatorMock + ->expects($this->any()) + ->method('trans') + ->will($this->returnArgument(0)); + + $formErrorHandler = new FormErrorHandler($translatorMock); + + $serializer = SerializerBuilder::create() + ->configureHandlers(function (HandlerRegistry $handlerRegistry) use ($wrapperHandler, $formErrorHandler) { + $handlerRegistry->registerSubscribingHandler($wrapperHandler); + $handlerRegistry->registerSubscribingHandler($formErrorHandler); + }) + ->build(); + + $container = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + $container + ->expects($this->once()) + ->method('get') + ->with('fos_rest.serializer') + ->will($this->returnValue($serializer)); + + $viewHandler = new ViewHandler(array()); + $viewHandler->setContainer($container); + + $response = $viewHandler->createResponse($view, new Request(), $format); + + $serializer2 = SerializerBuilder::create() + ->configureHandlers(function (HandlerRegistry $handlerRegistry) use ($wrapperHandler, $formErrorHandler) { + $handlerRegistry->registerSubscribingHandler($formErrorHandler); + }) + ->build(); + + $container2 = $this->getMock('Symfony\Component\DependencyInjection\Container', array('get')); + $container2 + ->expects($this->once()) + ->method('get') + ->with('fos_rest.serializer') + ->will($this->returnValue($serializer2)); + + $viewHandler = new ViewHandler(array()); + $viewHandler->setContainer($container2); + + $view2 = new View($exceptionWrapper); + $response2 = $viewHandler->createResponse($view2, new Request(), $format); + + $this->assertEquals($response->getContent(), $response2->getContent()); + } + + /** + * @return array + */ + public function exceptionWrapperSerializeResponseContentProvider() + { + return array( + 'json' => array('json'), + 'xml' => array('xml'), + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewTest.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewTest.php new file mode 100644 index 0000000..5f40133 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/View/ViewTest.php @@ -0,0 +1,153 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Tests\View; + +use FOS\RestBundle\View\View; +use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; +use FOS\RestBundle\Util\Codes; + +/** + * View test. + * + * @author Victor Berchet + */ +class ViewTest extends \PHPUnit_Framework_TestCase +{ + /** + * @expectedException \InvalidArgumentException + */ + public function testSetTemplateTemplateFormat() + { + $view = new View(); + + $view->setTemplate('foo'); + $this->assertEquals('foo', $view->getTemplate()); + + $view->setTemplate($template = new TemplateReference()); + $this->assertEquals($template, $view->getTemplate()); + + $view->setTemplate(array()); + } + + public function testSetLocation() + { + $url = 'users'; + $code = 500; + + $view = View::createRedirect($url, $code); + $this->assertAttributeEquals($url, 'location', $view); + $this->assertAttributeEquals(null, 'route', $view); + $this->assertEquals($code, $view->getResponse()->getStatusCode()); + + $view = new View(); + $location = 'location'; + $view->setLocation($location); + $this->assertEquals($location, $view->getLocation()); + } + + public function testSetRoute() + { + $routeName = 'users'; + + $view = View::createRouteRedirect($routeName, array(), Codes::HTTP_CREATED); + $this->assertAttributeEquals($routeName, 'route', $view); + $this->assertAttributeEquals(null, 'location', $view); + $this->assertEquals(Codes::HTTP_CREATED, $view->getResponse()->getStatusCode()); + + $view->setLocation($routeName); + $this->assertAttributeEquals($routeName, 'location', $view); + $this->assertAttributeEquals(null, 'route', $view); + + $view = new View(); + $route = 'route'; + $view->setRoute($route); + $this->assertEquals($route, $view->getRoute()); + } + + /** + * @dataProvider setDataDataProvider + */ + public function testSetData($data) + { + $view = new View(); + $view->setData($data); + $this->assertEquals($data, $view->getData()); + } + + public static function setDataDataProvider() + { + return array( + 'null as data' => array(null), + 'array as data' => array(array('foo' => 'bar')), + ); + } + + /** + * @dataProvider setTemplateDataDataProvider + */ + public function testSetTemplateData($templateData) + { + $view = new View(); + $view->setTemplateData($templateData); + $this->assertEquals($templateData, $view->getTemplateData()); + } + + public static function setTemplateDataDataProvider() + { + return array( + 'null as data' => array(null), + 'array as data' => array(array('foo' => 'bar')), + 'function as data' => array(function () {}), + ); + } + + public function testSetEngine() + { + $view = new View(); + $engine = 'bar'; + $view->setEngine($engine); + $this->assertEquals($engine, $view->getEngine()); + } + + public function testSetFormat() + { + $view = new View(); + $format = 'bar'; + $view->setFormat($format); + $this->assertEquals($format, $view->getFormat()); + } + + public function testSetHeaders() + { + $view = new View(); + $headers = array('foo' => 'bar'); + $expected = array('foo' => array('bar'), 'cache-control' => array('no-cache')); + $view->setHeaders($headers); + $this->assertEquals($expected, $view->getHeaders()); + } + + public function testHeadersInConstructorAreAssignedToResponseObject() + { + $headers = array('foo' => 'bar'); + $expected = array('foo' => array('bar'), 'cache-control' => array('no-cache')); + $view = new View(null, null, $headers); + $this->assertEquals($expected, $view->getHeaders()); + } + + public function testSetStatusCode() + { + $view = new View(); + $code = 404; + $view->setStatusCode($code); + $this->assertEquals($code, $view->getStatusCode()); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/bootstrap.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/bootstrap.php new file mode 100644 index 0000000..8f39faf --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Tests/bootstrap.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$file = __DIR__.'/../vendor/autoload.php'; +if (!file_exists($file)) { + throw new RuntimeException('Install dependencies to run test suite.'); +} + +$autoload = require_once $file; + +use Doctrine\Common\Annotations\AnnotationRegistry; + +AnnotationRegistry::registerLoader(function ($class) { + if (strpos($class, 'FOS\RestBundle\Controller\Annotations\\') === 0) { + $path = __DIR__.'/../'.str_replace('\\', '/', substr($class, strlen('FOS\RestBundle\\'))).'.php'; + require_once $path; + } + + return class_exists($class, false); +}); diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/UPGRADING.md b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/UPGRADING.md new file mode 100644 index 0000000..83af372 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/UPGRADING.md @@ -0,0 +1,147 @@ +Upgrading +========= + +This document will be updated to list important BC breaks and behavioral changes. + +### upgrading to 2.0.0 (unreleased) + + * RedirectView and RouteRedirect view were removed. Use View::createRedirect and + View::createRouteRedirect instead. Note: the default status code for a route redirect + has changed from HTTP_CREATED (201) to HTTP_FOUND (302). + +### upgrading from 1.5.* + + * Dropped support for Symfony 2.2 (which includes dropping support for "pattern" in favor of only supporting "path" in routes), see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/952 + * Dropped support for SensioFrameworkExtraBundle 2.x, see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/952 + (support for SensioFrameworkExtraBundle was added back in version 1.6.1 of the FOSRestBundle) + +### upgrading from 1.4.* + + * In JsonToFormDecoder prefer to transform false data to null, see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/883 + * Routing name is no longer appended to generic route name, see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/879 + +### upgrading from 1.3.* + + * [`ViewHandler::getSerializationContext`](https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/View/ViewHandler.php) is now a `protected` method instead of `public`. + * BodyListener priority has been reverted back to 10 (see https://github.com/FriendsOfSymfony/FOSRestBundle/issues/763) + +### upgrading from 1.0.0-RC1 + + * The Bundle no longer depends on "friendsofsymfony/rest" and as a result several class names have changed. + Specifically ``FOS\Rest\Util\Codes`` is now ``FOS\RestBundle\Util\Codes`` and also the sub-namespace for + the decoders has changed from ``FOS\Rest\Decoder`` to ``FOS\RestBundle\Decoder``. In practice it should be + sufficient to simply search replace ``FOS\Rest\`` with ``FOS\RestBundle\`. + * The XmlDecoder now has a dependency on "symfony/serializer" + +### upgrading from 0.13.1 + + * ExceptionController::showAction() doesn't have type hint on the $exception object anymore due to a BC change + in symfony/symfony 2.3.5, see https://github.com/FriendsOfSymfony/FOSRestBundle/pull/565 + + * POST routes now pluralize the resource name, ie. /users vs. /user + + * The response for non-valid Forms has changed. See http://symfony.com/doc/master/bundles/FOSRestBundle/2-the-view-layer.html#forms-and-views + + * The default error message structure has changed. + + _Old structure_ + + { + "status": "error", + "status_code": 400, + "status_text": "Bad Request", + "current_content": "", + "message": "New comment is not valid." + } + + _New structure_ + + { + "code": 400, + "message": "New comment is not valid."; + } + + _Alternatively you can inject your own implementation. See http://symfony.com/doc/master/bundles/FOSRestBundle/2-the-view-layer.html#forms-and-views_ + + * The ``format_listener`` configuration has changed to allow different settings per host/path. + Finally the signature of FormatNegotiatorInterface::getBestFormat() changed. + +### upgrading from 0.12.0 + +* Route parameters cannot be set via setData anymore, please use a dedicated function `setRouteParameters` from now on + +### upgrading from 0.11.0 + +* now requires JMSSerializerBundle 0.12 +* refactored the View class to drop the serializer specific methods in favor of setSerializationContext() +* default version/groups will now only be applied if no SerializationContext was explicitly set on the View + +### upgrading from 0.10.0 + +* now requires JMSSerializerBundle 1.0 (later renamed to 0.11) which is not compatible with Symfony2.0 + +### upgrading from 0.9.0 + + * the view response listener is now disabled by default. See [enable view listener](http://symfony.com/doc/master/bundles/FOSRestBundle/3-listener-support.html#view-response-listener) for how to enable it. + * JMSSerializerBundle is now an optional dependency and therefore needs to be added explicitly + +### upgrading from 0.7.0 + + * renamed "query" fetcher to "param" fetcher, this affects the configuration as well as the name of interfaces and request attributes + * ViewHandler now only calls "createView()" in a single form instance set as "form" in the data array + * removed "serializer_version" config option on favor of "serializer: ['version': ..]" + +### upgrading from 0.6.0 + + * renamed [get|set]Objects*() to [get|set]Serializer*() + * renamed the "objects_version: XXX" configuration option to "serializer: [version: XXX]" + * moved serializer configuration code from ViewHandler::createResponse() to ViewHandler::getSerializer() + * made ViewHandler::getSerializer() protected again + +### 19 April 2012 + + * Change route fallback action to PATCH instead of POST + + Automatically generated routes will now fall back to the PATCH instead of the POST method. + + More information in the docs, at [this issue](https://github.com/FriendsOfSymfony/FOSRestBundle/issues/223) and [this PR](https://github.com/FriendsOfSymfony/FOSRestBundle/pull/224). + +### upgrading from 0.5.0_old_serializer + + * The ViewInterface is gone so you might have to change your controller config if you refer to the fos_rest.view service. + + * The View class is now split into a View (simple data container) and a ViewHandler (contains the actual rendering logic). + + The following code would need to be changed: + + public function indexAction($name = null) + { + $view = $this->container->get('fos_rest.view'); + + if (!$name) { + $view->setResourceRoute('_welcome'); + } else { + $view->setParameters(array('name' => $name)); + $view->setTemplate(new TemplateReference('LiipHelloBundle', 'Hello', 'index')); + } + + return $view->handle(); + } + + To the following code: + + public function indexAction($name = null) + { + if (!$name) { + $view = \FOS\RestBundle\View\RouteRedirectView::create('_welcome'); + } else { + $view = \FOS\RestBundle\View\View::create(array('name' => $name)) + ->setTemplate(new TemplateReference('LiipHelloBundle', 'Hello', 'index')); + ; + } + + return $this->container->get('fos_rest.view_handler')->handle($view); + } + + * The custom Serializer class was removed instead JMSSerializerBundle is now used, which + replaces the concept of normalizers/encoders with the concept of visitors and handler diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Codes.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Codes.php new file mode 100644 index 0000000..7399819 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Codes.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +/** + * List of HTTP response status codes. + * + * The list of codes is complete according to the + * {@link http://www.iana.org/assignments/http-status-codes/ Hypertext Transfer Protocol (HTTP) Status Code Registry} + * (last updated 2012-02-13). + * + * Unless otherwise noted, the status code is defined in RFC2616. + * + * @author Jordi Boggiano + * @author Markus Lanthaler + */ +final class Codes +{ + const HTTP_CONTINUE = 100; + const HTTP_SWITCHING_PROTOCOLS = 101; + const HTTP_PROCESSING = 102; // RFC2518 + const HTTP_OK = 200; + const HTTP_CREATED = 201; + const HTTP_ACCEPTED = 202; + const HTTP_NON_AUTHORITATIVE_INFORMATION = 203; + const HTTP_NO_CONTENT = 204; + const HTTP_RESET_CONTENT = 205; + const HTTP_PARTIAL_CONTENT = 206; + const HTTP_MULTI_STATUS = 207; // RFC4918 + const HTTP_ALREADY_REPORTED = 208; // RFC5842 + const HTTP_IM_USED = 226; // RFC3229 + const HTTP_MULTIPLE_CHOICES = 300; + const HTTP_MOVED_PERMANENTLY = 301; + const HTTP_FOUND = 302; + const HTTP_SEE_OTHER = 303; + const HTTP_NOT_MODIFIED = 304; + const HTTP_USE_PROXY = 305; + const HTTP_RESERVED = 306; + const HTTP_TEMPORARY_REDIRECT = 307; + const HTTP_PERMANENTLY_REDIRECT = 308; // RFC-reschke-http-status-308-07 + const HTTP_BAD_REQUEST = 400; + const HTTP_UNAUTHORIZED = 401; + const HTTP_PAYMENT_REQUIRED = 402; + const HTTP_FORBIDDEN = 403; + const HTTP_NOT_FOUND = 404; + const HTTP_METHOD_NOT_ALLOWED = 405; + const HTTP_NOT_ACCEPTABLE = 406; + const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407; + const HTTP_REQUEST_TIMEOUT = 408; + const HTTP_CONFLICT = 409; + const HTTP_GONE = 410; + const HTTP_LENGTH_REQUIRED = 411; + const HTTP_PRECONDITION_FAILED = 412; + const HTTP_REQUEST_ENTITY_TOO_LARGE = 413; + const HTTP_REQUEST_URI_TOO_LONG = 414; + const HTTP_UNSUPPORTED_MEDIA_TYPE = 415; + const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416; + const HTTP_EXPECTATION_FAILED = 417; + const HTTP_I_AM_A_TEAPOT = 418; // RFC2324 + const HTTP_UNPROCESSABLE_ENTITY = 422; // RFC4918 + const HTTP_LOCKED = 423; // RFC4918 + const HTTP_FAILED_DEPENDENCY = 424; // RFC4918 + const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425; // RFC2817 + const HTTP_UPGRADE_REQUIRED = 426; // RFC2817 + const HTTP_PRECONDITION_REQUIRED = 428; // RFC6585 + const HTTP_TOO_MANY_REQUESTS = 429; // RFC6585 + const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; // RFC6585 + const HTTP_INTERNAL_SERVER_ERROR = 500; + const HTTP_NOT_IMPLEMENTED = 501; + const HTTP_BAD_GATEWAY = 502; + const HTTP_SERVICE_UNAVAILABLE = 503; + const HTTP_GATEWAY_TIMEOUT = 504; + const HTTP_VERSION_NOT_SUPPORTED = 505; + const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506; // RFC2295 + const HTTP_INSUFFICIENT_STORAGE = 507; // RFC4918 + const HTTP_LOOP_DETECTED = 508; // RFC5842 + const HTTP_NOT_EXTENDED = 510; // RFC2774 + const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511; // RFC6585 +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ExceptionWrapper.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ExceptionWrapper.php new file mode 100644 index 0000000..22d2589 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ExceptionWrapper.php @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +use Symfony\Component\Form\FormInterface; + +/** + * Wraps an exception into the FOSRest exception format. + */ +class ExceptionWrapper +{ + private $code; + private $message; + private $errors; + + /** + * @param array $data + */ + public function __construct($data) + { + $this->code = $data['status_code']; + $this->message = $data['message']; + + if (isset($data['errors'])) { + $this->errors = $data['errors']; + } + } + + /** + * @return int + */ + public function getCode() + { + return $this->code; + } + + /** + * @return FormInterface + */ + public function getErrors() + { + return $this->errors; + } + + /** + * @return string + */ + public function getMessage() + { + return $this->message; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiator.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiator.php new file mode 100644 index 0000000..8ff3d38 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiator.php @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestMatcherInterface; +use Negotiation\FormatNegotiator as BaseFormatNegotiator; +use Negotiation\AcceptHeader; + +class FormatNegotiator implements MediaTypeNegotiatorInterface +{ + private $formatNegotiator; + private $map = array(); + + public function __construct() + { + $this->formatNegotiator = new BaseFormatNegotiator(); + } + + /** + * @param RequestMatcherInterface $requestMatcher + * @param array $options + */ + public function add(RequestMatcherInterface $requestMatcher, array $options = array()) + { + $this->map[] = array($requestMatcher, $options); + } + + /** + * Detects the request format based on the priorities and the Accept header. + * + * @param Request $request + * + * @return null|string + */ + public function getBestFormat(Request $request) + { + $mediaType = $this->getBestMediaType($request); + if (null === $mediaType) { + return; + } + + return $this->getFormat($mediaType); + } + + /** + * Detects the request format based on the priorities and the Accept header. + * + * @param Request $request + * + * @return null|string + */ + public function getBestMediaType(Request $request) + { + foreach ($this->map as $elements) { + if (null === $elements[0] || $elements[0]->matches($request)) { + $options = $elements[1]; + } + + if (!empty($options['stop'])) { + throw new StopFormatListenerException('Stopped format listener'); + } + + if (empty($options['priorities'])) { + if (!empty($options['fallback_format'])) { + return $request->getMimeType($options['fallback_format']); + } + + continue; + } + + $acceptHeader = $request->headers->get('Accept'); + + if ($options['prefer_extension']) { + // ensure we only need to compute $extensionHeader once + if (!isset($extensionHeader)) { + if (preg_match('/.*\.([a-z0-9]+)$/', $request->getPathInfo(), $matches)) { + $extension = $matches[1]; + } + + // $extensionHeader will now be either a non empty string or an empty string + $extensionHeader = isset($extension) ? (string) $request->getMimeType($extension) : ''; + if ($acceptHeader && $extensionHeader) { + $extensionHeader = ','.$extensionHeader; + } + } + if ($extensionHeader) { + $acceptHeader .= $extensionHeader.'; q='.$options['prefer_extension']; + } + } + + $mimeTypes = $this->formatNegotiator->normalizePriorities($options['priorities']); + $mediaType = $this->formatNegotiator->getBest($acceptHeader, $mimeTypes); + if ($mediaType instanceof AcceptHeader && !$mediaType->isMediaRange()) { + return $mediaType->getValue(); + } + + if (isset($options['fallback_format'])) { + // if false === fallback_format then we fail here instead of considering more rules + if (false === $options['fallback_format']) { + return; + } + + // stop looking at rules since we have a fallback defined + return $request->getMimeType($options['fallback_format']); + } + } + + return; + } + + /** + * Registers a new format with its mime types. + * + * @param string $format + * @param array $mimeTypes + * @param bool $override + */ + public function registerFormat($format, array $mimeTypes, $override = false) + { + $this->formatNegotiator->registerFormat($format, $mimeTypes, $override); + } + + /** + * Returns the format for a given mime type, or null if not found. + * + * @param string $mimeType + * + * @return string|null + */ + public function getFormat($mimeType) + { + return $this->formatNegotiator->getFormat($mimeType); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiatorInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiatorInterface.php new file mode 100644 index 0000000..ffd2b4a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/FormatNegotiatorInterface.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +use Symfony\Component\HttpFoundation\Request; + +interface FormatNegotiatorInterface +{ + /** + * Gets the best format. + * + * @param Request $request + * + * @return null|string + */ + public function getBestFormat(Request $request); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/DoctrineInflector.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/DoctrineInflector.php new file mode 100644 index 0000000..cdf9a2a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/DoctrineInflector.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util\Inflector; + +use Doctrine\Common\Inflector\Inflector; + +/** + * Inflector object using the Doctrine/Inflector. + * + * @author Mark Kazemier + */ +class DoctrineInflector implements InflectorInterface +{ + /** + * {@inheritdoc} + */ + public function pluralize($word) + { + return Inflector::pluralize($word); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/InflectorInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/InflectorInterface.php new file mode 100644 index 0000000..09c5e48 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/Inflector/InflectorInterface.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util\Inflector; + +/** + * Inflector interface. + * + * @author Mark Kazemier + */ +interface InflectorInterface +{ + /** + * Pluralizes noun. + * + * @param string $word + * + * @return string + */ + public function pluralize($word); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/MediaTypeNegotiatorInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/MediaTypeNegotiatorInterface.php new file mode 100644 index 0000000..e1379a0 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/MediaTypeNegotiatorInterface.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +use Symfony\Component\HttpFoundation\Request; + +interface MediaTypeNegotiatorInterface extends FormatNegotiatorInterface +{ + /** + * Gets the best media type. + * + * @param Request $request The request + * + * @return null|string + */ + public function getBestMediaType(Request $request); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/StopFormatListenerException.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/StopFormatListenerException.php new file mode 100644 index 0000000..ede3d84 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/StopFormatListenerException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +/** + * Thrown to stop the format negotiator from continuing so that no format is set. + */ +class StopFormatListenerException extends \Exception +{ +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatter.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatter.php new file mode 100644 index 0000000..68da45d --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatter.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +use FOS\RestBundle\Controller\Annotations\Param; +use FOS\RestBundle\Controller\Annotations\QueryParam; +use Symfony\Component\Validator\ConstraintViolationInterface; +use Symfony\Component\Validator\ConstraintViolationListInterface; + +class ViolationFormatter implements ViolationFormatterInterface +{ + /** + * {@inheritdoc} + */ + public function format(Param $param, ConstraintViolationInterface $violation) + { + return sprintf( + "%s parameter %s value '%s' violated a constraint (%s)", + $param instanceof QueryParam ? 'Query' : 'Request', + $param->getKey(), + $violation->getInvalidValue(), + $violation->getMessage() + ); + } + + /** + * {@inheritdoc} + */ + public function formatList(Param $param, ConstraintViolationListInterface $violationList) + { + $str = ''; + foreach ($violationList as $key => $violation) { + if ($key > 0) { + $str .= "\n"; + } + $str .= $this->format($param, $violation); + } + + return $str; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatterInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatterInterface.php new file mode 100644 index 0000000..f3c6b5a --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/Util/ViolationFormatterInterface.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\Util; + +use FOS\RestBundle\Controller\Annotations\Param; +use Symfony\Component\Validator\ConstraintViolationInterface; +use Symfony\Component\Validator\ConstraintViolationListInterface; + +interface ViolationFormatterInterface +{ + /** + * Format a Param's ConstraintViolation into a string message. + * + * @param Param $param + * @param ConstraintViolationInterface $violation + * + * @return string + */ + public function format(Param $param, ConstraintViolationInterface $violation); + + /** + * Format a Param's ConstraintViolationList into a string message. + * + * @param Param $param + * @param ConstraintViolationListInterface $violationList + * + * @return string + */ + public function formatList(Param $param, ConstraintViolationListInterface $violationList); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ConfigurableViewHandlerInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ConfigurableViewHandlerInterface.php new file mode 100644 index 0000000..67e5191 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ConfigurableViewHandlerInterface.php @@ -0,0 +1,41 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +/** + * Specialized ViewInterface that allows dynamic configuration of JMS serializer context aspects. + * + * @author Lukas K. Smith + */ +interface ConfigurableViewHandlerInterface extends ViewHandlerInterface +{ + /** + * Set the default serialization groups. + * + * @param array $groups + */ + public function setExclusionStrategyGroups($groups); + + /** + * Set the default serialization version. + * + * @param string $version + */ + public function setExclusionStrategyVersion($version); + + /** + * If nulls should be serialized. + * + * @param bool $isEnabled + */ + public function setSerializeNullStrategy($isEnabled); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandler.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandler.php new file mode 100644 index 0000000..b5b7536 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandler.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use FOS\RestBundle\Util\ExceptionWrapper; + +/** + * @author: Toni Van de Voorde (toni [dot] vdv [AT] gmail [dot] com) + */ +class ExceptionWrapperHandler implements ExceptionWrapperHandlerInterface +{ + /** + * {@inheritdoc} + */ + public function wrap($data) + { + return new ExceptionWrapper($data); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandlerInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandlerInterface.php new file mode 100644 index 0000000..b397fcd --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ExceptionWrapperHandlerInterface.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use FOS\RestBundle\Util\ExceptionWrapper; + +/** + * @author Toni Van de Voorde (toni [dot] vdv [AT] gmail [dot] com) + */ +interface ExceptionWrapperHandlerInterface +{ + /** + * @param array $data + * + * @return ExceptionWrapper + */ + public function wrap($data); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/JsonpHandler.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/JsonpHandler.php new file mode 100644 index 0000000..4dc6401 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/JsonpHandler.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; + +/** + * Implements a custom handler for JSONP leveraging the ViewHandler. + * + * @author Lukas K. Smith + */ +class JsonpHandler +{ + protected $callbackParam; + + public function __construct($callbackParam) + { + $this->callbackParam = $callbackParam; + } + + protected function getCallback(Request $request) + { + $callback = $request->query->get($this->callbackParam); + $validator = new \JsonpCallbackValidator(); + + if (!$validator->validate($callback)) { + throw new BadRequestHttpException('Invalid JSONP callback value'); + } + + return $callback; + } + + /** + * Handles wrapping a JSON response into a JSONP response. + * + * @param ViewHandler $handler + * @param View $view + * @param Request $request + * @param string $format + * + * @return Response + */ + public function createResponse(ViewHandler $handler, View $view, Request $request, $format) + { + $response = $handler->createResponse($view, $request, 'json'); + + if ($response->isSuccessful()) { + $callback = $this->getCallback($request); + $response->setContent(sprintf('/**/%s(%s)', $callback, $response->getContent())); + $response->headers->set('Content-Type', $request->getMimeType($format)); + } + + return $response; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RedirectView.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RedirectView.php new file mode 100644 index 0000000..dc160bf --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RedirectView.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use FOS\RestBundle\Util\Codes; + +/** + * Url based redirect implementation. + * + * @author Johannes M. Schmitt + * @author Lukas K. Smith + */ +class RedirectView +{ + /** + * Convenience method to allow for a fluent interface. + * + * @param string $url + * @param int $statusCode + * @param array $headers + * + * @return View + * + * @deprecated To be removed in FOSRestBundle 2.0.0. Use View::createRedirect instead. + */ + public static function create($url, $statusCode = Codes::HTTP_FOUND, array $headers = array()) + { + return View::createRedirect($url, $statusCode, $headers); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RouteRedirectView.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RouteRedirectView.php new file mode 100644 index 0000000..036f2f1 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/RouteRedirectView.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use FOS\RestBundle\Util\Codes; + +/** + * Route based redirect implementation. + * + * @author Johannes M. Schmitt + * @author Lukas K. Smith + */ +class RouteRedirectView +{ + /** + * Convenience method to allow for a fluent interface. + * + * @param string $route + * @param array $parameters + * @param int $statusCode + * @param array $headers + * + * @return View + * + * @deprecated To be removed in FOSRestBundle 2.0.0. Use View::createRouteRedirect instead. + */ + public static function create($route, array $parameters = array(), $statusCode = Codes::HTTP_CREATED, array $headers = array()) + { + return View::createRouteRedirect($route, $parameters, $statusCode, $headers); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/View.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/View.php new file mode 100644 index 0000000..7cc75d9 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/View.php @@ -0,0 +1,462 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use FOS\RestBundle\Util\Codes; +use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; +use Symfony\Component\HttpFoundation\Response; +use JMS\Serializer\SerializationContext; + +/** + * Default View implementation. + * + * @author Johannes M. Schmitt + * @author Lukas K. Smith + */ +class View +{ + private $data; + private $templateData = array(); + private $template; + private $templateVar; + private $engine; + private $format; + private $location; + private $route; + private $routeParameters; + + /** + * @var SerializationContext + */ + private $serializationContext; + + /** + * @var Response + */ + private $response; + + /** + * Convenience method to allow for a fluent interface. + * + * @param mixed $data + * @param int $statusCode + * @param array $headers + * + * @return \FOS\RestBundle\View\View + */ + public static function create($data = null, $statusCode = null, array $headers = array()) + { + return new static($data, $statusCode, $headers); + } + + /** + * Convenience method to allow for a fluent interface while creating a redirect to a + * given url. + * + * @param string $url + * @param int $statusCode + * @param array $headers + * + * @return View + */ + public static function createRedirect($url, $statusCode = Codes::HTTP_FOUND, array $headers = array()) + { + $view = static::create(null, $statusCode, $headers); + $view->setLocation($url); + + return $view; + } + + /** + * Convenience method to allow for a fluent interface while creating a redirect to a + * given route. + * + * @param string $route + * @param array $parameters + * @param int $statusCode + * @param array $headers + * + * @return View + */ + public static function createRouteRedirect( + $route, + array $parameters = array(), + $statusCode = Codes::HTTP_FOUND, + array $headers = array() + ) { + $view = static::create(null, $statusCode, $headers); + $view->setRoute($route); + $view->setRouteParameters($parameters); + + return $view; + } + + /** + * Constructor. + * + * @param mixed $data + * @param int $statusCode + * @param array $headers + */ + public function __construct($data = null, $statusCode = null, array $headers = array()) + { + $this->setData($data); + $this->setStatusCode($statusCode ?: 200); + $this->setTemplateVar('data'); + + if (!empty($headers)) { + $this->getResponse()->headers->replace($headers); + } + } + + /** + * Sets the data. + * + * @param mixed $data + * + * @return View + */ + public function setData($data) + { + $this->data = $data; + + return $this; + } + + /** + * Set template variable. + * + * @param array|callable $data + * + * @return View + */ + public function setTemplateData($data = array()) + { + $this->templateData = $data; + + return $this; + } + + /** + * Sets a header. + * + * @param string $name + * @param string $value + * + * @return View + */ + public function setHeader($name, $value) + { + $this->getResponse()->headers->set($name, $value); + + return $this; + } + + /** + * Sets the headers. + * + * @param array $headers + * + * @return View + */ + public function setHeaders(array $headers) + { + $this->getResponse()->headers->replace($headers); + + return $this; + } + + /** + * Sets the HTTP status code. + * + * @param int $code + * + * @return View + */ + public function setStatusCode($code) + { + $this->getResponse()->setStatusCode($code); + + return $this; + } + + /** + * Sets the serialization context. + * + * @param SerializationContext $serializationContext + * + * @return View + */ + public function setSerializationContext(SerializationContext $serializationContext) + { + $this->serializationContext = $serializationContext; + + return $this; + } + + /** + * Sets template to use for the encoding. + * + * @param string|TemplateReference $template + * + * @return View + * + * @throws \InvalidArgumentException if the template is neither a string nor an instance of TemplateReference + */ + public function setTemplate($template) + { + if (!(is_string($template) || $template instanceof TemplateReference)) { + throw new \InvalidArgumentException('The template should be a string or extend TemplateReference'); + } + $this->template = $template; + + return $this; + } + + /** + * Sets template variable name to be used in templating formats. + * + * @param string $templateVar + * + * @return View + */ + public function setTemplateVar($templateVar) + { + $this->templateVar = $templateVar; + + return $this; + } + + /** + * Sets the engine. + * + * @param string $engine + * + * @return View + */ + public function setEngine($engine) + { + $this->engine = $engine; + + return $this; + } + + /** + * Sets the format. + * + * @param string $format + * + * @return View + */ + public function setFormat($format) + { + $this->format = $format; + + return $this; + } + + /** + * Sets the location (implicitly removes the route). + * + * @param string $location + * + * @return View + */ + public function setLocation($location) + { + $this->location = $location; + $this->route = null; + + return $this; + } + + /** + * Sets the route (implicitly removes the location). + * + * @param string $route + * + * @return View + */ + public function setRoute($route) + { + $this->route = $route; + $this->location = null; + + return $this; + } + + /** + * Sets route data. + * + * @param array $parameters + * + * @return View + */ + public function setRouteParameters($parameters) + { + $this->routeParameters = $parameters; + + return $this; + } + + /** + * Sets the response. + * + * @param Response $response + * + * @return View + */ + public function setResponse(Response $response) + { + $this->response = $response; + + return $this; + } + + /** + * Gets the data. + * + * @return mixed|null + */ + public function getData() + { + return $this->data; + } + + /** + * Gets the template data. + * + * @return mixed|null + */ + public function getTemplateData() + { + return $this->templateData; + } + + /** + * Gets the HTTP status code. + * + * @return int|null + */ + public function getStatusCode() + { + return $this->getResponse()->getStatusCode(); + } + + /** + * Gets the headers. + * + * @return array + */ + public function getHeaders() + { + return $this->getResponse()->headers->all(); + } + + /** + * Gets the template. + * + * @return TemplateReference|string|null + */ + public function getTemplate() + { + return $this->template; + } + + /** + * Gets the template variable name. + * + * @return string|null + */ + public function getTemplateVar() + { + return $this->templateVar; + } + + /** + * Gets the engine. + * + * @return string|null + */ + public function getEngine() + { + return $this->engine; + } + + /** + * Gets the format. + * + * @return string|null + */ + public function getFormat() + { + return $this->format; + } + + /** + * Gets the location. + * + * @return string|null + */ + public function getLocation() + { + return $this->location; + } + + /** + * Gets the route. + * + * @return string|null + */ + public function getRoute() + { + return $this->route; + } + + /** + * Gets route parameters. + * + * @return array|null + */ + public function getRouteParameters() + { + return $this->routeParameters; + } + + /** + * Gets the response. + * + * @return Response + */ + public function getResponse() + { + if (null === $this->response) { + $this->response = new Response(); + } + + return $this->response; + } + + /** + * Gets the serialization context. + * + * @return SerializationContext + */ + public function getSerializationContext() + { + if (null === $this->serializationContext) { + $this->serializationContext = new SerializationContext(); + } + + return $this->serializationContext; + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandler.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandler.php new file mode 100644 index 0000000..b0027b2 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandler.php @@ -0,0 +1,517 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use JMS\Serializer\SerializerInterface; +use JMS\Serializer\SerializationContext; +use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException; +use Symfony\Component\DependencyInjection\ContainerAware; +use Symfony\Component\Form\FormInterface; +use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; +use FOS\RestBundle\Util\Codes; + +/** + * View may be used in controllers to build up a response in a format agnostic way + * The View class takes care of encoding your data in json, xml, or renders a + * template for html via the Serializer component. + * + * @author Jordi Boggiano + * @author Lukas K. Smith + */ +class ViewHandler extends ContainerAware implements ConfigurableViewHandlerInterface +{ + /** + * Key format, value a callable that returns a Response instance. + * + * @var array + */ + protected $customHandlers = array(); + + /** + * The supported formats as keys and if the given formats + * uses templating is denoted by a true value. + * + * @var array + */ + protected $formats; + + /** + * HTTP response status code for a failed validation. + * + * @var int + */ + protected $failedValidationCode; + + /** + * HTTP response status code when the view data is null. + * + * @var int + */ + protected $emptyContentCode; + + /** + * Whether or not to serialize null view data. + * + * @var bool + */ + protected $serializeNull; + + /** + * If to force a redirect for the given key format, + * with value being the status code to use. + * + * @var array + */ + protected $forceRedirects; + + /** + * @var string + */ + protected $defaultEngine; + + /** + * @var array + */ + protected $exclusionStrategyGroups = array(); + + /** + * @var string + */ + protected $exclusionStrategyVersion; + + /** + * @var bool + */ + protected $serializeNullStrategy; + + /** + * Constructor. + * + * @param array $formats the supported formats as keys and if the given formats uses templating is denoted by a true value + * @param int $failedValidationCode The HTTP response status code for a failed validation + * @param int $emptyContentCode HTTP response status code when the view data is null + * @param bool $serializeNull Whether or not to serialize null view data + * @param array $forceRedirects If to force a redirect for the given key format, with value being the status code to use + * @param string $defaultEngine default engine (twig, php ..) + */ + public function __construct( + array $formats = null, + $failedValidationCode = Codes::HTTP_BAD_REQUEST, + $emptyContentCode = Codes::HTTP_NO_CONTENT, + $serializeNull = false, + array $forceRedirects = null, + $defaultEngine = 'twig' + ) { + $this->formats = (array) $formats; + $this->failedValidationCode = $failedValidationCode; + $this->emptyContentCode = $emptyContentCode; + $this->serializeNull = $serializeNull; + $this->forceRedirects = (array) $forceRedirects; + $this->defaultEngine = $defaultEngine; + } + + /** + * Sets the default serialization groups. + * + * @param array|string $groups + */ + public function setExclusionStrategyGroups($groups) + { + $this->exclusionStrategyGroups = $groups; + } + + /** + * Sets the default serialization version. + * + * @param string $version + */ + public function setExclusionStrategyVersion($version) + { + $this->exclusionStrategyVersion = $version; + } + + /** + * If nulls should be serialized. + * + * @param bool $isEnabled + */ + public function setSerializeNullStrategy($isEnabled) + { + $this->serializeNullStrategy = $isEnabled; + } + + /** + * {@inheritdoc} + */ + public function supports($format) + { + return isset($this->customHandlers[$format]) || isset($this->formats[$format]); + } + + /** + * Registers a custom handler. + * + * The handler must have the following signature: handler(ViewHandler $viewHandler, View $view, Request $request, $format) + * It can use the public methods of this class to retrieve the needed data and return a + * Response object ready to be sent. + * + * @param string $format + * @param callable $callable + * + * @throws \InvalidArgumentException + */ + public function registerHandler($format, $callable) + { + if (!is_callable($callable)) { + throw new \InvalidArgumentException('Registered view callback must be callable.'); + } + + $this->customHandlers[$format] = $callable; + } + + /** + * Gets a response HTTP status code from a View instance. + * + * By default it will return 200. However if there is a FormInterface stored for + * the key 'form' in the View's data it will return the failed_validation + * configuration if the form instance has errors. + * + * @param View $view + * @param mixed $content + * + * @return int HTTP status code + */ + protected function getStatusCode(View $view, $content = null) + { + $form = $this->getFormFromView($view); + + if ($form && $form->isSubmitted() && !$form->isValid()) { + return $this->failedValidationCode; + } + + if (200 !== ($code = $view->getStatusCode())) { + return $code; + } + + return null !== $content ? Codes::HTTP_OK : $this->emptyContentCode; + } + + /** + * If the given format uses the templating system for rendering. + * + * @param string $format + * + * @return bool + */ + public function isFormatTemplating($format) + { + return !empty($this->formats[$format]); + } + + /** + * Gets the router service. + * + * @return \Symfony\Component\Routing\RouterInterface + */ + protected function getRouter() + { + return $this->container->get('fos_rest.router'); + } + + /** + * Gets the serializer service. + * + * @param View $view view instance from which the serializer should be configured + * + * @return object that must provide a "serialize()" method + */ + protected function getSerializer(View $view = null) + { + return $this->container->get('fos_rest.serializer'); + } + + /** + * Gets or creates a JMS\Serializer\SerializationContext and initializes it with + * the view exclusion strategies, groups & versions if a new context is created. + * + * @param View $view + * + * @return SerializationContext + */ + protected function getSerializationContext(View $view) + { + $context = $view->getSerializationContext(); + + if ($context->attributes->get('groups')->isEmpty() && $this->exclusionStrategyGroups) { + $context->setGroups($this->exclusionStrategyGroups); + } + + if ($context->attributes->get('version')->isEmpty() && $this->exclusionStrategyVersion) { + $context->setVersion($this->exclusionStrategyVersion); + } + + if (null === $context->shouldSerializeNull() && null !== $this->serializeNullStrategy) { + $context->setSerializeNull($this->serializeNullStrategy); + } + + return $context; + } + + /** + * Gets the templating service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\EngineInterface + */ + protected function getTemplating() + { + return $this->container->get('fos_rest.templating'); + } + + /** + * Handles a request with the proper handler. + * + * Decides on which handler to use based on the request format. + * + * @param View $view + * @param Request $request + * + * @return Response + * + * @throws UnsupportedMediaTypeHttpException + */ + public function handle(View $view, Request $request = null) + { + if (null === $request) { + $request = $this->container->get('request'); + } + + $format = $view->getFormat() ?: $request->getRequestFormat(); + + if (!$this->supports($format)) { + $msg = "Format '$format' not supported, handler must be implemented"; + throw new UnsupportedMediaTypeHttpException($msg); + } + + if (isset($this->customHandlers[$format])) { + return call_user_func($this->customHandlers[$format], $this, $view, $request, $format); + } + + return $this->createResponse($view, $request, $format); + } + + /** + * Creates the Response from the view. + * + * @param View $view + * @param string $location + * @param string $format + * + * @return Response + */ + public function createRedirectResponse(View $view, $location, $format) + { + $content = null; + if (($view->getStatusCode() == Codes::HTTP_CREATED || $view->getStatusCode() == Codes::HTTP_ACCEPTED) && $view->getData() != null) { + $response = $this->initResponse($view, $format); + } else { + $response = $view->getResponse(); + if ('html' === $format && isset($this->forceRedirects[$format])) { + $redirect = new RedirectResponse($location); + $content = $redirect->getContent(); + $response->setContent($content); + } + } + + $code = isset($this->forceRedirects[$format]) + ? $this->forceRedirects[$format] : $this->getStatusCode($view, $content); + + $response->setStatusCode($code); + $response->headers->set('Location', $location); + + return $response; + } + + /** + * Renders the view data with the given template. + * + * @param View $view + * @param string $format + * + * @return string + */ + public function renderTemplate(View $view, $format) + { + $data = $this->prepareTemplateParameters($view); + + $template = $view->getTemplate(); + if ($template instanceof TemplateReference) { + if (null === $template->get('format')) { + $template->set('format', $format); + } + + if (null === $template->get('engine')) { + $engine = $view->getEngine() ?: $this->defaultEngine; + $template->set('engine', $engine); + } + } + + return $this->getTemplating()->render($template, $data); + } + + /** + * Prepares view data for use by templating engine. + * + * @param View $view + * + * @return array + */ + public function prepareTemplateParameters(View $view) + { + $data = $view->getData(); + + if ($data instanceof FormInterface) { + $data = array($view->getTemplateVar() => $data->getData(), 'form' => $data); + } elseif (empty($data) || !is_array($data) || is_numeric((key($data)))) { + $data = array($view->getTemplateVar() => $data); + } + + if (isset($data['form']) && $data['form'] instanceof FormInterface) { + $data['form'] = $data['form']->createView(); + } + + $templateData = $view->getTemplateData(); + if (is_callable($templateData)) { + $templateData = call_user_func($templateData, $this, $view); + } + + return array_merge($data, $templateData); + } + + /** + * Handles creation of a Response using either redirection or the templating/serializer service. + * + * @param View $view + * @param Request $request + * @param string $format + * + * @return Response + */ + public function createResponse(View $view, Request $request, $format) + { + $route = $view->getRoute(); + $location = $route + ? $this->getRouter()->generate($route, (array) $view->getRouteParameters(), true) + : $view->getLocation(); + + if ($location) { + return $this->createRedirectResponse($view, $location, $format); + } + + $response = $this->initResponse($view, $format); + + if (!$response->headers->has('Content-Type')) { + $response->headers->set('Content-Type', $request->getMimeType($format)); + } + + return $response; + } + + /** + * Initializes a response object that represents the view and holds the view's status code. + * + * @param View $view + * @param string $format + * + * @return Response + */ + private function initResponse(View $view, $format) + { + $content = null; + if ($this->isFormatTemplating($format)) { + $content = $this->renderTemplate($view, $format); + } elseif ($this->serializeNull || null !== $view->getData()) { + $data = $this->getDataFromView($view); + $serializer = $this->getSerializer($view); + if ($serializer instanceof SerializerInterface) { + $context = $this->getSerializationContext($view); + $content = $serializer->serialize($data, $format, $context); + } else { + $content = $serializer->serialize($data, $format); + } + } + + $response = $view->getResponse(); + $response->setStatusCode($this->getStatusCode($view, $content)); + + if (null !== $content) { + $response->setContent($content); + } + + return $response; + } + + /** + * Returns the form from the given view if present, false otherwise. + * + * @param View $view + * + * @return bool|FormInterface + */ + protected function getFormFromView(View $view) + { + $data = $view->getData(); + + if ($data instanceof FormInterface) { + return $data; + } + + if (is_array($data) && isset($data['form']) && $data['form'] instanceof FormInterface) { + return $data['form']; + } + + return false; + } + + /** + * Returns the data from a view. If the data is form with errors, it will return it wrapped in an ExceptionWrapper. + * + * @param View $view + * + * @return mixed|null + */ + private function getDataFromView(View $view) + { + $form = $this->getFormFromView($view); + + if (false === $form) { + return $view->getData(); + } + + if ($form->isValid() || !$form->isSubmitted()) { + return $form; + } + + /** @var ExceptionWrapperHandlerInterface $exceptionWrapperHandler */ + $exceptionWrapperHandler = $this->container->get('fos_rest.exception_handler'); + + return $exceptionWrapperHandler->wrap( + array( + 'status_code' => $this->failedValidationCode, + 'message' => 'Validation Failed', + 'errors' => $form, + ) + ); + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandlerInterface.php b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandlerInterface.php new file mode 100644 index 0000000..0bda6a4 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandlerInterface.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\RestBundle\View; + +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Request; + +/** + * ViewHandlerInterface. + * + * @author Jordi Boggiano + * @author Lukas K. Smith + */ +interface ViewHandlerInterface +{ + /** + * Verifies whether the given format is supported by this view. + * + * @param string $format + * + * @return bool + */ + public function supports($format); + + /** + * Registers a custom handler. + * + * The handler must have the following signature: handler($viewObject, $request, $response) + * It can use the methods of this class to retrieve the needed data and return a + * Response object ready to be sent. + * + * @param string $format + * @param callable $callable + */ + public function registerHandler($format, $callable); + + /** + * If the given format uses the templating system for rendering. + * + * @param string $format + * + * @return bool + */ + public function isFormatTemplating($format); + + /** + * Handles a request with the proper handler. + * + * Decides on which handler to use based on the request format + * + * @param View $view + * @param Request $request + * + * @return Response + */ + public function handle(View $view, Request $request = null); + + /** + * Create the Response from the view. + * + * @param View $view + * @param string $location + * @param string $format + * + * @return Response + */ + public function createRedirectResponse(View $view, $location, $format); + + /** + * Render the view data with the given template. + * + * @param View $view + * @param string $format + * + * @return string + */ + public function renderTemplate(View $view, $format); + + /** + * Prepare view data for use by templating engine. + * + * @param View $view + * + * @return array + */ + public function prepareTemplateParameters(View $view); + + /** + * Handles creation of a Response using either redirection or the templating/serializer service. + * + * @param View $view + * @param Request $request + * @param string $format + * + * @return Response + */ + public function createResponse(View $view, Request $request, $format); +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/composer.json b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/composer.json new file mode 100644 index 0000000..2e4e6ba --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/composer.json @@ -0,0 +1,72 @@ +{ + "name": "friendsofsymfony/rest-bundle", + "type": "symfony-bundle", + "description": "This Bundle provides various tools to rapidly develop RESTful API's with Symfony2", + "keywords": ["rest"], + "homepage": "http://friendsofsymfony.github.com", + "license": "MIT", + "authors": [ + { + "name": "Lukas Kahwe Smith", + "email": "smith@pooteeweet.org" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + }, + { + "name": "FriendsOfSymfony Community", + "homepage": "https://github.com/friendsofsymfony/FOSRestBundle/contributors" + } + ], + + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/framework-bundle": "~2.3", + "symfony/http-kernel": "~2.3,>=2.3.24", + "doctrine/inflector": "~1.0", + "willdurand/negotiation": "~1.2", + "willdurand/jsonp-callback-validator": "~1.0" + }, + + "require-dev": { + "sensio/framework-extra-bundle": "~3.0", + "symfony/form": "~2.3", + "symfony/validator": "~2.3", + "symfony/serializer": "~2.3", + "symfony/yaml": "~2.3", + "symfony/security": "~2.3", + "symfony/browser-kit": "~2.3", + "symfony/dependency-injection": "~2.3", + "phpoption/phpoption": "~1.1.0", + "jms/serializer": "~0.13|~1.0", + "jms/serializer-bundle": "~0.12|~1.0", + "sllh/php-cs-fixer-styleci-bridge": "^1.3" + }, + + "suggest": { + "sensio/framework-extra-bundle": "Add support for route annotations and the view response listener, requires ~3.0", + "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended, requires ~0.12||~1.0", + "symfony/serializer": "Add support for basic serialization capabilities and xml decoding, requires ~2.3", + "symfony/validator": "Add support for validation capabilities in the ParamFetcher, requires ~2.3" + }, + + "conflict": { + "symfony/validator": ">=2.5.0,<2.5.5", + "jms/serializer": "<0.12", + "jms/serializer-bundle": "<0.11" + }, + + "autoload": { + "psr-0": { "FOS\\RestBundle": "" } + }, + + "target-dir": "FOS/RestBundle", + + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + } +} diff --git a/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/phpunit.xml.dist b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/phpunit.xml.dist new file mode 100644 index 0000000..8c9a201 --- /dev/null +++ b/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/phpunit.xml.dist @@ -0,0 +1,21 @@ + + + + + + ./Tests + + + + + + ./ + + ./Routing/Loader/RestRouteLoader20.php + ./Resources + ./Tests + ./vendor + + + + diff --git a/vendor/willdurand/jsonp-callback-validator/.gitignore b/vendor/willdurand/jsonp-callback-validator/.gitignore new file mode 100644 index 0000000..70f9dc1 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/.gitignore @@ -0,0 +1,3 @@ +/vendor/ +bin/ +composer.lock diff --git a/vendor/willdurand/jsonp-callback-validator/.travis.yml b/vendor/willdurand/jsonp-callback-validator/.travis.yml new file mode 100644 index 0000000..a873b75 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/.travis.yml @@ -0,0 +1,17 @@ +language: php + +php: + - 5.3 + - 5.4 + - 5.5 + - hhvm + +matrix: + allow_failures: + - php: hhvm + +before_script: + - composer self-update + - composer install --dev --prefer-dist --no-interaction + +script: ./vendor/bin/phpunit --coverage-text diff --git a/vendor/willdurand/jsonp-callback-validator/CONTRIBUTING.md b/vendor/willdurand/jsonp-callback-validator/CONTRIBUTING.md new file mode 100644 index 0000000..d993dd7 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/CONTRIBUTING.md @@ -0,0 +1,30 @@ +Contributing +============ + +First of all, **thank you** for contributing, **you are awesome**! + +Here are a few rules to follow in order to ease code reviews, and discussions before +maintainers accept and merge your work. + +You MUST follow the [PSR-1](http://www.php-fig.org/psr/1/) and +[PSR-2](http://www.php-fig.org/psr/2/). If you don't know about any of them, you +should really read the recommendations. Can't wait? Use the [PHP-CS-Fixer +tool](http://cs.sensiolabs.org/). + +You MUST run the test suite. + +You MUST write (or update) unit tests. + +You SHOULD write documentation. + +Please, write [commit messages that make +sense](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html), +and [rebase your branch](http://git-scm.com/book/en/Git-Branching-Rebasing) +before submitting your Pull Request. + +One may ask you to [squash your +commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +too. This is used to "clean" your Pull Request before merging it (we don't want +commits such as `fix tests`, `fix 2`, `fix 3`, etc.). + +Thank you! diff --git a/vendor/willdurand/jsonp-callback-validator/LICENSE b/vendor/willdurand/jsonp-callback-validator/LICENSE new file mode 100644 index 0000000..9632ff1 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 William Durand + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/willdurand/jsonp-callback-validator/README.md b/vendor/willdurand/jsonp-callback-validator/README.md new file mode 100644 index 0000000..87453a6 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/README.md @@ -0,0 +1,87 @@ +JsonpCallbackValidator +====================== + +[![Build +Status](https://travis-ci.org/willdurand/JsonpCallbackValidator.png?branch=master)](https://travis-ci.org/willdurand/JsonpCallbackValidator) +[![Total +Downloads](https://poser.pugx.org/willdurand/jsonp-callback-validator/downloads.png)](https://packagist.org/packages/willdurand/jsonp-callback-validator) +[![Latest Stable +Version](https://poser.pugx.org/willdurand/jsonp-callback-validator/v/stable.png)](https://packagist.org/packages/willdurand/jsonp-callback-validator) + + +**JsonpCallbackValidator** allows you to **validate a JSONP callback** in order +to prevent XSS attacks. + + +Usage +----- + +```php +$validator = new \JsonpCallbackValidator(); + +$validator->validate('JSONP.callback'); +// returns `true` + +$validator->validate('(function xss(x){evil()})'); +// returns `false` +``` + +Or as a static method: + +```php +\JsonpCallbackValidator::validate('JSONP.callback'); +// returns `true` + +\JsonpCallbackValidator::validate('(function xss(x){evil()})'); +// returns `false` +``` + +Installation +------------ + +The recommended way to install JsonpCallbackValidator is through +[Composer](http://getcomposer.org/): + +``` json +{ + "require": { + "willdurand/jsonp-callback-validator": "@stable" + } +} +``` + +**Protip:** you should browse the +[`willdurand/jsonp-callback-validator`](https://packagist.org/packages/willdurand/jsonp-callback-validator) +page to choose a stable version to use, avoid the `@stable` meta constraint. + + +Unit Tests +---------- + +Setup the test suite using Composer: + + $ composer install --dev + +Run it using PHPUnit: + + $ ./vendor/bin/phpunit + + +Contributing +------------ + +See CONTRIBUTING file. + + +Credits +------- + +* Erik Eng ([@ptz0n](https://github.com/ptz0n)) for [his + Gist](https://gist.github.com/ptz0n/1217080) + + +License +------- + +JsonpCallbackValidator is released under the MIT License. See the bundled +LICENSE file for details. diff --git a/vendor/willdurand/jsonp-callback-validator/composer.json b/vendor/willdurand/jsonp-callback-validator/composer.json new file mode 100644 index 0000000..fdaab5b --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/composer.json @@ -0,0 +1,21 @@ +{ + "name": "willdurand/jsonp-callback-validator", + "description": "JSONP callback validator.", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "William DURAND", + "email": "william.durand1@gmail.com" + } + ], + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "autoload": { + "psr-0": { "JsonpCallbackValidator": "src/" } + } +} diff --git a/vendor/willdurand/jsonp-callback-validator/phpunit.xml.dist b/vendor/willdurand/jsonp-callback-validator/phpunit.xml.dist new file mode 100644 index 0000000..915c786 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/phpunit.xml.dist @@ -0,0 +1,23 @@ + + + + + ./tests/ + + + + + ./src/ + + + diff --git a/vendor/willdurand/jsonp-callback-validator/src/JsonpCallbackValidator.php b/vendor/willdurand/jsonp-callback-validator/src/JsonpCallbackValidator.php new file mode 100644 index 0000000..7b31c66 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/src/JsonpCallbackValidator.php @@ -0,0 +1,79 @@ + + */ +class JsonpCallbackValidator +{ + private static $regexp = '/^[a-zA-Z_$][0-9a-zA-Z_$]*(?:\[(?:"(?:\\\.|[^"\\\])*"|\'(?:\\\.|[^\'\\\])*\'|\d+)\])*?$/'; + + private static $reservedKeywords = array( + 'break', + 'do', + 'instanceof', + 'typeof', + 'case', + 'else', + 'new', + 'var', + 'catch', + 'finally', + 'return', + 'void', + 'continue', + 'for', + 'switch', + 'while', + 'debugger', + 'function', + 'this', + 'with', + 'default', + 'if', + 'throw', + 'delete', + 'in', + 'try', + 'class', + 'enum', + 'extends', + 'super', + 'const', + 'export', + 'import', + 'implements', + 'let', + 'private', + 'public', + 'yield', + 'interface', + 'package', + 'protected', + 'static', + 'null', + 'true', + 'false', + ); + + /** + * @param string $callback + * @return boolean + */ + public static function validate($callback) + { + foreach (explode('.', $callback) as $identifier) { + if (!preg_match(self::$regexp, $identifier)) { + return false; + } + + if (in_array($identifier, self::$reservedKeywords)) { + return false; + } + } + + return true; + } +} diff --git a/vendor/willdurand/jsonp-callback-validator/tests/JsonpCallbackValidatorTest.php b/vendor/willdurand/jsonp-callback-validator/tests/JsonpCallbackValidatorTest.php new file mode 100644 index 0000000..27322cc --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/tests/JsonpCallbackValidatorTest.php @@ -0,0 +1,77 @@ +assertEquals($expected, $validator->validate($callback)); + } + + public static function dataProviderForTestValidate() + { + return array( + array('foo', self::IS_VALID), + array('foo123', self::IS_VALID), + array('fos.Router.data', self::IS_VALID), + array('$.callback', self::IS_VALID), + array('_.callback', self::IS_VALID), + array('hello', self::IS_VALID), + array('foo23', self::IS_VALID), + array('$210', self::IS_VALID), + array('_bar', self::IS_VALID), + array('some_var', self::IS_VALID), + array('$', self::IS_VALID), + array('somevar', self::IS_VALID), + array('$.ajaxHandler', self::IS_VALID), + array('array_of_functions[42]', self::IS_VALID), + array('array_of_functions[42][1]', self::IS_VALID), + array('$.ajaxHandler[42][1].foo', self::IS_VALID), + array('array_of_functions["key"]', self::IS_VALID), + array('_function', self::IS_VALID), + array('petersCallback1412331422[12]', self::IS_VALID), + array('(function xss(x){evil()})', self::IS_INVALID), + array('', self::IS_INVALID), + array('alert()', self::IS_INVALID), + array('test()', self::IS_INVALID), + array('a-b', self::IS_INVALID), + array('23foo', self::IS_INVALID), + array('function', self::IS_INVALID), + array(' somevar', self::IS_INVALID), + array('$.23', self::IS_INVALID), + array('array_of_functions[42]foo[1]', self::IS_INVALID), + array('array_of_functions[]', self::IS_INVALID), + array('myFunction[123].false', self::IS_INVALID), + array('myFunction .tester', self::IS_INVALID), + array(':myFunction', self::IS_INVALID), + array('array_of_functions["k"ey"]', self::IS_INVALID), + array('array_of_functions["k\"ey"]', self::IS_VALID), + array('array_of_functions["k""y"]', self::IS_INVALID), + array('array_of_functions["""y"]', self::IS_INVALID), + array('array_of_functions[""""]', self::IS_INVALID), + array('array_of_functions["\""]', self::IS_VALID), + array('array_of_functions["k\"e\""]', self::IS_VALID), + array('array_of_functions["k\'ey"]', self::IS_VALID), + array("array_of_functions['k'ey']", self::IS_INVALID), + array("array_of_functions['k\"ey']", self::IS_VALID), + array("array_of_functions['k\'ey']", self::IS_VALID), + array("array_of_functions['\'key']", self::IS_VALID), + array("array_of_functions['key\'']", self::IS_VALID), + array("array_of_functions['k'ey'']", self::IS_INVALID), + array("array_of_functions[''']", self::IS_INVALID), + array("array_of_functions['\'']", self::IS_VALID), + ); + } + + public function testCallStatically() + { + $this->assertTrue(\JsonpCallbackValidator::validate('foo')); + } +} diff --git a/vendor/willdurand/jsonp-callback-validator/tests/bootstrap.php b/vendor/willdurand/jsonp-callback-validator/tests/bootstrap.php new file mode 100644 index 0000000..d6d4805 --- /dev/null +++ b/vendor/willdurand/jsonp-callback-validator/tests/bootstrap.php @@ -0,0 +1,13 @@ + + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/willdurand/negotiation/README.md b/vendor/willdurand/negotiation/README.md new file mode 100644 index 0000000..3a1accf --- /dev/null +++ b/vendor/willdurand/negotiation/README.md @@ -0,0 +1,157 @@ +Negotiation +=========== + +[![Build Status](https://travis-ci.org/willdurand/Negotiation.png?branch=master)](http://travis-ci.org/willdurand/Negotiation) +[![Total Downloads](https://poser.pugx.org/willdurand/Negotiation/downloads.png)](https://packagist.org/packages/willdurand/Negotiation) +[![Latest Stable Version](https://poser.pugx.org/willdurand/Negotiation/v/stable.png)](https://packagist.org/packages/willdurand/Negotiation) + +**Negotiation** is a standalone library without any dependencies that allows you +to implement [content +negotiation](http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html) in your +application, whatever framework you use. +This library is based on [RFC +2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html). Negotiation is +easy to use, and extensively unit tested. + + +Installation +------------ + +The recommended way to install Negotiation is through +[Composer](http://getcomposer.org/): + +```bash +$ composer require willdurand/negotiation +``` + +**Protip:** you can also choose the correct version via +[`willdurand/negotiation`](https://packagist.org/packages/willdurand/negotiation). + + +Usage +----- + +In a nutshell: + +``` php +getBest('en; q=0.1, fr; q=0.4, fu; q=0.9, de; q=0.2'); +// $bestHeader = 'fu'; +``` + +The `getBest()` method, part of the `NegotiatorInterface`, returns either `null` +or `AcceptHeader` instances. An `AcceptHeader` object owns a `value` and a +`quality`. + + +### Format Negotiation + +The **Format Negotiation** is handled by the `FormatNegotiator` class. +Basically, pass an `Accept` header and optionally a set of preferred media types +to the `getBest()` method in order to retrieve the best **media type**: + +``` php +getBest($acceptHeader, $priorities); +// $format->getValue() = text/html +``` + +The `FormatNegotiator` class also provides a `getBestFormat()` method that +returns the best format given an `Accept` header string and a set of +preferred/allowed formats or mime types: + +``` php +getBestFormat($acceptHeader, $priorities); +// $format = html +``` + +#### Other Methods + +* `registerFormat($format, array $mimeTypes, $override = false)`: registers a new + format with its mime types; +* `getFormat($mimeType)`: returns the format for a given mime type, or null if +not found; +* `normalizePriorities($priorities)`: ensures that any formats are converted to + mime types. + +### Language Negotiation + +Language negotiation is handled by the `LanguageNegotiator` class: + +``` php +getBest('da, en-gb;q=0.8, en;q=0.7'); +// $language = da +``` + + +### Charset/Encoding Negotiation + +Charset/Encoding negotiation works out of the box using the `Negotiator` class: + +``` php +getBest('ISO-8859-1, Big5;q=0.6,utf-8;q=0.7, *;q=0.5', $priorities); +// $bestHeader = 'utf-8' +``` + + +Unit Tests +---------- + +Setup the test suite using Composer: + + $ composer install --dev + +Run it using PHPUnit: + + $ phpunit + + +Contributing +------------ + +See CONTRIBUTING file. + + +Credits +------- + +* Some parts of this library are inspired by: + + * [Symfony](http://github.com/symfony/symfony) framework; + * [FOSRest](http://github.com/FriendsOfSymfony/FOSRest); + * [PEAR HTTP2](https://github.com/pear/HTTP2). + +* William Durand + + +License +------- + +Negotiation is released under the MIT License. See the bundled LICENSE file for details. diff --git a/vendor/willdurand/negotiation/composer.json b/vendor/willdurand/negotiation/composer.json new file mode 100644 index 0000000..321cc80 --- /dev/null +++ b/vendor/willdurand/negotiation/composer.json @@ -0,0 +1,24 @@ +{ + "name": "willdurand/negotiation", + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "keywords": [ "content", "negotiation", "format", "accept", "header" ], + "license": "MIT", + "homepage": "http://williamdurand.fr/Negotiation/", + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-4": { "Negotiation\\": "src/Negotiation" } + }, + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + } +} diff --git a/vendor/willdurand/negotiation/phpunit.xml.dist b/vendor/willdurand/negotiation/phpunit.xml.dist new file mode 100644 index 0000000..ac6f0f9 --- /dev/null +++ b/vendor/willdurand/negotiation/phpunit.xml.dist @@ -0,0 +1,23 @@ + + + + + ./tests/ + + + + + ./src/Negotiation/ + + + diff --git a/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php b/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php new file mode 100644 index 0000000..ee63df3 --- /dev/null +++ b/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php @@ -0,0 +1,100 @@ + + */ +class AcceptHeader +{ + /** + * @var string + */ + private $value; + + /** + * @var float + */ + private $quality; + + /** + * @var array + */ + private $parameters; + + /** + * @param string $value + * @param float $quality + * @param array $parameters + */ + public function __construct($value, $quality, array $parameters = array()) + { + $this->value = $value; + $this->quality = $quality; + $this->parameters = $parameters; + } + + /** + * @return string + */ + public function getMediaType() + { + $parts = explode(';', $this->value, 2); + $mediaType = trim($parts[0], ' '); + + return $mediaType; + } + + /** + * @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * @return float + */ + public function getQuality() + { + return $this->quality; + } + + /** + * @return array + */ + public function getParameters() + { + return $this->parameters; + } + + /** + * @param string $key + * @param mixed $default + * + * @return string|null + */ + public function getParameter($key, $default = null) + { + return $this->hasParameter($key) ? $this->parameters[$key] : $default; + } + + /** + * @param string $key + * + * @return boolean + */ + public function hasParameter($key) + { + return isset($this->parameters[$key]); + } + + /** + * @return boolean + */ + public function isMediaRange() + { + return false !== strpos($this->value, '*'); + } +} diff --git a/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php b/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php new file mode 100644 index 0000000..5406fa5 --- /dev/null +++ b/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php @@ -0,0 +1,192 @@ + + */ +class FormatNegotiator extends Negotiator implements FormatNegotiatorInterface +{ + // https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php + protected $formats = array( + 'html' => array('text/html', 'application/xhtml+xml'), + 'txt' => array('text/plain'), + 'js' => array('application/javascript', 'application/x-javascript', 'text/javascript'), + 'css' => array('text/css'), + 'json' => array('application/json', 'application/x-json'), + 'jsonld' => array('application/ld+json'), + 'xml' => array('text/xml', 'application/xml', 'application/x-xml'), + 'rdf' => array('application/rdf+xml'), + 'atom' => array('application/atom+xml'), + 'rss' => array('application/rss+xml'), + ); + + /** + * {@inheritDoc} + */ + public function getBest($header, array $priorities = array()) + { + $acceptHeaders = $this->parseHeader($header); + $priorities = $this->sanitize($priorities); + $catchAllEnabled = $this->isCatchAllEnabled($priorities); + $catchAllHeader = null; + + foreach ($acceptHeaders as $accept) { + $mimeType = $accept->getValue(); + + if (self::CATCH_ALL_VALUE === $mimeType) { + $catchAllHeader = $accept; + } + + if ('/*' !== substr($mimeType, -2)) { + if (in_array($mimeType, $priorities)) { + return $accept; + } + + $regex = '#^' . preg_quote($mimeType) . '#'; + + foreach ($priorities as $priority) { + if (self::CATCH_ALL_VALUE !== $priority && 1 === preg_match($regex, $priority)) { + return new AcceptHeader($priority, $accept->getQuality(), $this->parseParameters($priority)); + } + } + + continue; + } + + if (false === $catchAllEnabled && + self::CATCH_ALL_VALUE === $mimeType && + self::CATCH_ALL_VALUE !== $value = array_shift($priorities) + ) { + return new AcceptHeader($value, $accept->getQuality(), $this->parseParameters($value)); + } + + if (false === $pos = strpos($mimeType, ';')) { + $pos = strpos($mimeType, '/'); + } + + $regex = '#^' . preg_quote(substr($mimeType, 0, $pos)) . '/#'; + + foreach ($priorities as $priority) { + if (self::CATCH_ALL_VALUE !== $priority && 1 === preg_match($regex, $priority)) { + return new AcceptHeader($priority, $accept->getQuality(), $this->parseParameters($priority)); + } + } + } + + // if client sends `*/*` in Accept header, and nothing has been negotiated before + // then, return the first priority value if available + if (null !== $catchAllHeader) { + $value = array_shift($priorities); + + if (null !== $value && self::CATCH_ALL_VALUE !== $value) { + return new AcceptHeader( + $value, + $catchAllHeader->getQuality(), + $this->parseParameters($catchAllHeader->getValue()) + ); + } + } + + // if `$priorities` is empty or contains a catch-all mime type + if ($catchAllEnabled) { + return array_shift($acceptHeaders) ?: null; + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function getBestFormat($acceptHeader, array $priorities = array()) + { + $mimeTypes = $this->normalizePriorities($priorities); + + if (null !== $accept = $this->getBest($acceptHeader, $mimeTypes)) { + if (0.0 < $accept->getQuality() && + null !== $format = $this->getFormat($accept->getValue()) + ) { + if (in_array($format, $priorities) || $this->isCatchAllEnabled($priorities)) { + return $format; + } + } + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function registerFormat($format, array $mimeTypes, $override = false) + { + if (isset($this->formats[$format]) && false === $override) { + throw new \InvalidArgumentException(sprintf( + 'Format "%s" already registered, and override was set to "false".', + $format + )); + } + + $this->formats[$format] = $mimeTypes; + } + + /** + * {@inheritDoc} + */ + public function getFormat($mimeType) + { + foreach ($this->formats as $format => $mimeTypes) { + if (in_array($mimeType, (array) $mimeTypes)) { + return $format; + } + } + + // strip parameters to, hopefully, find a matching format + if (false !== $pos = strpos($mimeType, ';')) { + $mimeType = substr($mimeType, 0, $pos); + } + + foreach ($this->formats as $format => $mimeTypes) { + if (in_array($mimeType, (array) $mimeTypes)) { + return $format; + } + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function normalizePriorities($priorities) + { + $priorities = $this->sanitize($priorities); + + $mimeTypes = array(); + foreach ($priorities as $priority) { + if (strpos($priority, '/')) { + $mimeTypes[] = $priority; + continue; + } + + if (isset($this->formats[$priority])) { + foreach ($this->formats[$priority] as $mimeType) { + $mimeTypes[] = $mimeType; + } + } + } + + return $mimeTypes; + } + + /** + * @param array $priorities + * + * @return boolean + */ + private function isCatchAllEnabled(array $priorities) + { + return 0 === count($priorities) || in_array(self::CATCH_ALL_VALUE, $priorities); + } +} diff --git a/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php b/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php new file mode 100644 index 0000000..e49847a --- /dev/null +++ b/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php @@ -0,0 +1,51 @@ + + */ +interface FormatNegotiatorInterface extends NegotiatorInterface +{ + /** + * Return the best format (as a string) based on a given `Accept` header, + * and a set of priorities. Priorities are "formats" such as `json`, `xml`, + * etc. or "mime types" such as `application/json`, `application/xml`, etc. + * + * @param string $acceptHeader A string containing an `Accept` header. + * @param array $priorities A set of priorities. + * + * @return string|null + */ + public function getBestFormat($acceptHeader, array $priorities = array()); + + /** + * Register a new format with its mime types. + * + * @param string $format + * @param array $mimeTypes + * @param boolean $override + * + * @return void + */ + public function registerFormat($format, array $mimeTypes, $override = false); + + /** + * Return the format for a given mime type, or null + * if not found. + * + * @param string $mimeType + * + * @return string|null + */ + public function getFormat($mimeType); + + /** + * Ensure that any formats are converted to mime types. + * + * @param array $priorities + * + * @return array + */ + public function normalizePriorities($priorities); +} diff --git a/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php b/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php new file mode 100644 index 0000000..6ba2853 --- /dev/null +++ b/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php @@ -0,0 +1,91 @@ + + */ +class LanguageNegotiator extends Negotiator +{ + /** + * {@inheritDoc} + */ + protected function parseHeader($header) + { + $acceptHeaders = array(); + + $header = preg_replace('/\s+/', '', $header); + $acceptParts = array(); + + preg_match_all( + '/(?<=[, ]|^)([a-zA-Z-]+|\*)(?:;q=([0-9.]+))?(?:$|\s*,\s*)/i', + $header, + $acceptParts, + PREG_SET_ORDER + ); + + $index = 0; + $catchAll = null; + foreach ($acceptParts as $acceptPart) { + $value = $acceptPart[1]; + $quality = isset($acceptPart[2]) ? (float) $acceptPart[2] : 1.0; + + if ('*' === $value) { + $catchAll = new AcceptHeader($value, $quality); + } else { + $acceptHeaders[] = array( + 'item' => new AcceptHeader($value, $quality), + 'index' => $index + ); + } + + $index++; + } + + return $this->sortAcceptHeaders($acceptHeaders, $catchAll); + } + + /** + * {@inheritDoc} + */ + protected function match(array $acceptHeaders, array $priorities = array()) + { + $wildcardAccept = null; + $genericAccept = null; + + $prioritiesSet = array(); + $prioritiesSet[] = $priorities; + $prioritiesSet[] = array_map(function ($priority) { + return strtok($priority, '-'); + }, $priorities); + + foreach ($acceptHeaders as $accept) { + foreach ($prioritiesSet as $availablePriorities) { + $sanitizedPriorities = $this->sanitize($availablePriorities); + + if (false !== $found = array_search(strtolower($accept->getValue()), $sanitizedPriorities)) { + return $priorities[$found]; + } + + if (null === $genericAccept && false !== strpos($accept->getValue(), '-')) { + $genericValue = explode('-', $accept->getValue()); + if ($genericValue && (false !== $found = array_search(strtolower($genericValue[0]), $sanitizedPriorities))) { + $genericAccept = $priorities[$found]; + } + } + + if ('*' === $accept->getValue()) { + $wildcardAccept = $accept; + } + } + } + + if ($genericAccept) { + return $genericAccept; + } + + if (null !== $wildcardAccept) { + return reset($priorities); + } + } +} diff --git a/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php b/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php new file mode 100644 index 0000000..d38b828 --- /dev/null +++ b/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php @@ -0,0 +1,180 @@ + + */ +class Negotiator implements NegotiatorInterface +{ + const CATCH_ALL_VALUE = '*/*'; + + /** + * {@inheritDoc} + */ + public function getBest($header, array $priorities = array()) + { + $acceptHeaders = $this->parseHeader($header); + + if (empty($acceptHeaders)) { + return null; + } elseif (empty($priorities)) { + return reset($acceptHeaders); + } + + $value = $this->match($acceptHeaders, $priorities); + + return empty($value) ? null : new AcceptHeader($value, 1.0, $this->parseParameters($value)); + } + + /** + * @param string $header A string that contains an `Accept|Accept-*` header. + * + * @return AcceptHeader[] + */ + protected function parseHeader($header) + { + $acceptHeaders = array(); + + $header = preg_replace('/\s+/', '', $header); + $acceptParts = preg_split('/\s*(?:,*("[^"]+"),*|,*(\'[^\']+\'),*|,+)\s*/', + $header, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE + ); + + $index = 0; + $catchAll = null; + foreach ($acceptParts as $acceptPart) { + $quality = 1.0; + $parts = preg_split('/;\s*q=/i', $acceptPart, 0, PREG_SPLIT_NO_EMPTY); + $parameters = $this->parseParameters($acceptPart); + + if (2 === count($parts)) { + $value = $parts[0]; + $quality = (float) $parts[1]; + } else { + $value = $acceptPart; + + if (self::CATCH_ALL_VALUE === $value) { + $quality = 0.01; + } elseif ('*' === substr($value, -1)) { + $quality = 0.02; + } + } + + if (self::CATCH_ALL_VALUE === $value) { + $catchAll = new AcceptHeader($value, $quality, $parameters); + } else { + $acceptHeaders[] = array( + 'item' => new AcceptHeader($value, $quality, $parameters), + 'index' => $index + ); + } + + $index++; + } + + return $this->sortAcceptHeaders($acceptHeaders, $catchAll); + } + + /** + * @param array $acceptHeaders A set of AcceptHeader objects to sort. + * @param AcceptHeader $catchAll A special AcceptHeader that represents the "catch all". + * + * @return AcceptHeader[] + */ + protected function sortAcceptHeaders(array $acceptHeaders, AcceptHeader $catchAll = null) + { + uasort($acceptHeaders, function ($a, $b) { + $qA = $a['item']->getQuality(); + $qB = $b['item']->getQuality(); + + $vA = $a['item']->getValue(); + $vB = $b['item']->getValue(); + + // put specific media type before the classic one + // e.g. `text/html;level=1` first, then `text/html` + if (strstr($vA, $vB)) { + return -1; + } + + if ($qA === $qB) { + return $a['index'] > $b['index'] ? 1 : -1; + } + + return $qA > $qB ? -1 : 1; + }); + + // put the catch all header at the end if available + if (null !== $catchAll) { + array_push($acceptHeaders, array('item' => $catchAll)); + } + + return array_map(function ($accept) { + return $accept['item']; + }, array_values($acceptHeaders)); + } + + /** + * @param array $values + * + * @return array + */ + protected function sanitize(array $values) + { + return array_map(function ($value) { + return preg_replace('/\s+/', '', strtolower($value)); + }, $values); + } + + /** + * @param string $value + * + * @return array + */ + protected function parseParameters($value) + { + $parts = explode(';', preg_replace('/\s+/', '', $value)); + array_shift($parts); + + $parameters = array(); + foreach ($parts as $part) { + $part = explode('=', $part); + + if (2 !== count($part)) { + continue; + } + + if ('q' !== $key = strtolower($part[0])) { + $parameters[$key] = $part[1]; + } + } + + return $parameters; + } + + /** + * @param AcceptHeader[] $acceptHeaders Sorted by quality + * @param array $priorities Configured priorities + * + * @return string|null Header string matched + */ + protected function match(array $acceptHeaders, array $priorities = array()) + { + $wildcardAccept = null; + $sanitizedPriorities = $this->sanitize($priorities); + + foreach ($acceptHeaders as $accept) { + if (false !== $found = array_search($value = strtolower($accept->getValue()), $sanitizedPriorities)) { + return $priorities[$found]; + } elseif ('*' === $value) { + $wildcardAccept = $accept; + } + } + + if (null !== $wildcardAccept) { + return reset($priorities); + } + + return null; + } +} diff --git a/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php b/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php new file mode 100644 index 0000000..bee4fef --- /dev/null +++ b/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php @@ -0,0 +1,17 @@ + + */ +interface NegotiatorInterface +{ + /** + * @param string $header A string containing an `Accept|Accept-*` header. + * @param array $priorities A set of priorities. + * + * @return AcceptHeader + */ + public function getBest($header, array $priorities = array()); +} diff --git a/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php b/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php new file mode 100644 index 0000000..8669f6c --- /dev/null +++ b/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php @@ -0,0 +1,102 @@ +setAccessible(TRUE); + + return $method->invokeArgs($object, $params); + } + + /** + * @var AcceptHeader + */ + private $acceptHeader; + + protected function setUp() + { + $this->acceptHeader = new AcceptHeader('foo', 1.0, array( + 'hello' => 'world', + )); + } + + public function testGetParameter() + { + $this->assertTrue($this->acceptHeader->hasParameter('hello')); + $this->assertEquals('world', $this->acceptHeader->getParameter('hello')); + + $this->assertFalse($this->acceptHeader->hasParameter('unknown')); + $this->assertNull($this->acceptHeader->getParameter('unknown')); + $this->assertFalse($this->acceptHeader->getParameter('unknown', false)); + } + + /** + * @dataProvider dataProviderForTestIsMediaRange + */ + public function testIsMediaRange($value, $expected) + { + $header = new AcceptHeader($value, 1.0); + + $this->assertEquals($expected, $header->isMediaRange()); + } + + public static function dataProviderForTestIsMediaRange() + { + return array( + array('text/*', true), + array('*/*', true), + array('application/json', false), + ); + } + + /** + * @dataProvider dataProviderForTestGetMediaType + */ + public function testGetMediaType($acceptHeader, $expectedType) + { + $negotiator = new Negotiator(); + $parameters = $this->call_private_method('\Negotiation\Negotiator', 'parseParameters', $negotiator, array($acceptHeader)); + + $acceptHeader = new AcceptHeader($acceptHeader, 1.0, $parameters); + $mt = $acceptHeader->getMediaType(); + + $this->assertEquals($expectedType, $mt); + + } + + public static function dataProviderForTestGetMediaType() + { + return array( + array('text/html;hello=world', 'text/html'), # with param + array('application/pdf', 'application/pdf'), # without param + array('application/xhtml+xml;q=0.9', 'application/xhtml+xml'), + array('text/plain; q=0.5', 'text/plain'), + array('text/html;level=2;q=0.4', 'text/html'), + array('text/html ; level = 2 ; q = 0.4', 'text/html'), + array('text/*', 'text/*'), + array('text/* ;q=1 ;level=2', 'text/*'), + array('*/*', '*/*'), + array('*/* ; param=555', '*/*'), + array('TEXT/hTmL;leVel=2; Q=0.4', 'TEXT/hTmL'), + + # language + array('da', 'da'), + array('en-gb;q=0.8', 'en-gb'), + array('en-GB;q=0.8', 'en-GB'), + array('es;q=0.7', 'es'), + array('fr ; q= 0.1', 'fr'), + + array('', null), + array(null, null), + ); + } +} diff --git a/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php b/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php new file mode 100644 index 0000000..8e845ca --- /dev/null +++ b/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php @@ -0,0 +1,431 @@ + + */ +class FormatNegotiatorTest extends TestCase +{ + + /** + * @var FormatNegotiator + */ + private $negotiator; + + protected function setUp() + { + $this->negotiator = new FormatNegotiator(); + } + + /** + * @dataProvider dataProviderForGetBest + */ + public function testGetBest($acceptHeader, $priorities, $expected) + { + $acceptHeader = $this->negotiator->getBest($acceptHeader, $priorities); + + if (null === $expected) { + $this->assertNull($acceptHeader); + } else { + $this->assertNotNull($acceptHeader); + if (is_array($expected)) { + $this->assertEquals($expected['value'], $acceptHeader->getValue()); + $this->assertEquals($expected['quality'], $acceptHeader->getQuality()); + + if (isset($expected['parameters'])) { + foreach ($expected['parameters'] as $key => $value) { + $this->assertTrue($acceptHeader->hasParameter($key)); + $this->assertEquals($value, $acceptHeader->getParameter($key)); + } + + $this->assertCount(count($expected['parameters']), $acceptHeader->getParameters()); + } + } else { + $this->assertEquals($expected, $acceptHeader->getValue()); + } + } + } + + /** + * @dataProvider dataProviderForGetBestFormat + */ + public function testGetBestFormat($acceptHeader, $priorities, $expected) + { + $bestFormat = $this->negotiator->getBestFormat($acceptHeader, $priorities); + + $this->assertEquals($expected, $bestFormat); + } + + public static function dataProviderForGetBest() + { + $pearAcceptHeader = 'text/html,application/xhtml+xml,application/xml;q=0.9,text/*;q=0.7,*/*,image/gif; q=0.8, image/jpeg; q=0.6, image/*'; + + return array( + // PEAR HTTP2 tests + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'application/xhtml+xml', + 'application/xml', + 'text/html', + 'image/jpeg', + 'text/plain', + ), + 'text/html' + ), + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'application/xhtml+xml', + 'application/xml', + 'image/jpeg', + 'text/plain', + ), + 'application/xhtml+xml' + ), + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'application/xml', + 'image/jpeg', + 'text/plain', + ), + 'application/xml' + ), + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'image/jpeg', + 'text/plain', + ), + 'image/gif' + ), + array( + $pearAcceptHeader, + array( + 'image/png', + 'image/jpeg', + 'text/plain', + ), + 'text/plain' + ), + array( + $pearAcceptHeader, + array( + 'image/png', + 'image/jpeg', + ), + 'image/jpeg' + ), + array( + $pearAcceptHeader, + array( + 'image/png', + ), + 'image/png' + ), + array( + $pearAcceptHeader, + array( + 'audio/midi', + ), + 'audio/midi' + ), + array( + 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + array( + 'application/rss+xml', + '*/*', + ), + 'application/rss+xml' + ), + // See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array(), + array( + 'value' => 'text/html;level=1', + 'quality' => 1, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html' + ), + array( + 'value' => 'text/html', + 'quality' => 0.7, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/plain' + ), + array( + 'value' => 'text/plain', + 'quality' => 0.3, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'image/jpeg', + ), + array( + 'value' => 'image/jpeg', + 'quality' => 0.5, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html;level=2' + ), + array( + 'value' => 'text/html;level=2', + 'quality' => 0.4, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html;level=3' + ), + array( + 'value' => 'text/html;level=3', + 'quality' => 0.7, + 'parameters' => array( + 'level' => 3, + ), + ) + ), + // LWS / case sensitivity + array( + 'text/* ; q=0.3, text/html ;Q=0.7, text/html ; level=1, text/html ;level = 2 ;q=0.4, */* ; q=0.5', + array( + 'text/html; level=2' + ), + array( + 'value' => 'text/html;level=2', + 'quality' => 0.4, + 'parameters' => array( + 'level' => 2, + ), + ) + ), + array( + 'text/* ; q=0.3, text/html;Q=0.7, text/html ;level=1, text/html; level=2;q=0.4, */*;q=0.5', + array( + 'text/html; level=3' + ), + array( + 'value' => 'text/html;level=3', + 'quality' => 0.7, + 'parameters' => array( + 'level' => 3, + ), + ) + ), + array( + '*/*', + array(), + array( + 'value' => '*/*', + 'quality' => 0.01, + 'parameters' => array(), + ), + ), + array( + '*/*', + array('foo', 'bar', 'baz'), + array( + 'value' => 'foo', + 'quality' => 0.01, + 'parameters' => array(), + ), + ), + // Incompatible + array( + 'text/html', + array( + 'application/rss' + ), + null + ), + array( + 'text/rdf+n3; q=0.8, application/rdf+json; q=0.8, text/turtle; q=1.0, text/n3; q=0.8, application/ld+json; q=0.5, application/rdf+xml; q=0.8', + array(), + 'text/turtle' + ), + array( + 'application/rdf+xml;q=0.5,text/html;q=.3', + array(), + 'application/rdf+xml' + ), + array( + 'application/xhtml+xml;q=0.5', + array(), + 'application/xhtml+xml' + ), + array( + 'application/rdf+xml;q=0.5,text/html;q=.5', + array(), + 'application/rdf+xml' + ), + array( + 'text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c', + array(), + 'text/html', + ), + // IE8 Accept header + array( + 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*', + array( + 'text/html', + 'application/xhtml+xml', + '*/*' + ), + 'text/html', + ), + ); + } + + public static function dataProviderForGetBestFormat() + { + return array( + array(null, array('html', 'json', '*/*'), null), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array(), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('html', 'json', '*/*'), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('html', 'json', '*/*'), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('rss', '*/*'), 'rss'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('xml'), 'xml'), + // This shows clearly that the acceptheader is leading over server priorities + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('xml', 'html'), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('json', 'xml'), 'xml'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('json'), 'json'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*', array('json'), 'json'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*', array('json'), 'json'), + array('text/html,application/xhtml+xml,application/xml', array('json'), null), + array('text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c', array('*/*'), 'html'), + array('text/html, application/json;q=0.8, text/csv;q=0.7', array(), 'html'), + array('text/html', array('text/xml'), null), + array('text/*, text/html, text/html;level=1, */*', array(), 'html'), + array('text/html; q=0.0', array(), null), + ); + } + + public function testGetFormat() + { + $this->assertEquals('html', $this->negotiator->getFormat('application/xhtml+xml')); + } + + public function testGetFormatReturnsNullIfNotFound() + { + $this->assertNull($this->negotiator->getFormat('foo')); + } + + public function testRegisterFormat() + { + $format = 'foo'; + $mimeType = 'foo/bar'; + + $this->negotiator->registerFormat($format, array($mimeType)); + $this->assertEquals($format, $this->negotiator->getFormat($mimeType)); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Format "html" already registered, and override was set to "false". + */ + public function testRegisterFormatWithExistingFormat() + { + $this->negotiator->registerFormat('html', array()); + } + + /** + * @dataProvider dataProviderForNormalizePriorities + */ + public function testNormalizePriorities($priorities, $expected) + { + $priorities = $this->negotiator->normalizePriorities($priorities); + + $this->assertEquals($expected, $priorities); + } + + public static function dataProviderForNormalizePriorities() + { + return array( + array( + array('application/json', 'application/xml'), + array('application/json', 'application/xml') + ), + array( + array('json', 'application/xml', 'text/*', 'rdf', '*/*'), + array('application/json', 'application/x-json', 'application/xml', 'text/*', 'application/rdf+xml', '*/*') + ), + array( + array('json', 'html', '*/*'), + array('application/json', 'application/x-json', 'text/html', 'application/xhtml+xml', '*/*') + ), + ); + } + + /** + * cf. https://github.com/willdurand/Negotiation/issues/30, + * https://github.com/FriendsOfSymfony/FOSRestBundle/issues/610 + * + * @dataProvider dataProviderForTakesParametersIntoAccount + */ + public function testTakesParametersIntoAccount($acceptHeaderString, $expectedFormat) + { + $this->negotiator->registerFormat('xml', array( + 'application/vnd.my.app+xml' + ), true); + $this->negotiator->registerFormat('json', array( + 'application/vnd.my.app+json' + ), true); + $this->negotiator->registerFormat('odata-v4', array( + 'application/json;odata.metadata=full', + 'application/json;odata.metadata=none', + 'application/json;odata.metadata=minimal' + ), true); + $this->negotiator->registerFormat('odata-v4-minimal-streaming', array( + 'application/json;odata.metadata=minimal;odata.streaming=true' + ), true); + $this->negotiator->registerFormat('odata-v3-verbose', array( + 'application/json;odata=verbose' + ), true); + $this->negotiator->registerFormat('atom-entry', array( + 'application/atom+xml;type=entry' + ), true); + + $this->assertEquals('json', $this->negotiator->getBestFormat('application/vnd.my.app', array('json', 'xml'))); + $this->assertEquals('json', $this->negotiator->getBestFormat('application/vnd.my.app+json', array('json', 'xml'))); + $this->assertEquals('xml', $this->negotiator->getBestFormat('application/vnd.my.app+xml', array('json', 'xml'))); + + $this->assertNotNull($this->negotiator->getBest($acceptHeaderString, array('*/*'))); + $this->assertEquals($expectedFormat, $this->negotiator->getBestFormat($acceptHeaderString, array('*/*'))); + } + + public static function dataProviderForTakesParametersIntoAccount() + { + return array( + array('application/json;odata.metadata=minimal;odata.streaming=true', 'odata-v4-minimal-streaming'), + array('application/vnd.my.app+json;version=1.0', 'json'), + array('application/vnd.my.app+xml;version=1.0', 'xml'), + ); + } +} diff --git a/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php b/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php new file mode 100644 index 0000000..91ba08c --- /dev/null +++ b/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php @@ -0,0 +1,127 @@ +negotiator = new LanguageNegotiator(); + } + + /** + * 'fu' has a quality rating of 0.9 which is higher than the rest + * we expect Negotiator to return the 'fu' content. + * + * See: http://svn.apache.org/repos/asf/httpd/test/framework/trunk/t/modules/negotiation.t + */ + public function testGetBestUsesQuality() + { + $acceptLanguageHeader = 'en; q=0.1, fr; q=0.4, fu; q=0.9, de; q=0.2'; + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('fu', $acceptHeader->getValue()); + } + + /** + * 'bu' has the highest quality rating, but is non-existent, + * so we expect the next highest rated 'fr' content to be returned. + * + * See: http://svn.apache.org/repos/asf/httpd/test/framework/trunk/t/modules/negotiation.t + */ + public function testGetBestIgnoresNonExistentContent() + { + $acceptLanguageHeader = 'en; q=0.1, fr; q=0.4, bu; q=1.0'; + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, array('en', 'fr')); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('fr', $acceptHeader->getValue()); + } + + /** + * @dataProvider dataProviderForGetBest + */ + public function testGetBest($acceptLanguageHeader, $expected) + { + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader); + + if (null === $expected) { + $this->assertNull($acceptHeader); + } else { + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals($expected, $acceptHeader->getValue()); + } + } + + /** + * Given a accept header containing a generic language (here 'en') + * And priorities containing a localized version of that language + * Then the best language is mapped to 'en' + */ + public function testGenericLanguageAreMappedToSpecific() + { + $acceptLanguageHeader = 'fr-FR, en;q=0.8'; + $priorities = array('en-US', 'de-DE'); + + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('en-US', $acceptHeader->getValue()); + } + + /** + * Given a accept header containing specific languages (here 'en-US', 'fr-FR') + * And priorities containing a generic version of that language + * Then the best language is mapped to the generic one here 'fr' + */ + public function testSpecificLanguageAreMappedToGeneric() + { + $acceptLanguageHeader = 'fr-FR, en-US;q=0.8'; + $priorities = array('fr'); + + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('fr', $acceptHeader->getValue()); + } + + public function testGetBestWithWildcard() + { + $acceptLanguageHeader = 'en, *;q=0.9'; + $priorities = array('fr'); + + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('fr', $acceptHeader->getValue()); + } + + public function testGetBestDoesNotMatchPriorities() + { + $acceptLanguageHeader = 'en, de'; + $priorities = array('fr'); + + $this->assertNull($this->negotiator->getBest($acceptLanguageHeader, $priorities)); + } + + public static function dataProviderForGetBest() + { + return array( + array('da, en-gb;q=0.8, en;q=0.7', 'da'), + array('da, en-gb;q=0.8, en;q=0.7, *', 'da'), + array('es-ES;q=0.7, es; q=0.6 ,fr; q=1.0, en; q=0.5,dk , fr-CH', 'fr-CH'), + array('fr-FR,fr;q=0.1,en-US;q=0.6,en;q=0.4', 'fr-FR'), + array('', null), + array(null, null), + ); + } +} diff --git a/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php b/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php new file mode 100644 index 0000000..06359c9 --- /dev/null +++ b/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php @@ -0,0 +1,334 @@ + + */ +class NegotiatorTest extends TestCase +{ + + /** + * @var Negotiator + */ + private $negotiator; + + protected function setUp() + { + $this->negotiator = new Negotiator(); + } + + public function testGetBestReturnsNullWithNullHeader() + { + $this->assertNull($this->negotiator->getBest(null)); + } + + public function testGetBestReturnsNullWithEmptyHeader() + { + $this->assertNull($this->negotiator->getBest('')); + } + + public function testGetBestReturnsNullWithUnmatchedHeader() + { + $this->assertNull($this->negotiator->getBest('foo, bar, yo', array('baz'))); + } + + public function testGetBestRespectsPriorities() + { + $acceptHeader = $this->negotiator->getBest('foo, bar, yo', array('yo')); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('yo', $acceptHeader->getValue()); + } + + public function testGetBestInCaseInsensitive() + { + $acceptHeader = $this->negotiator->getBest('foo, bar, yo', array('YO')); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('YO', $acceptHeader->getValue()); + } + + public function testGetBestWithQualities() + { + $acceptHeader = $this->negotiator->getBest('foo;q=0.1, bar, yo;q=0.9'); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('bar', $acceptHeader->getValue()); + $this->assertFalse($acceptHeader->hasParameter('q')); + } + + /** + * @dataProvider dataProviderForTestGetBest + */ + public function testGetBest($acceptHeader, $priorities, $expected, $parameters = array()) + { + $acceptHeader = $this->negotiator->getBest($acceptHeader, $priorities); + + if (null === $expected) { + $this->assertNull($acceptHeader); + } else { + $this->assertEquals($expected, $acceptHeader->getValue()); + + foreach ($parameters as $k => $v) { + $this->assertEquals($v, $acceptHeader->getParameter($k)); + } + } + } + + /** + * @dataProvider dataProviderForTestParseAcceptHeader + */ + public function testParseAcceptHeader($header, $expected) + { + $negotiator = new TestableNegotiator(); + $accepts = $negotiator->parseHeader($header); + + $this->assertCount(count($expected), $accepts); + $this->assertEquals($expected, array_map(function ($result) { + return $result->getValue(); + }, $accepts)); + } + + /** + * @dataProvider dataProviderForTestParseAcceptHeaderWithQualities + */ + public function testParseAcceptHeaderWithQualities($header, $expected) + { + $negotiator = new TestableNegotiator(); + $accepts = $negotiator->parseHeader($header); + + $this->assertEquals(count($expected), count($accepts)); + + $i = 0; + foreach ($expected as $value => $quality) { + $this->assertEquals($value, $accepts[$i]->getValue()); + $this->assertEquals($quality, $accepts[$i]->getQuality()); + $i++; + } + } + + /** + * @dataProvider dataProviderForTestParseAcceptHeaderEnsuresPrecedence + */ + public function testParseAcceptHeaderEnsuresPrecedence($header, $expected) + { + $negotiator = new TestableNegotiator(); + $accepts = $negotiator->parseHeader($header); + + $this->assertCount(count($expected), $accepts); + + $i = 0; + foreach ($expected as $value => $quality) { + $this->assertEquals($value, $accepts[$i]->getValue()); + $this->assertEquals($quality, $accepts[$i]->getQuality()); + + $i++; + } + } + + /** + * @dataProvider dataProviderForParseParameters + */ + public function testParseParameters($value, $expected) + { + $negotiator = new TestableNegotiator(); + $parameters = $negotiator->parseParameters($value); + + $this->assertCount(count($expected), $parameters); + + foreach ($expected as $key => $value) { + $this->assertArrayHasKey($key, $parameters); + $this->assertEquals($value, $parameters[$key]); + } + } + + public static function dataProviderForTestParseAcceptHeader() + { + return array( + array('gzip,deflate,sdch', array('gzip', 'deflate', 'sdch')), + array("gzip, deflate\t,sdch", array('gzip', 'deflate', 'sdch')), + array('"this;should,not=matter"', array('"this;should,not=matter"')), + array('*;q=0.3,ISO-8859-1,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')), + array('*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')), + array('*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', array('utf-8', 'ISO-8859-1', '*')), + ); + } + + public static function dataProviderForTestParseAcceptHeaderWithQualities() + { + return array( + array('text/html;q=0.8', array('text/html' => 0.8)), + array('text/html;foo=bar;q=0.8 ', array('text/html;foo=bar' => 0.8)), + array('text/html;charset=utf-8; q=0.8', array('text/html;charset=utf-8' => 0.8)), + array('text/html,application/xml;q=0.9,*/*;charset=utf-8; q=0.8', array('text/html' => 1.0, 'application/xml' => 0.9, '*/*;charset=utf-8' => 0.8)), + array('text/html,application/xhtml+xml', array('text/html' => 1, 'application/xhtml+xml' => 1)), + array('text/html, application/json;q=0.8, text/csv;q=0.7', array('text/html' => 1, 'application/json' => 0.8, 'text/csv' => 0.7)), + array('iso-8859-5, unicode-1-1;q=0.8', array('iso-8859-5' => 1, 'unicode-1-1' => 0.8)), + array('gzip;q=1.0, identity; q=0.5, *;q=0', array('gzip' => 1, 'identity' => 0.5, '*' => 0)), + ); + } + + public static function dataProviderForTestGetBest() + { + $pearCharsetHeader = 'ISO-8859-1, Big5;q=0.6,utf-8;q=0.7, *;q=0.5'; + $pearCharsetHeader2 = 'ISO-8859-1, Big5;q=0.6,utf-8;q=0.7'; + + return array( + array( + $pearCharsetHeader, + array( + 'utf-8', + 'big5', + 'iso-8859-1', + 'shift-jis', + ), + 'iso-8859-1' + ), + array( + $pearCharsetHeader, + array( + 'utf-8', + 'big5', + 'shift-jis', + ), + 'utf-8' + ), + array( + $pearCharsetHeader, + array( + 'Big5', + 'shift-jis', + ), + 'Big5' + ), + array( + $pearCharsetHeader, + array( + 'shift-jis', + ), + 'shift-jis' + ), + array( + $pearCharsetHeader2, + array( + 'utf-8', + 'big5', + 'iso-8859-1', + 'shift-jis', + ), + 'iso-8859-1' + ), + array( + $pearCharsetHeader2, + array( + 'utf-8', + 'big5', + 'shift-jis', + ), + 'utf-8' + ), + array( + $pearCharsetHeader2, + array( + 'Big5', + 'shift-jis', + ), + 'Big5' + ), + array( + 'utf-8;q=0.6,iso-8859-5;q=0.9', + array( + 'iso-8859-5', + 'utf-8', + ), + 'iso-8859-5' + ), + array( + '', + array( + 'iso-8859-5', + 'utf-8', + ), + null + ), + array( + 'audio/*; q=0.2, audio/basic', + array(), + 'audio/basic', + ), + ); + } + + public static function dataProviderForTestParseAcceptHeaderEnsuresPrecedence() + { + return array( + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html;level=1' => 1, + 'text/html;level=2' => 0.4, + 'text/html' => 0.7, + 'text/*' => 0.3, + '*/*' => 0.5, + ) + ), + array( + 'text/html,application/xhtml+xml,application/xml;q=0.9,text/*;q=0.7,*/*,image/gif; q=0.8, image/jpeg; q=0.6, image/*', + array( + 'text/html' => 1, + 'application/xhtml+xml' => 1, + 'application/xml' => 0.9, + 'image/gif' => 0.8, + 'text/*' => 0.7, + 'image/jpeg' => 0.6, + 'image/*' => 0.02, + '*/*' => 0.01, + ) + ), + ); + } + + public static function dataProviderForParseParameters() + { + return array( + array( + 'application/json ;q=1.0; level=2;foo= bar', + array( + 'level' => 2, + 'foo' => 'bar', + ), + ), + array( + 'application/json ;q = 1.0; level = 2; FOO = bAr', + array( + 'level' => 2, + 'foo' => 'bAr', + ), + ), + array( + 'application/json;q=1.0', + array(), + ), + array( + 'application/json;foo', + array(), + ), + ); + } +} + +class TestableNegotiator extends Negotiator +{ + public function parseHeader($acceptHeader) + { + return parent::parseHeader($acceptHeader); + } + + public function parseParameters($value) + { + return parent::parseParameters($value); + } +} diff --git a/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php b/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php new file mode 100644 index 0000000..df8e032 --- /dev/null +++ b/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php @@ -0,0 +1,10 @@ + + */ +class TestCase extends \PHPUnit_Framework_TestCase +{ +} diff --git a/vendor/willdurand/negotiation/tests/bootstrap.php b/vendor/willdurand/negotiation/tests/bootstrap.php new file mode 100644 index 0000000..c63e17a --- /dev/null +++ b/vendor/willdurand/negotiation/tests/bootstrap.php @@ -0,0 +1,15 @@ +add('Negotiation\Tests', __DIR__);