From e2649bbfb65241d7ca7ab44639804ab7d2d2f905 Mon Sep 17 00:00:00 2001 From: Polonkai Gergely Date: Fri, 13 Apr 2012 19:16:29 +0000 Subject: [PATCH] Initial commit Empty Symfony install with no vendors and the Acme Bundle deleted Signed-off-by: Gergely POLONKAI (W00d5t0ck) --- LICENSE | 19 + README.md | 147 ++ app/.htaccess | 1 + app/AppCache.php | 9 + app/AppKernel.php | 35 + app/Resources/views/base.html.twig | 13 + app/autoload.php | 45 + app/bootstrap.php.cache | 1497 +++++++++++++++++ app/check.php | 108 ++ app/config/config.yml | 60 + app/config/config_dev.yml | 23 + app/config/config_prod.yml | 19 + app/config/config_test.yml | 14 + app/config/parameters.ini | 19 + app/config/routing.yml | 4 + app/config/routing_dev.yml | 18 + app/config/security.yml | 38 + app/console | 22 + app/logs/.gitkeep | 0 app/phpunit.xml.dist | 41 + bin/.htaccess | 1 + bin/vendors | 154 ++ deps | 63 + deps.lock | 15 + src/.htaccess | 1 + web/.htaccess | 5 + web/app.php | 12 + web/app_dev.php | 24 + web/apple-touch-icon.png | Bin 0 -> 10784 bytes web/bundles/framework/css/exception.css | 226 +++ .../framework/css/exception_layout.css | 131 ++ .../framework/images/blue_picto_less.gif | Bin 0 -> 197 bytes .../framework/images/blue_picto_more.gif | Bin 0 -> 213 bytes web/bundles/framework/images/border_l.png | Bin 0 -> 366 bytes web/bundles/framework/images/border_r.png | Bin 0 -> 389 bytes web/bundles/framework/images/btn_bg.png | Bin 0 -> 137 bytes web/bundles/framework/images/close_quote.gif | Bin 0 -> 284 bytes .../framework/images/exception_detected.gif | Bin 0 -> 3996 bytes .../framework/images/grey_magnifier.png | Bin 0 -> 737 bytes web/bundles/framework/images/icon_log.png | Bin 0 -> 378 bytes web/bundles/framework/images/input_bg.gif | Bin 0 -> 63 bytes web/bundles/framework/images/logo_symfony.gif | Bin 0 -> 1698 bytes web/bundles/framework/images/open_quote.gif | Bin 0 -> 281 bytes .../webconfigurator/css/configure.css | 438 +++++ .../webconfigurator/css/install.css | 374 ++++ .../images/background-textfield.gif | Bin 0 -> 63 bytes .../webconfigurator/images/blue-arrow.png | Bin 0 -> 181 bytes .../webconfigurator/images/favicon.ico | Bin 0 -> 1150 bytes .../webconfigurator/images/logo-big.gif | Bin 0 -> 4060 bytes .../webconfigurator/images/logo-small.gif | Bin 0 -> 1698 bytes .../webconfigurator/images/notification.gif | Bin 0 -> 206 bytes web/bundles/webprofiler/css/profiler.css | 442 +++++ web/bundles/webprofiler/css/toolbar.css | 28 + web/bundles/webprofiler/favicon.ico | Bin 0 -> 1150 bytes web/bundles/webprofiler/images/close.png | Bin 0 -> 1262 bytes web/bundles/webprofiler/images/config.png | Bin 0 -> 497 bytes web/bundles/webprofiler/images/db.png | Bin 0 -> 354 bytes web/bundles/webprofiler/images/events.png | Bin 0 -> 745 bytes web/bundles/webprofiler/images/exception.png | Bin 0 -> 931 bytes web/bundles/webprofiler/images/import.png | Bin 0 -> 1007 bytes web/bundles/webprofiler/images/logger.png | Bin 0 -> 378 bytes web/bundles/webprofiler/images/mail.png | Bin 0 -> 1536 bytes web/bundles/webprofiler/images/memory.png | Bin 0 -> 238 bytes .../images/profiler/bg_submenu.gif | Bin 0 -> 176 bytes .../webprofiler/images/profiler/border_l.png | Bin 0 -> 366 bytes .../webprofiler/images/profiler/border_r.png | Bin 0 -> 389 bytes .../webprofiler/images/profiler/btn_bg.png | Bin 0 -> 137 bytes .../webprofiler/images/profiler/config.png | Bin 0 -> 497 bytes .../webprofiler/images/profiler/db.png | Bin 0 -> 537 bytes .../webprofiler/images/profiler/events.png | Bin 0 -> 1743 bytes .../webprofiler/images/profiler/exception.png | Bin 0 -> 2000 bytes .../images/profiler/grey_magnifier.png | Bin 0 -> 737 bytes .../webprofiler/images/profiler/input_bg.gif | Bin 0 -> 63 bytes .../webprofiler/images/profiler/logger.png | Bin 0 -> 571 bytes .../images/profiler/logo_symfony_profiler.gif | Bin 0 -> 2589 bytes .../webprofiler/images/profiler/mail.png | Bin 0 -> 2176 bytes .../webprofiler/images/profiler/request.png | Bin 0 -> 1835 bytes .../webprofiler/images/profiler/security.png | Bin 0 -> 2076 bytes web/bundles/webprofiler/images/request.png | Bin 0 -> 1348 bytes web/bundles/webprofiler/images/search.png | Bin 0 -> 803 bytes web/bundles/webprofiler/images/security.png | Bin 0 -> 3728 bytes web/bundles/webprofiler/images/spacer.gif | Bin 0 -> 45 bytes web/bundles/webprofiler/images/symfony.png | Bin 0 -> 1396 bytes web/bundles/webprofiler/images/timer.png | Bin 0 -> 641 bytes web/config.php | 212 +++ web/favicon.ico | Bin 0 -> 1150 bytes web/robots.txt | 4 + 87 files changed, 4262 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/.htaccess create mode 100644 app/AppCache.php create mode 100644 app/AppKernel.php create mode 100644 app/Resources/views/base.html.twig create mode 100644 app/autoload.php create mode 100644 app/bootstrap.php.cache create mode 100644 app/check.php create mode 100644 app/config/config.yml create mode 100644 app/config/config_dev.yml create mode 100644 app/config/config_prod.yml create mode 100644 app/config/config_test.yml create mode 100644 app/config/parameters.ini create mode 100644 app/config/routing.yml create mode 100644 app/config/routing_dev.yml create mode 100644 app/config/security.yml create mode 100755 app/console create mode 100755 app/logs/.gitkeep create mode 100644 app/phpunit.xml.dist create mode 100644 bin/.htaccess create mode 100755 bin/vendors create mode 100644 deps create mode 100644 deps.lock create mode 100644 src/.htaccess create mode 100644 web/.htaccess create mode 100644 web/app.php create mode 100644 web/app_dev.php create mode 100644 web/apple-touch-icon.png create mode 100644 web/bundles/framework/css/exception.css create mode 100644 web/bundles/framework/css/exception_layout.css create mode 100644 web/bundles/framework/images/blue_picto_less.gif create mode 100644 web/bundles/framework/images/blue_picto_more.gif create mode 100644 web/bundles/framework/images/border_l.png create mode 100644 web/bundles/framework/images/border_r.png create mode 100644 web/bundles/framework/images/btn_bg.png create mode 100644 web/bundles/framework/images/close_quote.gif create mode 100644 web/bundles/framework/images/exception_detected.gif create mode 100644 web/bundles/framework/images/grey_magnifier.png create mode 100644 web/bundles/framework/images/icon_log.png create mode 100644 web/bundles/framework/images/input_bg.gif create mode 100644 web/bundles/framework/images/logo_symfony.gif create mode 100644 web/bundles/framework/images/open_quote.gif create mode 100644 web/bundles/sensiodistribution/webconfigurator/css/configure.css create mode 100644 web/bundles/sensiodistribution/webconfigurator/css/install.css create mode 100644 web/bundles/sensiodistribution/webconfigurator/images/background-textfield.gif create mode 100644 web/bundles/sensiodistribution/webconfigurator/images/blue-arrow.png create mode 100644 web/bundles/sensiodistribution/webconfigurator/images/favicon.ico create mode 100644 web/bundles/sensiodistribution/webconfigurator/images/logo-big.gif create mode 100644 web/bundles/sensiodistribution/webconfigurator/images/logo-small.gif create mode 100644 web/bundles/sensiodistribution/webconfigurator/images/notification.gif create mode 100644 web/bundles/webprofiler/css/profiler.css create mode 100644 web/bundles/webprofiler/css/toolbar.css create mode 100644 web/bundles/webprofiler/favicon.ico create mode 100644 web/bundles/webprofiler/images/close.png create mode 100644 web/bundles/webprofiler/images/config.png create mode 100644 web/bundles/webprofiler/images/db.png create mode 100644 web/bundles/webprofiler/images/events.png create mode 100644 web/bundles/webprofiler/images/exception.png create mode 100644 web/bundles/webprofiler/images/import.png create mode 100644 web/bundles/webprofiler/images/logger.png create mode 100644 web/bundles/webprofiler/images/mail.png create mode 100644 web/bundles/webprofiler/images/memory.png create mode 100644 web/bundles/webprofiler/images/profiler/bg_submenu.gif create mode 100644 web/bundles/webprofiler/images/profiler/border_l.png create mode 100644 web/bundles/webprofiler/images/profiler/border_r.png create mode 100644 web/bundles/webprofiler/images/profiler/btn_bg.png create mode 100644 web/bundles/webprofiler/images/profiler/config.png create mode 100644 web/bundles/webprofiler/images/profiler/db.png create mode 100644 web/bundles/webprofiler/images/profiler/events.png create mode 100644 web/bundles/webprofiler/images/profiler/exception.png create mode 100644 web/bundles/webprofiler/images/profiler/grey_magnifier.png create mode 100644 web/bundles/webprofiler/images/profiler/input_bg.gif create mode 100644 web/bundles/webprofiler/images/profiler/logger.png create mode 100644 web/bundles/webprofiler/images/profiler/logo_symfony_profiler.gif create mode 100644 web/bundles/webprofiler/images/profiler/mail.png create mode 100644 web/bundles/webprofiler/images/profiler/request.png create mode 100644 web/bundles/webprofiler/images/profiler/security.png create mode 100644 web/bundles/webprofiler/images/request.png create mode 100644 web/bundles/webprofiler/images/search.png create mode 100644 web/bundles/webprofiler/images/security.png create mode 100644 web/bundles/webprofiler/images/spacer.gif create mode 100644 web/bundles/webprofiler/images/symfony.png create mode 100644 web/bundles/webprofiler/images/timer.png create mode 100644 web/config.php create mode 100644 web/favicon.ico create mode 100644 web/robots.txt diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cdffe7a --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2004-2012 Fabien Potencier + +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/README.md b/README.md new file mode 100644 index 0000000..864d170 --- /dev/null +++ b/README.md @@ -0,0 +1,147 @@ +Symfony Standard Edition +======================== + +Welcome to the Symfony Standard Edition - a fully-functional Symfony2 +application that you can use as the skeleton for your new app. If you want +to learn more about the features included, see the "What's Inside?" section. + +This document contains information on how to download and start using Symfony. +For a more detailed explanation, see the +[Installation chapter](http://symfony.com/doc/current/book/installation.html) +of the Symfony Documentation. + +1) Download the Standard Edition +-------------------------------- + +If you've already downloaded the standard edition, and unpacked it somewhere +within your web root directory, then move on to the "Installation" section. + +To download the standard edition, you have two options: + +### Download an archive file (*recommended*) + +The easiest way to get started is to download an archive of the standard edition +(http://symfony.com/download). Unpack it somewhere under your web server root +directory and you're done. The web root is wherever your web server (e.g. Apache) +looks when you access `http://localhost` in a browser. + +### Clone the git Repository + +We highly recommend that you download the packaged version of this distribution. +But if you still want to use Git, you are on your own. + +Run the following commands: + + git clone http://github.com/symfony/symfony-standard.git + cd symfony-standard + rm -rf .git + +2) Installation +--------------- + +Once you've downloaded the standard edition, installation is easy, and basically +involves making sure your system is ready for Symfony. + +### a) Check your System Configuration + +Before you begin, make sure that your local system is properly configured +for Symfony. To do this, execute the following: + + php app/check.php + +If you get any warnings or recommendations, fix these now before moving on. + +### b) Install the Vendor Libraries + +If you downloaded the archive "without vendors" or installed via git, then +you need to download all of the necessary vendor libraries. If you're not +sure if you need to do this, check to see if you have a ``vendor/`` directory. +If you don't, or if that directory is empty, run the following: + + php bin/vendors install + +Note that you **must** have git installed and be able to execute the `git` +command to execute this script. If you don't have git available, either install +it or download Symfony with the vendor libraries already included. + +### c) Access the Application via the Browser + +Congratulations! You're now ready to use Symfony. If you've unzipped Symfony +in the web root of your computer, then you should be able to access the +web version of the Symfony requirements check via: + + http://localhost/Symfony/web/config.php + +If everything looks good, click the "Bypass configuration and go to the Welcome page" +link to load up your first Symfony page. + +You can also use a web-based configurator by clicking on the "Configure your +Symfony Application online" link of the ``config.php`` page. + +To see a real-live Symfony page in action, access the following page: + + web/app_dev.php/demo/hello/Fabien + +3) Learn about Symfony! +----------------------- + +This distribution is meant to be the starting point for your application, +but it also contains some sample code that you can learn from and play with. + +A great way to start learning Symfony is via the [Quick Tour](http://symfony.com/doc/current/quick_tour/the_big_picture.html), +which will take you through all the basic features of Symfony2 and the test +pages that are available in the standard edition. + +Once you're feeling good, you can move onto reading the official +[Symfony2 book](http://symfony.com/doc/current/). + +Using this Edition as the Base of your Application +-------------------------------------------------- + +Since the standard edition is fully-configured and comes with some examples, +you'll need to make a few changes before using it to build your application. + +The distribution is configured with the following defaults: + +* Twig is the only configured template engine; +* Doctrine ORM/DBAL is configured; +* Swiftmailer is configured; +* Annotations for everything are enabled. + +A default bundle, ``AcmeDemoBundle``, shows you Symfony2 in action. After +playing with it, you can remove it by following these steps: + +* delete the ``src/Acme`` directory; +* remove the routing entries referencing AcmeBundle in ``app/config/routing_dev.yml``; +* remove the AcmeBundle from the registered bundles in ``app/AppKernel.php``; + +What's inside? +--------------- +The Symfony Standard Edition comes pre-configured with the following bundles: + +* **FrameworkBundle** - The core Symfony framework bundle +* **SensioFrameworkExtraBundle** - Adds several enhancements, including template + and routing annotation capability ([documentation](http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html)) +* **DoctrineBundle** - Adds support for the Doctrine ORM + ([documentation](http://symfony.com/doc/current/book/doctrine.html)) +* **TwigBundle** - Adds support for the Twig templating engine + ([documentation](http://symfony.com/doc/current/book/templating.html)) +* **SecurityBundle** - Adds security by integrating Symfony's security component + ([documentation](http://symfony.com/doc/current/book/security.html)) +* **SwiftmailerBundle** - Adds support for Swiftmailer, a library for sending emails + ([documentation](http://symfony.com/doc/2.0/cookbook/email.html)) +* **MonologBundle** - Adds support for Monolog, a logging library + ([documentation](http://symfony.com/doc/2.0/cookbook/logging/monolog.html)) +* **AsseticBundle** - Adds support for Assetic, an asset processing library + ([documentation](http://symfony.com/doc/2.0/cookbook/assetic/asset_management.html)) +* **JMSSecurityExtraBundle** - Allows security to be added via annotations + ([documentation](http://symfony.com/doc/current/bundles/JMSSecurityExtraBundle/index.html)) +* **WebProfilerBundle** (in dev/test env) - Adds profiling functionality and + the web debug toolbar +* **SensioDistributionBundle** (in dev/test env) - Adds functionality for configuring + and working with Symfony distributions +* **SensioGeneratorBundle** (in dev/test env) - Adds code generation capabilities + ([documentation](http://symfony.com/doc/current/bundles/SensioGeneratorBundle/index.html)) +* **AcmeDemoBundle** (in dev/test env) - A demo bundle with some example code + +Enjoy! diff --git a/app/.htaccess b/app/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/app/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/app/AppCache.php b/app/AppCache.php new file mode 100644 index 0000000..ddb51db --- /dev/null +++ b/app/AppCache.php @@ -0,0 +1,9 @@ +getEnvironment(), array('dev', 'test'))) { + $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); + $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); + $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); + } + + return $bundles; + } + + public function registerContainerConfiguration(LoaderInterface $loader) + { + $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); + } +} diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig new file mode 100644 index 0000000..4b9151e --- /dev/null +++ b/app/Resources/views/base.html.twig @@ -0,0 +1,13 @@ + + + + + {% block title %}Welcome!{% endblock %} + {% block stylesheets %}{% endblock %} + + + + {% block body %}{% endblock %} + {% block javascripts %}{% endblock %} + + diff --git a/app/autoload.php b/app/autoload.php new file mode 100644 index 0000000..64ba187 --- /dev/null +++ b/app/autoload.php @@ -0,0 +1,45 @@ +registerNamespaces(array( + 'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'), + 'Sensio' => __DIR__.'/../vendor/bundles', + 'JMS' => __DIR__.'/../vendor/bundles', + 'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib', + 'Doctrine\\DBAL' => __DIR__.'/../vendor/doctrine-dbal/lib', + 'Doctrine' => __DIR__.'/../vendor/doctrine/lib', + 'Monolog' => __DIR__.'/../vendor/monolog/src', + 'Assetic' => __DIR__.'/../vendor/assetic/src', + 'Metadata' => __DIR__.'/../vendor/metadata/src', +)); +$loader->registerPrefixes(array( + 'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib', + 'Twig_' => __DIR__.'/../vendor/twig/lib', +)); + +// intl +if (!function_exists('intl_get_error_code')) { + require_once __DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php'; + + $loader->registerPrefixFallbacks(array(__DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs')); +} + +$loader->registerNamespaceFallbacks(array( + __DIR__.'/../src', +)); +$loader->register(); + +AnnotationRegistry::registerLoader(function($class) use ($loader) { + $loader->loadClass($class); + return class_exists($class, false); +}); +AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php'); + +// Swiftmailer needs a special autoloader to allow +// the lazy loading of the init file (which is expensive) +require_once __DIR__.'/../vendor/swiftmailer/lib/classes/Swift.php'; +Swift::registerAutoload(__DIR__.'/../vendor/swiftmailer/lib/swift_init.php'); + diff --git a/app/bootstrap.php.cache b/app/bootstrap.php.cache new file mode 100644 index 0000000..0a056b1 --- /dev/null +++ b/app/bootstrap.php.cache @@ -0,0 +1,1497 @@ +parameterBag = null === $parameterBag ? new ParameterBag() : $parameterBag; + + $this->services = array(); + $this->scopes = array(); + $this->scopeChildren = array(); + $this->scopedServices = array(); + $this->scopeStacks = array(); + + $this->set('service_container', $this); + } + + + public function compile() + { + $this->parameterBag->resolve(); + + $this->parameterBag = new FrozenParameterBag($this->parameterBag->all()); + } + + + public function isFrozen() + { + return $this->parameterBag instanceof FrozenParameterBag; + } + + + public function getParameterBag() + { + return $this->parameterBag; + } + + + public function getParameter($name) + { + return $this->parameterBag->get($name); + } + + + public function hasParameter($name) + { + return $this->parameterBag->has($name); + } + + + public function setParameter($name, $value) + { + $this->parameterBag->set($name, $value); + } + + + public function set($id, $service, $scope = self::SCOPE_CONTAINER) + { + if (self::SCOPE_PROTOTYPE === $scope) { + throw new \InvalidArgumentException('You cannot set services of scope "prototype".'); + } + + $id = strtolower($id); + + if (self::SCOPE_CONTAINER !== $scope) { + if (!isset($this->scopedServices[$scope])) { + throw new \RuntimeException('You cannot set services of inactive scopes.'); + } + + $this->scopedServices[$scope][$id] = $service; + } + + $this->services[$id] = $service; + } + + + public function has($id) + { + $id = strtolower($id); + + return isset($this->services[$id]) || method_exists($this, 'get'.strtr($id, array('_' => '', '.' => '_')).'Service'); + } + + + public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) + { + $id = strtolower($id); + + if (isset($this->services[$id])) { + return $this->services[$id]; + } + + if (isset($this->loading[$id])) { + throw new ServiceCircularReferenceException($id, array_keys($this->loading)); + } + + if (method_exists($this, $method = 'get'.strtr($id, array('_' => '', '.' => '_')).'Service')) { + $this->loading[$id] = true; + + try { + $service = $this->$method(); + } catch (\Exception $e) { + unset($this->loading[$id]); + throw $e; + } + + unset($this->loading[$id]); + + return $service; + } + + if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior) { + throw new ServiceNotFoundException($id); + } + } + + + public function getServiceIds() + { + $ids = array(); + $r = new \ReflectionClass($this); + foreach ($r->getMethods() as $method) { + if (preg_match('/^get(.+)Service$/', $method->getName(), $match)) { + $ids[] = self::underscore($match[1]); + } + } + + return array_unique(array_merge($ids, array_keys($this->services))); + } + + + public function enterScope($name) + { + if (!isset($this->scopes[$name])) { + throw new \InvalidArgumentException(sprintf('The scope "%s" does not exist.', $name)); + } + + if (self::SCOPE_CONTAINER !== $this->scopes[$name] && !isset($this->scopedServices[$this->scopes[$name]])) { + throw new \RuntimeException(sprintf('The parent scope "%s" must be active when entering this scope.', $this->scopes[$name])); + } + + if (isset($this->scopedServices[$name])) { + $services = array($this->services, $name => $this->scopedServices[$name]); + unset($this->scopedServices[$name]); + + foreach ($this->scopeChildren[$name] as $child) { + $services[$child] = $this->scopedServices[$child]; + unset($this->scopedServices[$child]); + } + + $this->services = call_user_func_array('array_diff_key', $services); + array_shift($services); + + if (!isset($this->scopeStacks[$name])) { + $this->scopeStacks[$name] = new \SplStack(); + } + $this->scopeStacks[$name]->push($services); + } + + $this->scopedServices[$name] = array(); + } + + + public function leaveScope($name) + { + if (!isset($this->scopedServices[$name])) { + throw new \InvalidArgumentException(sprintf('The scope "%s" is not active.', $name)); + } + + $services = array($this->services, $this->scopedServices[$name]); + unset($this->scopedServices[$name]); + foreach ($this->scopeChildren[$name] as $child) { + if (!isset($this->scopedServices[$child])) { + continue; + } + + $services[] = $this->scopedServices[$child]; + unset($this->scopedServices[$child]); + } + $this->services = call_user_func_array('array_diff_key', $services); + + if (isset($this->scopeStacks[$name]) && count($this->scopeStacks[$name]) > 0) { + $services = $this->scopeStacks[$name]->pop(); + $this->scopedServices += $services; + + array_unshift($services, $this->services); + $this->services = call_user_func_array('array_merge', $services); + } + } + + + public function addScope(ScopeInterface $scope) + { + $name = $scope->getName(); + $parentScope = $scope->getParentName(); + + if (self::SCOPE_CONTAINER === $name || self::SCOPE_PROTOTYPE === $name) { + throw new \InvalidArgumentException(sprintf('The scope "%s" is reserved.', $name)); + } + if (isset($this->scopes[$name])) { + throw new \InvalidArgumentException(sprintf('A scope with name "%s" already exists.', $name)); + } + if (self::SCOPE_CONTAINER !== $parentScope && !isset($this->scopes[$parentScope])) { + throw new \InvalidArgumentException(sprintf('The parent scope "%s" does not exist, or is invalid.', $parentScope)); + } + + $this->scopes[$name] = $parentScope; + $this->scopeChildren[$name] = array(); + + while ($parentScope !== self::SCOPE_CONTAINER) { + $this->scopeChildren[$parentScope][] = $name; + $parentScope = $this->scopes[$parentScope]; + } + } + + + public function hasScope($name) + { + return isset($this->scopes[$name]); + } + + + public function isScopeActive($name) + { + return isset($this->scopedServices[$name]); + } + + + static public function camelize($id) + { + return preg_replace_callback('/(^|_|\.)+(.)/', function ($match) { return ('.' === $match[1] ? '_' : '').strtoupper($match[2]); }, $id); + } + + + static public function underscore($id) + { + return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), array('\\1_\\2', '\\1_\\2'), strtr($id, '_', '.'))); + } +} +} + + + + +namespace Symfony\Component\HttpKernel +{ + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + + +interface HttpKernelInterface +{ + const MASTER_REQUEST = 1; + const SUB_REQUEST = 2; + + + function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true); +} +} + + + + +namespace Symfony\Component\HttpKernel +{ + +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpKernel\Bundle\BundleInterface; +use Symfony\Component\Config\Loader\LoaderInterface; + + +interface KernelInterface extends HttpKernelInterface, \Serializable +{ + + function registerBundles(); + + + function registerContainerConfiguration(LoaderInterface $loader); + + + function boot(); + + + function shutdown(); + + + function getBundles(); + + + function isClassInActiveBundle($class); + + + function getBundle($name, $first = true); + + + function locateResource($name, $dir = null, $first = true); + + + function getName(); + + + function getEnvironment(); + + + function isDebug(); + + + function getRootDir(); + + + function getContainer(); + + + function getStartTime(); + + + function getCacheDir(); + + + function getLogDir(); +} +} + + + + +namespace Symfony\Component\HttpKernel +{ + +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Dumper\PhpDumper; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; +use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; +use Symfony\Component\DependencyInjection\Loader\IniFileLoader; +use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use Symfony\Component\DependencyInjection\Loader\ClosureLoader; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpKernel\Bundle\BundleInterface; +use Symfony\Component\HttpKernel\Config\FileLocator; +use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass; +use Symfony\Component\HttpKernel\DependencyInjection\AddClassesToCachePass; +use Symfony\Component\HttpKernel\DependencyInjection\Extension as DIExtension; +use Symfony\Component\HttpKernel\Debug\ErrorHandler; +use Symfony\Component\HttpKernel\Debug\ExceptionHandler; +use Symfony\Component\Config\Loader\LoaderResolver; +use Symfony\Component\Config\Loader\DelegatingLoader; +use Symfony\Component\Config\ConfigCache; +use Symfony\Component\ClassLoader\ClassCollectionLoader; +use Symfony\Component\ClassLoader\DebugUniversalClassLoader; + + +abstract class Kernel implements KernelInterface +{ + protected $bundles; + protected $bundleMap; + protected $container; + protected $rootDir; + protected $environment; + protected $debug; + protected $booted; + protected $name; + protected $startTime; + protected $classes; + + const VERSION = '2.0.12'; + + + public function __construct($environment, $debug) + { + $this->environment = $environment; + $this->debug = (Boolean) $debug; + $this->booted = false; + $this->rootDir = $this->getRootDir(); + $this->name = preg_replace('/[^a-zA-Z0-9_]+/', '', basename($this->rootDir)); + $this->classes = array(); + + if ($this->debug) { + $this->startTime = microtime(true); + } + + $this->init(); + } + + public function init() + { + if ($this->debug) { + ini_set('display_errors', 1); + error_reporting(-1); + + DebugUniversalClassLoader::enable(); + ErrorHandler::register(); + if ('cli' !== php_sapi_name()) { + ExceptionHandler::register(); + } + } else { + ini_set('display_errors', 0); + } + } + + public function __clone() + { + if ($this->debug) { + $this->startTime = microtime(true); + } + + $this->booted = false; + $this->container = null; + } + + + public function boot() + { + if (true === $this->booted) { + return; + } + + $this->initializeBundles(); + + $this->initializeContainer(); + + foreach ($this->getBundles() as $bundle) { + $bundle->setContainer($this->container); + $bundle->boot(); + } + + $this->booted = true; + } + + + public function shutdown() + { + if (false === $this->booted) { + return; + } + + $this->booted = false; + + foreach ($this->getBundles() as $bundle) { + $bundle->shutdown(); + $bundle->setContainer(null); + } + + $this->container = null; + } + + + public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) + { + if (false === $this->booted) { + $this->boot(); + } + + return $this->getHttpKernel()->handle($request, $type, $catch); + } + + + protected function getHttpKernel() + { + return $this->container->get('http_kernel'); + } + + + public function getBundles() + { + return $this->bundles; + } + + + public function isClassInActiveBundle($class) + { + foreach ($this->getBundles() as $bundle) { + if (0 === strpos($class, $bundle->getNamespace())) { + return true; + } + } + + return false; + } + + + public function getBundle($name, $first = true) + { + if (!isset($this->bundleMap[$name])) { + throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() function of your %s.php file?', $name, get_class($this))); + } + + if (true === $first) { + return $this->bundleMap[$name][0]; + } + + return $this->bundleMap[$name]; + } + + + public function locateResource($name, $dir = null, $first = true) + { + if ('@' !== $name[0]) { + throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name)); + } + + if (false !== strpos($name, '..')) { + throw new \RuntimeException(sprintf('File name "%s" contains invalid characters (..).', $name)); + } + + $bundleName = substr($name, 1); + $path = ''; + if (false !== strpos($bundleName, '/')) { + list($bundleName, $path) = explode('/', $bundleName, 2); + } + + $isResource = 0 === strpos($path, 'Resources') && null !== $dir; + $overridePath = substr($path, 9); + $resourceBundle = null; + $bundles = $this->getBundle($bundleName, false); + $files = array(); + + foreach ($bundles as $bundle) { + if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) { + if (null !== $resourceBundle) { + throw new \RuntimeException(sprintf('"%s" resource is hidden by a resource from the "%s" derived bundle. Create a "%s" file to override the bundle resource.', + $file, + $resourceBundle, + $dir.'/'.$bundles[0]->getName().$overridePath + )); + } + + if ($first) { + return $file; + } + $files[] = $file; + } + + if (file_exists($file = $bundle->getPath().'/'.$path)) { + if ($first && !$isResource) { + return $file; + } + $files[] = $file; + $resourceBundle = $bundle->getName(); + } + } + + if (count($files) > 0) { + return $first && $isResource ? $files[0] : $files; + } + + throw new \InvalidArgumentException(sprintf('Unable to find file "%s".', $name)); + } + + + public function getName() + { + return $this->name; + } + + + public function getEnvironment() + { + return $this->environment; + } + + + public function isDebug() + { + return $this->debug; + } + + + public function getRootDir() + { + if (null === $this->rootDir) { + $r = new \ReflectionObject($this); + $this->rootDir = dirname($r->getFileName()); + } + + return $this->rootDir; + } + + + public function getContainer() + { + return $this->container; + } + + + public function loadClassCache($name = 'classes', $extension = '.php') + { + if (!$this->booted && file_exists($this->getCacheDir().'/classes.map')) { + ClassCollectionLoader::load(include($this->getCacheDir().'/classes.map'), $this->getCacheDir(), $name, $this->debug, false, $extension); + } + } + + + public function setClassCache(array $classes) + { + file_put_contents($this->getCacheDir().'/classes.map', sprintf('debug ? $this->startTime : -INF; + } + + + public function getCacheDir() + { + return $this->rootDir.'/cache/'.$this->environment; + } + + + public function getLogDir() + { + return $this->rootDir.'/logs'; + } + + + protected function initializeBundles() + { + $this->bundles = array(); + $topMostBundles = array(); + $directChildren = array(); + + foreach ($this->registerBundles() as $bundle) { + $name = $bundle->getName(); + if (isset($this->bundles[$name])) { + throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s"', $name)); + } + $this->bundles[$name] = $bundle; + + if ($parentName = $bundle->getParent()) { + if (isset($directChildren[$parentName])) { + throw new \LogicException(sprintf('Bundle "%s" is directly extended by two bundles "%s" and "%s".', $parentName, $name, $directChildren[$parentName])); + } + if ($parentName == $name) { + throw new \LogicException(sprintf('Bundle "%s" can not extend itself.', $name)); + } + $directChildren[$parentName] = $name; + } else { + $topMostBundles[$name] = $bundle; + } + } + + if (count($diff = array_values(array_diff(array_keys($directChildren), array_keys($this->bundles))))) { + throw new \LogicException(sprintf('Bundle "%s" extends bundle "%s", which is not registered.', $directChildren[$diff[0]], $diff[0])); + } + + $this->bundleMap = array(); + foreach ($topMostBundles as $name => $bundle) { + $bundleMap = array($bundle); + $hierarchy = array($name); + + while (isset($directChildren[$name])) { + $name = $directChildren[$name]; + array_unshift($bundleMap, $this->bundles[$name]); + $hierarchy[] = $name; + } + + foreach ($hierarchy as $bundle) { + $this->bundleMap[$bundle] = $bundleMap; + array_pop($bundleMap); + } + } + + } + + + protected function getContainerClass() + { + return $this->name.ucfirst($this->environment).($this->debug ? 'Debug' : '').'ProjectContainer'; + } + + + protected function getContainerBaseClass() + { + return 'Container'; + } + + + protected function initializeContainer() + { + $class = $this->getContainerClass(); + $cache = new ConfigCache($this->getCacheDir().'/'.$class.'.php', $this->debug); + $fresh = true; + if (!$cache->isFresh()) { + $container = $this->buildContainer(); + $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass()); + + $fresh = false; + } + + require_once $cache; + + $this->container = new $class(); + $this->container->set('kernel', $this); + + if (!$fresh && $this->container->has('cache_warmer')) { + $this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir')); + } + } + + + protected function getKernelParameters() + { + $bundles = array(); + foreach ($this->bundles as $name => $bundle) { + $bundles[$name] = get_class($bundle); + } + + return array_merge( + array( + 'kernel.root_dir' => $this->rootDir, + 'kernel.environment' => $this->environment, + 'kernel.debug' => $this->debug, + 'kernel.name' => $this->name, + 'kernel.cache_dir' => $this->getCacheDir(), + 'kernel.logs_dir' => $this->getLogDir(), + 'kernel.bundles' => $bundles, + 'kernel.charset' => 'UTF-8', + 'kernel.container_class' => $this->getContainerClass(), + ), + $this->getEnvParameters() + ); + } + + + protected function getEnvParameters() + { + $parameters = array(); + foreach ($_SERVER as $key => $value) { + if (0 === strpos($key, 'SYMFONY__')) { + $parameters[strtolower(str_replace('__', '.', substr($key, 9)))] = $value; + } + } + + return $parameters; + } + + + protected function buildContainer() + { + foreach (array('cache' => $this->getCacheDir(), 'logs' => $this->getLogDir()) as $name => $dir) { + if (!is_dir($dir)) { + if (false === @mkdir($dir, 0777, true)) { + throw new \RuntimeException(sprintf("Unable to create the %s directory (%s)\n", $name, $dir)); + } + } elseif (!is_writable($dir)) { + throw new \RuntimeException(sprintf("Unable to write in the %s directory (%s)\n", $name, $dir)); + } + } + + $container = new ContainerBuilder(new ParameterBag($this->getKernelParameters())); + $extensions = array(); + foreach ($this->bundles as $bundle) { + $bundle->build($container); + + if ($extension = $bundle->getContainerExtension()) { + $container->registerExtension($extension); + $extensions[] = $extension->getAlias(); + } + + if ($this->debug) { + $container->addObjectResource($bundle); + } + } + $container->addObjectResource($this); + + $container->getCompilerPassConfig()->setMergePass(new MergeExtensionConfigurationPass($extensions)); + + if (null !== $cont = $this->registerContainerConfiguration($this->getContainerLoader($container))) { + $container->merge($cont); + } + + $container->addCompilerPass(new AddClassesToCachePass($this)); + $container->compile(); + + return $container; + } + + + protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass) + { + $dumper = new PhpDumper($container); + $content = $dumper->dump(array('class' => $class, 'base_class' => $baseClass)); + if (!$this->debug) { + $content = self::stripComments($content); + } + + $cache->write($content, $container->getResources()); + } + + + protected function getContainerLoader(ContainerInterface $container) + { + $locator = new FileLocator($this); + $resolver = new LoaderResolver(array( + new XmlFileLoader($container, $locator), + new YamlFileLoader($container, $locator), + new IniFileLoader($container, $locator), + new PhpFileLoader($container, $locator), + new ClosureLoader($container), + )); + + return new DelegatingLoader($resolver); + } + + + static public function stripComments($source) + { + if (!function_exists('token_get_all')) { + return $source; + } + + $output = ''; + foreach (token_get_all($source) as $token) { + if (is_string($token)) { + $output .= $token; + } elseif (!in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) { + $output .= $token[1]; + } + } + + $output = preg_replace(array('/\s+$/Sm', '/\n+/S'), "\n", $output); + + return $output; + } + + public function serialize() + { + return serialize(array($this->environment, $this->debug)); + } + + public function unserialize($data) + { + list($environment, $debug) = unserialize($data); + + $this->__construct($environment, $debug); + } +} +} + + + + +namespace Symfony\Component\ClassLoader +{ + + +class ClassCollectionLoader +{ + static private $loaded; + + + static public function load($classes, $cacheDir, $name, $autoReload, $adaptive = false, $extension = '.php') + { + if (isset(self::$loaded[$name])) { + return; + } + + self::$loaded[$name] = true; + + if ($adaptive) { + $classes = array_diff($classes, get_declared_classes(), get_declared_interfaces()); + + $name = $name.'-'.substr(md5(implode('|', $classes)), 0, 5); + } + + $cache = $cacheDir.'/'.$name.$extension; + + $reload = false; + if ($autoReload) { + $metadata = $cacheDir.'/'.$name.$extension.'.meta'; + if (!file_exists($metadata) || !file_exists($cache)) { + $reload = true; + } else { + $time = filemtime($cache); + $meta = unserialize(file_get_contents($metadata)); + + if ($meta[1] != $classes) { + $reload = true; + } else { + foreach ($meta[0] as $resource) { + if (!file_exists($resource) || filemtime($resource) > $time) { + $reload = true; + + break; + } + } + } + } + } + + if (!$reload && file_exists($cache)) { + require_once $cache; + + return; + } + + $files = array(); + $content = ''; + foreach ($classes as $class) { + if (!class_exists($class) && !interface_exists($class) && (!function_exists('trait_exists') || !trait_exists($class))) { + throw new \InvalidArgumentException(sprintf('Unable to load class "%s"', $class)); + } + + $r = new \ReflectionClass($class); + $files[] = $r->getFileName(); + + $c = preg_replace(array('/^\s*<\?php/', '/\?>\s*$/'), '', file_get_contents($r->getFileName())); + + if (!$r->inNamespace()) { + $c = "\nnamespace\n{\n".self::stripComments($c)."\n}\n"; + } else { + $c = self::fixNamespaceDeclarations('namespaces; + } + + + public function getPrefixes() + { + return $this->prefixes; + } + + + public function getNamespaceFallbacks() + { + return $this->namespaceFallbacks; + } + + + public function getPrefixFallbacks() + { + return $this->prefixFallbacks; + } + + + public function registerNamespaceFallbacks(array $dirs) + { + $this->namespaceFallbacks = $dirs; + } + + + public function registerPrefixFallbacks(array $dirs) + { + $this->prefixFallbacks = $dirs; + } + + + public function registerNamespaces(array $namespaces) + { + foreach ($namespaces as $namespace => $locations) { + $this->namespaces[$namespace] = (array) $locations; + } + } + + + public function registerNamespace($namespace, $paths) + { + $this->namespaces[$namespace] = (array) $paths; + } + + + public function registerPrefixes(array $classes) + { + foreach ($classes as $prefix => $locations) { + $this->prefixes[$prefix] = (array) $locations; + } + } + + + public function registerPrefix($prefix, $paths) + { + $this->prefixes[$prefix] = (array) $paths; + } + + + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + require $file; + } + } + + + public function findFile($class) + { + if ('\\' == $class[0]) { + $class = substr($class, 1); + } + + if (false !== $pos = strrpos($class, '\\')) { + $namespace = substr($class, 0, $pos); + foreach ($this->namespaces as $ns => $dirs) { + if (0 !== strpos($namespace, $ns)) { + continue; + } + + foreach ($dirs as $dir) { + $className = substr($class, $pos + 1); + $file = $dir.DIRECTORY_SEPARATOR.str_replace('\\', DIRECTORY_SEPARATOR, $namespace).DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $className).'.php'; + if (file_exists($file)) { + return $file; + } + } + } + + foreach ($this->namespaceFallbacks as $dir) { + $file = $dir.DIRECTORY_SEPARATOR.str_replace('\\', DIRECTORY_SEPARATOR, $class).'.php'; + if (file_exists($file)) { + return $file; + } + } + } else { + foreach ($this->prefixes as $prefix => $dirs) { + if (0 !== strpos($class, $prefix)) { + continue; + } + + foreach ($dirs as $dir) { + $file = $dir.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $class).'.php'; + if (file_exists($file)) { + return $file; + } + } + } + + foreach ($this->prefixFallbacks as $dir) { + $file = $dir.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $class).'.php'; + if (file_exists($file)) { + return $file; + } + } + } + } +} +} + + + + +namespace Symfony\Component\HttpKernel\Bundle +{ + +use Symfony\Component\DependencyInjection\ContainerAware; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\Console\Application; +use Symfony\Component\Finder\Finder; + + +abstract class Bundle extends ContainerAware implements BundleInterface +{ + protected $name; + protected $reflected; + protected $extension; + + + public function boot() + { + } + + + public function shutdown() + { + } + + + public function build(ContainerBuilder $container) + { + } + + + public function getContainerExtension() + { + if (null === $this->extension) { + $basename = preg_replace('/Bundle$/', '', $this->getName()); + + $class = $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension'; + if (class_exists($class)) { + $extension = new $class(); + + $expectedAlias = Container::underscore($basename); + if ($expectedAlias != $extension->getAlias()) { + throw new \LogicException(sprintf( + 'The extension alias for the default extension of a '. + 'bundle must be the underscored version of the '. + 'bundle name ("%s" instead of "%s")', + $expectedAlias, $extension->getAlias() + )); + } + + $this->extension = $extension; + } else { + $this->extension = false; + } + } + + if ($this->extension) { + return $this->extension; + } + } + + + public function getNamespace() + { + if (null === $this->reflected) { + $this->reflected = new \ReflectionObject($this); + } + + return $this->reflected->getNamespaceName(); + } + + + public function getPath() + { + if (null === $this->reflected) { + $this->reflected = new \ReflectionObject($this); + } + + return dirname($this->reflected->getFileName()); + } + + + public function getParent() + { + return null; + } + + + final public function getName() + { + if (null !== $this->name) { + return $this->name; + } + + $name = get_class($this); + $pos = strrpos($name, '\\'); + + return $this->name = false === $pos ? $name : substr($name, $pos + 1); + } + + + public function registerCommands(Application $application) + { + if (!$dir = realpath($this->getPath().'/Command')) { + return; + } + + $finder = new Finder(); + $finder->files()->name('*Command.php')->in($dir); + + $prefix = $this->getNamespace().'\\Command'; + foreach ($finder as $file) { + $ns = $prefix; + if ($relativePath = $file->getRelativePath()) { + $ns .= '\\'.strtr($relativePath, '/', '\\'); + } + $r = new \ReflectionClass($ns.'\\'.$file->getBasename('.php')); + if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract()) { + $application->add($r->newInstance()); + } + } + } +} +} + + + + +namespace Symfony\Component\HttpKernel\Bundle +{ + +use Symfony\Component\DependencyInjection\ContainerBuilder; + + +interface BundleInterface +{ + + function boot(); + + + function shutdown(); + + + function build(ContainerBuilder $container); + + + function getContainerExtension(); + + + function getParent(); + + + function getName(); + + + function getNamespace(); + + + function getPath(); +} +} + + + + +namespace Symfony\Component\Config +{ + + +class ConfigCache +{ + private $debug; + private $file; + + + public function __construct($file, $debug) + { + $this->file = $file; + $this->debug = (Boolean) $debug; + } + + + public function __toString() + { + return $this->file; + } + + + public function isFresh() + { + if (!file_exists($this->file)) { + return false; + } + + if (!$this->debug) { + return true; + } + + $metadata = $this->file.'.meta'; + if (!file_exists($metadata)) { + return false; + } + + $time = filemtime($this->file); + $meta = unserialize(file_get_contents($metadata)); + foreach ($meta as $resource) { + if (!$resource->isFresh($time)) { + return false; + } + } + + return true; + } + + + public function write($content, array $metadata = null) + { + $dir = dirname($this->file); + if (!is_dir($dir)) { + if (false === @mkdir($dir, 0777, true)) { + throw new \RuntimeException(sprintf('Unable to create the %s directory', $dir)); + } + } elseif (!is_writable($dir)) { + throw new \RuntimeException(sprintf('Unable to write in the %s directory', $dir)); + } + + $tmpFile = tempnam(dirname($this->file), basename($this->file)); + if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $this->file)) { + chmod($this->file, 0666); + } else { + throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $this->file)); + } + + if (null !== $metadata && true === $this->debug) { + $file = $this->file.'.meta'; + $tmpFile = tempnam(dirname($file), basename($file)); + if (false !== @file_put_contents($tmpFile, serialize($metadata)) && @rename($tmpFile, $file)) { + chmod($file, 0666); + } + } + } +} +} diff --git a/app/check.php b/app/check.php new file mode 100644 index 0000000..9481c07 --- /dev/null +++ b/app/check.php @@ -0,0 +1,108 @@ +='), sprintf('Checking that PHP version is at least 5.3.2 (%s installed)', phpversion()), 'Install PHP 5.3.2 or newer (current version is '.phpversion(), true); +check(ini_get('date.timezone'), 'Checking that the "date.timezone" setting is set', 'Set the "date.timezone" setting in php.ini (like Europe/Paris)', true); +check(is_writable(__DIR__.'/../app/cache'), sprintf('Checking that app/cache/ directory is writable'), 'Change the permissions of the app/cache/ directory so that the web server can write in it', true); +check(is_writable(__DIR__.'/../app/logs'), sprintf('Checking that the app/logs/ directory is writable'), 'Change the permissions of the app/logs/ directory so that the web server can write in it', true); +check(function_exists('json_encode'), 'Checking that the json_encode() is available', 'Install and enable the json extension', true); +check(class_exists('SQLite3') || in_array('sqlite', PDO::getAvailableDrivers()), 'Checking that the SQLite3 or PDO_SQLite extension is available', 'Install and enable the SQLite3 or PDO_SQLite extension.', true); +check(function_exists('session_start'), 'Checking that the session_start() is available', 'Install and enable the session extension', true); +check(function_exists('ctype_alpha'), 'Checking that the ctype_alpha() is available', 'Install and enable the ctype extension', true); +check(function_exists('token_get_all'), 'Checking that the token_get_all() is available', 'Install and enable the tokenizer extension', true); +check(!(function_exists('apc_store') && ini_get('apc.enabled')) || version_compare(phpversion('apc'), '3.0.17', '>='), 'Checking that the APC version is at least 3.0.17', 'Upgrade your APC extension (3.0.17+)', true); + +// warnings +echo_title("Optional checks"); +check(class_exists('DomDocument'), 'Checking that the PHP-XML module is installed', 'Install and enable the php-xml module', false); +check(function_exists('token_get_all'), 'Checking that the token_get_all() function is available', 'Install and enable the Tokenizer extension (highly recommended)', false); +check(function_exists('mb_strlen'), 'Checking that the mb_strlen() function is available', 'Install and enable the mbstring extension', false); +check(function_exists('iconv'), 'Checking that the iconv() function is available', 'Install and enable the iconv extension', false); +check(function_exists('utf8_decode'), 'Checking that the utf8_decode() is available', 'Install and enable the XML extension', false); +if (PHP_OS != 'WINNT') { + check(function_exists('posix_isatty'), 'Checking that the posix_isatty() is available', 'Install and enable the php_posix extension (used to colorized the CLI output)', false); +} +check(class_exists('Locale'), 'Checking that the intl extension is available', 'Install and enable the intl extension (used for validators)', false); +if (class_exists('Locale')) { + $version = ''; + + if (defined('INTL_ICU_VERSION')) { + $version = INTL_ICU_VERSION; + } else { + $reflector = new \ReflectionExtension('intl'); + + ob_start(); + $reflector->info(); + $output = strip_tags(ob_get_clean()); + + preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches); + $version = $matches[1]; + } + + check(version_compare($version, '4.0', '>='), 'Checking that the intl ICU version is at least 4+', 'Upgrade your intl extension with a newer ICU version (4+)', false); +} + +$accelerator = + (function_exists('apc_store') && ini_get('apc.enabled')) + || + function_exists('eaccelerator_put') && ini_get('eaccelerator.enable') + || + function_exists('xcache_set') +; +check($accelerator, 'Checking that a PHP accelerator is installed', 'Install a PHP accelerator like APC (highly recommended)', false); + +check(!ini_get('short_open_tag'), 'Checking that php.ini has short_open_tag set to off', 'Set short_open_tag to off in php.ini', false); +check(!ini_get('magic_quotes_gpc'), 'Checking that php.ini has magic_quotes_gpc set to off', 'Set magic_quotes_gpc to off in php.ini', false); +check(!ini_get('register_globals'), 'Checking that php.ini has register_globals set to off', 'Set register_globals to off in php.ini', false); +check(!ini_get('session.auto_start'), 'Checking that php.ini has session.auto_start set to off', 'Set session.auto_start to off in php.ini', false); + +echo_title("Optional checks (Doctrine)"); + +check(class_exists('PDO'), 'Checking that PDO is installed', 'Install PDO (mandatory for Doctrine)', false); +if (class_exists('PDO')) { + $drivers = PDO::getAvailableDrivers(); + check(count($drivers), 'Checking that PDO has some drivers installed: '.implode(', ', $drivers), 'Install PDO drivers (mandatory for Doctrine)'); +} + +/** + * Checks a configuration. + */ +function check($boolean, $message, $help = '', $fatal = false) +{ + echo $boolean ? " OK " : sprintf("\n\n[[%s]] ", $fatal ? ' ERROR ' : 'WARNING'); + echo sprintf("$message%s\n", $boolean ? '' : ': FAILED'); + + if (!$boolean) { + echo " *** $help ***\n"; + if ($fatal) { + exit("You must fix this problem before resuming the check.\n"); + } + } +} + +function echo_title($title) +{ + echo "\n** $title **\n\n"; +} diff --git a/app/config/config.yml b/app/config/config.yml new file mode 100644 index 0000000..b6da31e --- /dev/null +++ b/app/config/config.yml @@ -0,0 +1,60 @@ +imports: + - { resource: parameters.ini } + - { resource: security.yml } + +framework: + #esi: ~ + #translator: { fallback: %locale% } + secret: %secret% + charset: UTF-8 + router: { resource: "%kernel.root_dir%/config/routing.yml" } + form: true + csrf_protection: true + validation: { enable_annotations: true } + templating: { engines: ['twig'] } #assets_version: SomeVersionScheme + session: + default_locale: %locale% + auto_start: true + +# Twig Configuration +twig: + debug: %kernel.debug% + strict_variables: %kernel.debug% + +# Assetic Configuration +assetic: + debug: %kernel.debug% + use_controller: false + # java: /usr/bin/java + filters: + cssrewrite: ~ + # closure: + # jar: %kernel.root_dir%/java/compiler.jar + # yui_css: + # jar: %kernel.root_dir%/java/yuicompressor-2.4.2.jar + +# Doctrine Configuration +doctrine: + dbal: + driver: %database_driver% + host: %database_host% + port: %database_port% + dbname: %database_name% + user: %database_user% + password: %database_password% + charset: UTF8 + + orm: + auto_generate_proxy_classes: %kernel.debug% + auto_mapping: true + +# Swiftmailer Configuration +swiftmailer: + transport: %mailer_transport% + host: %mailer_host% + username: %mailer_user% + password: %mailer_password% + +jms_security_extra: + secure_controllers: true + secure_all_services: false diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml new file mode 100644 index 0000000..671f52f --- /dev/null +++ b/app/config/config_dev.yml @@ -0,0 +1,23 @@ +imports: + - { resource: config.yml } + +framework: + router: { resource: "%kernel.root_dir%/config/routing_dev.yml" } + profiler: { only_exceptions: false } + +web_profiler: + toolbar: true + intercept_redirects: false + +monolog: + handlers: + main: + type: stream + path: %kernel.logs_dir%/%kernel.environment%.log + level: debug + firephp: + type: firephp + level: info + +assetic: + use_controller: true diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml new file mode 100644 index 0000000..0b91d4d --- /dev/null +++ b/app/config/config_prod.yml @@ -0,0 +1,19 @@ +imports: + - { resource: config.yml } + +#doctrine: +# orm: +# metadata_cache_driver: apc +# result_cache_driver: apc +# query_cache_driver: apc + +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + nested: + type: stream + path: %kernel.logs_dir%/%kernel.environment%.log + level: debug diff --git a/app/config/config_test.yml b/app/config/config_test.yml new file mode 100644 index 0000000..7dba2fb --- /dev/null +++ b/app/config/config_test.yml @@ -0,0 +1,14 @@ +imports: + - { resource: config_dev.yml } + +framework: + test: ~ + session: + storage_id: session.storage.filesystem + +web_profiler: + toolbar: false + intercept_redirects: false + +swiftmailer: + disable_delivery: true diff --git a/app/config/parameters.ini b/app/config/parameters.ini new file mode 100644 index 0000000..3628066 --- /dev/null +++ b/app/config/parameters.ini @@ -0,0 +1,19 @@ +; These parameters can be imported into other config files +; by enclosing the key with % (like %database_user%) +; Comments start with ';', as in php.ini +[parameters] + database_driver = pdo_mysql + database_host = localhost + database_port = + database_name = symfony + database_user = root + database_password = + + mailer_transport = smtp + mailer_host = localhost + mailer_user = + mailer_password = + + locale = en + + secret = ThisTokenIsNotSoSecretChangeIt diff --git a/app/config/routing.yml b/app/config/routing.yml new file mode 100644 index 0000000..8b4740a --- /dev/null +++ b/app/config/routing.yml @@ -0,0 +1,4 @@ +# Internal routing configuration to handle ESI +#_internal: +# resource: "@FrameworkBundle/Resources/config/routing/internal.xml" +# prefix: /_internal diff --git a/app/config/routing_dev.yml b/app/config/routing_dev.yml new file mode 100644 index 0000000..27bc683 --- /dev/null +++ b/app/config/routing_dev.yml @@ -0,0 +1,18 @@ +_assetic: + resource: . + type: assetic + +_wdt: + resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" + prefix: /_wdt + +_profiler: + resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" + prefix: /_profiler + +_configurator: + resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" + prefix: /_configurator + +_main: + resource: routing.yml diff --git a/app/config/security.yml b/app/config/security.yml new file mode 100644 index 0000000..586d1d0 --- /dev/null +++ b/app/config/security.yml @@ -0,0 +1,38 @@ +security: + encoders: + Symfony\Component\Security\Core\User\User: plaintext + + role_hierarchy: + ROLE_ADMIN: ROLE_USER + ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] + + providers: + in_memory: + users: + user: { password: userpass, roles: [ 'ROLE_USER' ] } + admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } + + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + + login: + pattern: ^/demo/secured/login$ + security: false + + secured_area: + pattern: ^/demo/secured/ + form_login: + check_path: /demo/secured/login_check + login_path: /demo/secured/login + logout: + path: /demo/secured/logout + target: /demo/ + #anonymous: ~ + #http_basic: + # realm: "Secured Demo Area" + + access_control: + #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } + #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 } diff --git a/app/console b/app/console new file mode 100755 index 0000000..468cc84 --- /dev/null +++ b/app/console @@ -0,0 +1,22 @@ +#!/usr/bin/env php +getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); +$debug = !$input->hasParameterOption(array('--no-debug', '')); + +$kernel = new AppKernel($env, $debug); +$application = new Application($kernel); +$application->run(); diff --git a/app/logs/.gitkeep b/app/logs/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/app/phpunit.xml.dist b/app/phpunit.xml.dist new file mode 100644 index 0000000..1e31086 --- /dev/null +++ b/app/phpunit.xml.dist @@ -0,0 +1,41 @@ + + + + + + + + ../src/*/*Bundle/Tests + ../src/*/Bundle/*Bundle/Tests + + + + + + + + ../src + + ../src/*/*Bundle/Resources + ../src/*/*Bundle/Tests + ../src/*/Bundle/*Bundle/Resources + ../src/*/Bundle/*Bundle/Tests + + + + + diff --git a/bin/.htaccess b/bin/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/bin/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/bin/vendors b/bin/vendors new file mode 100755 index 0000000..0e4fb85 --- /dev/null +++ b/bin/vendors @@ -0,0 +1,154 @@ +#!/usr/bin/env php + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +set_time_limit(0); + +$rootDir = dirname(__DIR__); +$vendorDir = $rootDir.'/vendor'; + +array_shift($argv); +if (!isset($argv[0])) { + exit(<< $dep) { + $dep = array_map('trim', $dep); + + // install dir + $installDir = isset($dep['target']) ? $vendorDir.'/'.$dep['target'] : $vendorDir.'/'.$name; + if (in_array('--reinstall', $argv) && realpath($installDir)) { + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + system(sprintf('rmdir /S /Q %s', escapeshellarg(realpath($installDir)))); + } else { + system(sprintf('rm -rf %s', escapeshellarg($installDir))); + } + } + + if ('install' === $command || 'update' === $command) { + echo '> Installing/Updating '.$name.PHP_EOL; + + // url + if (!isset($dep['git'])) { + exit(sprintf('The "git" value for the "%s" dependency must be set.', $name).PHP_EOL); + } + $url = $dep['git']; + + if (!is_dir($installDir)) { + system(sprintf('git clone %s %s', escapeshellarg($url), escapeshellarg($installDir))); + } + + // revision + if (isset($versions[$name])) { + $rev = $versions[$name]; + } else { + $rev = isset($dep['version']) ? $dep['version'] : 'origin/HEAD'; + } + + $status = system(sprintf('cd %s && git status --porcelain', escapeshellarg($installDir))); + if (!empty($status)) { + exit(sprintf('"%s" has local modifications. Please revert or commit/push them before running this command again.', $name).PHP_EOL); + } + $current_rev = system(sprintf('cd %s && git rev-list --max-count=1 HEAD', escapeshellarg($installDir))); + if ($current_rev === $rev) { + continue; + } + + system(sprintf('cd %s && git fetch origin && git reset --hard %s', escapeshellarg($installDir), escapeshellarg($rev))); + } + + if ('update' === $command || 'lock' === $command) { + ob_start(); + system(sprintf('cd %s && git log -n 1 --format=%%H', escapeshellarg($installDir))); + $newversion = trim(ob_get_clean()); + + ob_start(); + system(sprintf('cd %s && git name-rev --tags --name-only %s', escapeshellarg($installDir), $newversion)); + // remove trailing ^0 from tags, those are the tags themselves + $niceversion = preg_replace('/\^0$/', '', trim(ob_get_clean())); + + // undefined is returned in case no name-rev could be found + if ('undefined' !== $niceversion) { + $newversions[] = $name.' '.$niceversion; + } else { + $newversions[] = $name.' '.$newversion; + } + } +} + +// update? +if ('update' === $command || 'lock' === $command) { + echo '> Updating deps.lock'.PHP_EOL; + + file_put_contents($rootDir.'/deps.lock', implode("\n", $newversions)."\n"); +} + +// php on windows can't use the shebang line from system() +$interpreter = defined('PHP_WINDOWS_VERSION_BUILD') ? 'php.exe' : ''; + +// Update the bootstrap files +system(sprintf('%s %s %s', $interpreter, escapeshellarg($rootDir.'/vendor/bundles/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php'), escapeshellarg($rootDir))); + +// Update assets +system(sprintf('%s %s assets:install %s', $interpreter, escapeshellarg($rootDir.'/app/console'), escapeshellarg($rootDir.'/web/'))); + +// Remove the cache +system(sprintf('%s %s cache:clear --no-warmup', $interpreter, escapeshellarg($rootDir.'/app/console'))); diff --git a/deps b/deps new file mode 100644 index 0000000..1ff5139 --- /dev/null +++ b/deps @@ -0,0 +1,63 @@ +[symfony] + git=http://github.com/symfony/symfony.git + version=v2.0.12 + +[twig] + git=http://github.com/fabpot/Twig.git + version=v1.6.2 + +[monolog] + git=http://github.com/Seldaek/monolog.git + version=1.0.2 + +[doctrine-common] + git=http://github.com/doctrine/common.git + version=2.1.4 + +[doctrine-dbal] + git=http://github.com/doctrine/dbal.git + version=2.1.6 + +[doctrine] + git=http://github.com/doctrine/doctrine2.git + version=2.1.6 + +[swiftmailer] + git=http://github.com/swiftmailer/swiftmailer.git + version=v4.1.5 + +[assetic] + git=http://github.com/kriswallsmith/assetic.git + version=v1.0.3 + +[twig-extensions] + git=http://github.com/fabpot/Twig-extensions.git + +[metadata] + git=http://github.com/schmittjoh/metadata.git + version=1.0.0 + +[SensioFrameworkExtraBundle] + git=http://github.com/sensio/SensioFrameworkExtraBundle.git + target=/bundles/Sensio/Bundle/FrameworkExtraBundle + version=origin/2.0 + +[JMSSecurityExtraBundle] + git=http://github.com/schmittjoh/JMSSecurityExtraBundle.git + target=/bundles/JMS/SecurityExtraBundle + version=origin/1.0.x + +[SensioDistributionBundle] + git=http://github.com/sensio/SensioDistributionBundle.git + target=/bundles/Sensio/Bundle/DistributionBundle + version=origin/2.0 + +[SensioGeneratorBundle] + git=http://github.com/sensio/SensioGeneratorBundle.git + target=/bundles/Sensio/Bundle/GeneratorBundle + version=origin/2.0 + +[AsseticBundle] + git=http://github.com/symfony/AsseticBundle.git + target=/bundles/Symfony/Bundle/AsseticBundle + version=v1.0.1 diff --git a/deps.lock b/deps.lock new file mode 100644 index 0000000..2a464b7 --- /dev/null +++ b/deps.lock @@ -0,0 +1,15 @@ +symfony v2.0.12 +twig v1.6.2 +monolog 1.0.2 +doctrine-common 2.1.4 +doctrine-dbal 2.1.6 +doctrine 2.1.6 +swiftmailer v4.1.5 +assetic v1.0.3 +twig-extensions 1dfff8e793f50f651c4f74f796c2c68a4aee3147 +metadata 1.0.0 +SensioFrameworkExtraBundle 638f545b7020b9e9d5944a7e3167f60ed848250d +JMSSecurityExtraBundle 541a4c242328dc04b99540c75346cc74a7c0cfb5 +SensioDistributionBundle 20b66a408084ad8752f98e50f10533f5245310bf +SensioGeneratorBundle b1ccb78c1743f30817b0fce9bb5c6baff6ed7bf8 +AsseticBundle v1.0.1 diff --git a/src/.htaccess b/src/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/src/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/web/.htaccess b/web/.htaccess new file mode 100644 index 0000000..0355c20 --- /dev/null +++ b/web/.htaccess @@ -0,0 +1,5 @@ + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ app.php [QSA,L] + diff --git a/web/app.php b/web/app.php new file mode 100644 index 0000000..5a9e02d --- /dev/null +++ b/web/app.php @@ -0,0 +1,12 @@ +loadClassCache(); +//$kernel = new AppCache($kernel); +$kernel->handle(Request::createFromGlobals())->send(); diff --git a/web/app_dev.php b/web/app_dev.php new file mode 100644 index 0000000..00d78ac --- /dev/null +++ b/web/app_dev.php @@ -0,0 +1,24 @@ +loadClassCache(); +$kernel->handle(Request::createFromGlobals())->send(); diff --git a/web/apple-touch-icon.png b/web/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..11f17e6d89ee3b416218ede42b66ec1dd81507f2 GIT binary patch literal 10784 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 f! */ +.sf-exceptionreset .traces li:after { + content: "\00A0"; +} + +.sf-exceptionreset .trace { + border: 1px solid #D3D3D3; + padding: 10px; + overflow: auto; + margin: 10px 0 20px; +} + +.sf-exceptionreset .block, +.sf-exceptionreset .block_exception { + -moz-border-radius: 16px; + -webkit-border-radius: 16px; + border-radius: 16px; + margin-bottom: 20px; +} +.sf-exceptionreset .block { + background-color: #FFFFFF; + border: 1px solid #dfdfdf; + padding: 40px 50px; +} +.sf-exceptionreset .block_exception { + background-color: #f6f6f6; + border: 1px solid #dfdfdf; + padding: 30px 28px; +} +.sf-exceptionreset .block_exception div { + color: #313131; + font-size: 10px; +} + +.sf-exceptionreset .block_exception_detected .illustration_exception, +.sf-exceptionreset .block_exception_detected .text_exception { + float: left; +} +.sf-exceptionreset .block_exception_detected .illustration_exception { + width: 152px; +} +.sf-exceptionreset .block_exception_detected .text_exception { + width: 670px; + padding: 30px 44px 24px 46px; + position: relative; +} + +.sf-exceptionreset .text_exception .open_quote, +.sf-exceptionreset .text_exception .close_quote { + position: absolute; +} +.sf-exceptionreset .open_quote { + top: 0; + left: 0; +} +.sf-exceptionreset .close_quote { + bottom: 0; + right: 50px; +} + +.sf-exceptionreset .block_exception p { + font-family: Arial, Helvetica, sans-serif; +} +.sf-exceptionreset .block_exception p a, +.sf-exceptionreset .block_exception p a:hover { + color: #565656; +} + +.sf-exceptionreset h2 { + font-size: 16px; + font-family: Arial, Helvetica, sans-serif; + padding-bottom: 16px; +} + +.sf-exceptionreset li a { + background: none; + color: #868686; + text-decoration: none; +} + +.sf-exceptionreset li a:hover { + background: none; + color: #313131; + text-decoration: underline; +} + +.sf-exceptionreset .logs h2 { + float: left; + width: 654px; +} + +.sf-exceptionreset .error_count { + float: right; + width: 170px; + text-align: right; +} + +.sf-exceptionreset .error_count span { + display: inline-block; + background-color: #aacd4e; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + padding: 4px; + color: white; + margin-right: 2px; + font-size: 11px; + font-weight: bold; +} + +.sf-exceptionreset .toggle { + vertical-align: middle; +} + +.sf-exceptionreset .linked ul, +.sf-exceptionreset .linked li { + display: inline; +} + +.sf-exceptionreset #output_content { + color: #000; + font-size: 12px; +} + +.sf-exceptionreset ol { + padding: 10px 0; +} +.sf-exceptionreset ol li { + list-style: decimal; + margin-left: 20px; + padding: 2px; + padding-bottom: 20px; +} +.sf-exceptionreset ol ol li { + list-style-position: inside; + margin-left: 0; + white-space: nowrap; + font-size: 12px; + padding-bottom: 0; +} +.sf-exceptionreset li .selected { + background-color: #ffd; +} diff --git a/web/bundles/framework/css/exception_layout.css b/web/bundles/framework/css/exception_layout.css new file mode 100644 index 0000000..95eac9e --- /dev/null +++ b/web/bundles/framework/css/exception_layout.css @@ -0,0 +1,131 @@ +html { + background: #eee; +} + +body { + font: 11px Verdana, Arial, sans-serif; + color: #333; +} + +.sf-exceptionreset, .sf-exceptionreset .block, .sf-exceptionreset #message { + margin: auto; +} + +img { + border: 0; +} + +.clear { + clear: both; + height: 0; + font-size: 0; + line-height: 0; +} + +.clear_fix:after { + content: "\0020"; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.clear_fix { + display: inline-block; +} +* html .clear_fix { + height: 1%; +} +.clear_fix { + display: block; +} + +.header { + padding: 30px 30px 20px 30px; +} + +.header_logo { + float: left; +} + +.search { + float: right; + padding-top: 20px; +} + +.search label { + line-height: 28px; + vertical-align: middle; +} + +.search input { + width: 188px; + margin-right: 10px; + font-size: 12px; + border: 1px solid #dadada; + background: #FFFFFF url(../images/input_bg.gif) repeat-x left top; + padding: 5px 6px; + color: #565656; +} + +.search input[type="search"] { + -webkit-appearance: textfield; +} + +.search button { + -webkit-appearance: button-bevel; + float: none; + padding: 0; + margin: 0; + overflow: visible; + width: auto; + text-decoration: none; + cursor: pointer; + white-space: nowrap; + display: inline-block; + text-align: center; + vertical-align: middle; + border: 0; + background: none; +} + +.search button:-moz-focus-inner { + padding: 0; + border: none; +} + +.search button:hover { + text-decoration: none; +} + +.search button span span, +.search button span span span { + position: static; +} + +.search button span { + position: relative; + text-decoration: none; + display: block; + height: 28px; + float: left; + padding: 0 0 0 8px; + background: transparent url(../images/border_l.png) no-repeat top left; +} + +.search button span span { + padding: 0 8px 0 0; + background: transparent url(../images/border_r.png) right top no-repeat; +} + +.search button span span span { + padding: 0 7px; + font: bold 11px Arial, Helvetica, sans-serif; + color: #6b6b6b; + line-height: 28px; + background: transparent url(../images/btn_bg.png) repeat-x top left; +} + +#content { + width: 970px; + margin: 0 auto; +} diff --git a/web/bundles/framework/images/blue_picto_less.gif b/web/bundles/framework/images/blue_picto_less.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc70f6a66cd468f06725b27bd35fbf2a1f121be7 GIT binary patch literal 197 zcmZ?wbhEHb6k-r!I3mPw{q6UbW6w9<{*bcc;hV3&61F|)KK1hP$De6C9$tO(J%8`x z^qr4-PruCF^SJ-a%bV|h{QvhaZtH{p|Nk=(2NZv@FfstG(g7(4+3CRQv_OT?M|kdw zl@<*%+*nl3AJ^v0@8i0(;J={!hv^c}x{jq7EpTDY^Of5yIWuVe{u@4FhxfJkvMjiu Qv&D_=NPc2PhZBP}02D({KmY&$ literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/blue_picto_more.gif b/web/bundles/framework/images/blue_picto_more.gif new file mode 100644 index 0000000000000000000000000000000000000000..098e388616bf08387e170f294569efa3fabd7d8b GIT binary patch literal 213 zcmZ?wbhEHb6k-r!I3mn&{q6Vr?|-E2c)0QQhn8c{Q+7PO`sVwaufHCD{Mmi#Wx}=x z`FkJtpLve^YX(Xwd!)Vlq3luGa$EH1=Dff- k*{|A?#)-y}Z?pVFiw`FHF$7EyT^s1Mu31G+Ns+-C0Ksxq{{R30 literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/border_l.png b/web/bundles/framework/images/border_l.png new file mode 100644 index 0000000000000000000000000000000000000000..3d96564f7109e42d252a6623ef28dd7a315ed242 GIT binary patch literal 366 zcmV-!0g?WRP))l3Ap!ydS}ZIqydZIq=`2u2xP*j6 zn6R+0DNF(eST0_?Ce38k;0cfhZ#*BhSBo z|8Oc`!DT#H0Z1n<-7pgvaOs9Cpv(lK+%PPx_ybh%4;W!gxD>qo{rmS8 z{rmT)Ft?y%kb?bBpFTbD9|ABHxVgDK0W$Wzef#zd%)!VQma3P(e*Ib;$y!OF@i#E2e9+qP|kWj!rW)&mGI07bm)dU@IA%>V!Z M07*qoM6N<$f`V?7VgLXD literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/border_r.png b/web/bundles/framework/images/border_r.png new file mode 100644 index 0000000000000000000000000000000000000000..36653557b01d3b94dc93aaeb30b37527a9e5c772 GIT binary patch literal 389 zcmV;00eb$4P)RCwClQ$0_FKoI2?VzPw=Qt}s| zvCz&^0>93GU}9rTw70O(=8`Kc2$2{{0|EsHgbsYJ~2xm zgisKUgbKg`dQ_;uz_=EQ2!g9` j>-o%jj^j+M_a(pp!*L5Y-B!~D00000NkvXXu0mjf`}L|T literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/btn_bg.png b/web/bundles/framework/images/btn_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f168bfa64edcacd76984c4627f6fd1857b05235b GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{I!3HE3#9loEq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6={3AIEGZ*O4?KN^OMuD`v3p_rvLi?-<~;)NyEFNb$<7; kL&x@(zP_f^z`)F~=uW8M)B`fBfZ7;5UHx3vIVCg!0Qr0{T>t<8 literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/close_quote.gif b/web/bundles/framework/images/close_quote.gif new file mode 100644 index 0000000000000000000000000000000000000000..b97296a5695726b589b910ceb429ec5a5b537359 GIT binary patch literal 284 zcmZ?wbhEHblwlBKI3mDs>(=dOPoJGVbN2P?*PlOse(~bP+qZ8&e*Ad;-1*0kA78$7 z`R?7jH?H5fdiCmq`wvc?JoW9{HwIFG;!hSv1_l8J9grrFoer!s7by2VVVIlYu{yapvAW>KdDo%y|1sa$EVOTxm1J6*MUJ_ xZKi;(9(M?re%-=(dK?1GoaxoUY^)5kSE!pYxz^-q@G-J2)Z}B1c2H!n1^}rAZQB3< literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/exception_detected.gif b/web/bundles/framework/images/exception_detected.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc412874d6f88ff0c5793f1087986984fd08c9de GIT binary patch literal 3996 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 C!j+l; literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/grey_magnifier.png b/web/bundles/framework/images/grey_magnifier.png new file mode 100644 index 0000000000000000000000000000000000000000..3c88b6a4234ef5bb048bcecdc210c603c629339d GIT binary patch literal 737 zcmV<70v`Q|P)gsCw z?(Xh4xV&O-EF1{%v$Hc}p-`|-CXOKadE^5EYyTmDC?Y##GKKABNo`~s zLF(c`qtW1~>;;02jSb|4JwHFws4L4|dU$xyR;yJpOS9ShvMeIucDqsPSgls04i67^ zudlCF^5t+iY`DL_|1z7+aDpH(kH^D-eYOw*djIL-;^K2ImlLBXmCC7Ft?t1k1=OrV zbAs&K+uPHdo134KPSg28(u0uZL?W^N`1ttdAju2Ftl!?=rk4qjs%Q?Fd_K=)G8uKb zTo#2g8jZr%)|L>D$5ow9N4&r=Od}GBJXx*QsZ4-L%BlhHkl28gxh{~|Y<4Xa3hBGu zu2>GdkJj<=@lzlWc##P(sRN|cXSr3Vr388oK=SeO^3nk1iX?iyzH@SN@`IQwQIH~z zr6EEXNki4N+wE*L8s+4vY`5DqkeV=*!G8c{N&(F2bov`SHs96N)ps~Ee+3u-E3-EG Tg%KEt8V(K)*U7P6P*89w$O|ImXkM{m#mdj0 zKZmeDy@3G^95`?RNPPfe0iX*F(B&m0B)%{)F=5vX1q*=~WQYM2ql3pl@Bhaa3m1Ta zbO34yHt=^CB_yl>81nlE)&+#p0YL+ZNCyPHKqwsyl0YQO04*)8*Ffqw%nQFPEiE5k zxpGCOsj2CKp`qbZpx7Tg`o9D5seSwQ@%;Y%n*&s!sC@taJ$A~JDKUo+AC~y^=@S>R zE>TcWcnC6p8{{e=HU(la61)zw=qcmbvu7EMjEp#e9C08P1!7Jj!v+)vZy1Mu#R3pu Y00MAoU}Ljc$p8QV07*qoM6N<$g86-rk^lez literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/input_bg.gif b/web/bundles/framework/images/input_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c0efc1087c3cedd2a95deaef7322d4770170ff3 GIT binary patch literal 63 zcmZ?wbhEHbWMp7vSj52a_3PL7@8AFZ`}fzcU$0)hVt@g~pDbXe4u}M)WngCUU{vO0 Gum%7TE)u5z literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/logo_symfony.gif b/web/bundles/framework/images/logo_symfony.gif new file mode 100644 index 0000000000000000000000000000000000000000..703cf45fc78e6d31d4a9af460252b536b1c9854e GIT binary patch literal 1698 zcmV;T23`3_Nk%w1VYUE10K^&q%gfAUVr4x$Kl1YON=QuQ<>lDe*q4@=v9Pj!eSesj znO9X=ad2|Jy}yf!jHIKbv9Yp#e1F*3*>P`jS5;V~q@}*Tzl({C|Ns9mE;9fB{{R30 z000000000000000A^8LW000^QEC2ui0JZ==06+!*peBxFX^z0-1i_MJ3+p_pEh_&5dM^QH^o`2q?YC;|Y#eo6?SBFL~IkO9*W zUWrg(6a+6t1e9~gkzoUD0u)q?cL8IkHxMNMW_YDz4U&xn4G;-%fMrJwrreB*aD?3_ z1wa){Fo|t|jsdNTB$!ozNI7K6ROJ$p6pPVgF9`4wMB>|mt0D|wjG70m21m-KH6S4q zhKOfKG;JyM!j7010!F!0IkQPpts|OdaKxZQty_Z;XW06P@mIDOfgM&{!i#`0fD`e3 zQEdyS&0Nj2C9?Kr8lnz-R4p>0a~KE_K`S#&yS5Dk42ZH}fWWNn-@r{EpxZBi&EUv6 z8aN0#2?2n~qoYCA9N}^4*n51eZlv`Vo}$7KN0+^P4l3M z2>3zos9Q+@lo%19fEJ&v_eMl=Ver}i6~3L26fm|Wb=^(lB>@IXO1OprcmzanA$V+L zb^~<*z@))9>6GxyTD2hYPk$N-mINXQ^p_PtcqCwBVHzYQp9trqhK*03$jI3zp=`EL z4gk;<4l+DyFhEu)P)UL+z8NDzFH^jr%?TK>h?fa6iXfN(BusNv6&G%ik!z~7xy6*t zIl-j}Y9eFPWF!!y%L|M_g5H-VU{nL2eF8edifzfKN)iT20F<12yZv3FsjK z;Rr5efTm$DL^*<=i7qz6og;{q#A5}anraE7fn!1!py{+pbtXdbOp509;L?wY*qD(5 z06@@Q5uSu`O>_G}VTmEZ{vb*JgE&xUL1w2rpe-Fev@4h-90G~<(Y|8JzQl6785e#5UFuM(io2~!?FPxpW2UiiX#KE~* z@e34008|A3Hij{FaHUIu9SUF;&k<9N3>-uiQxHZ4U%WA%01CV85UvN?MKf#F{QQ#6 zwS{a20W27sMHohcl(Pv9{JSJU??&s;yP0%mi5&wxi^V4(W-tK+3tD074XPv%P67Jn zgWlPu)oR5^7&M*1$rz+WHy1@*`e+rU;lOHbgVTm}65KMKgaFOHA#`1H_0h5o&rIGb zE)5zmMj3GkP)KY67-azeT>((?w-JLB@U8#{nAQ0qC1>EkRbD)Is|#A0lK2~y79sN} zNG@y24sdXt_r~;iTHpx_=E*BaSP{$|$EWviZgdX{vBSluA zfC7ZqxHo|4cW)@0O6rG$hWUwSS3w4Z5G8{2&1zKz6h<&!@COo>P*Ep(L223&B{pG- z2y^&^Ds~qJqs^mjH~7XN@K6{!CC`PjdZDVeRKRC^iZLxrq7p~2JUof2D@uqT9E_kv z39)c17fSdz2oVk(|*9gP26mT@rLI(4sh?6#MCjsXOoCcz2gl2{9QVN>M zDBh=%)a0N50dPS1QV22^6&KcVi9jlXAybu*3hZqF zu;Jn-Qqr8K6@)kfNWj!GMXb&_vW`!zqp1P`D-sM~lX-ZeEsNm?6HFs{LTHX2-e5P0 zkjo5$5s}2!XM@Adqk=r!%(|SQh-ZjzVV3BW)ka{=J|u_>4l{-2o)9YhVN4aQ+W{Xl zVi%ZY#c|acCDCl7u_MR{1AEbx1k!1WaqiPJ^IWEzLb9vsZ1bQIlEVaoGL-Z@6r#YP s-o}b>F^nP~2bk%~rANzE00$7X3b6#@NZAEF2Ha}_46x5i%M$_sJDrx#NB{r; literal 0 HcmV?d00001 diff --git a/web/bundles/framework/images/open_quote.gif b/web/bundles/framework/images/open_quote.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e116ceadd25fcab384427f1e9076869a3201c82 GIT binary patch literal 281 zcmZ?wbhEHblwlBKI3mDs>(=dOPoJGVbN2P?*PlOse(~bP+qZ8&e*Ad;-1*0kA78$7 z`R?7jH?H5fdiCmq`wvc?JoW9{HwIFG;!hSv1_l8J9grrFoer$i6jb^I3@sQ}u5x>z z<3DHJD*^ihx9-&3S<@Hi&+>qift8t8=!L0J^V|#UbM7sDSr z1<%~X^wgl##FWaylc_d9Md6+I= zhqi>4PnzMOuO)K~*(RkoSoCn7)R^#~T4CSujwM;<0=t>E&QEnQ(&y3G(9U?$#xX^m ckwt=G)hqGzY5M*n+r|-FL<1!X8KKK0Y+4-K|Ip_DgLX_ZFS}O27 zD6VZ4Vy_V55P%DwO+Snf_;2^FO_X=lLt9ZPzz)z@c~ldI{Q@#slCUp96W9qfs%tQ*oXL6(4`+eocJ>~>XTi!Tx6`NE0#k>{2Oo} ztK9}W2EBZ;)|i=(L{i>6UU}sHFa>93DOU?()OGNh>)?K^U==8P)fsB(g!Z`H)Oe2K zAL8V3c}P=UQK;p237iK()-qO$m3q1_)5Uf>)l?g3abZDzzr3uhc^8WX1k|b(vZuwUYd`2nOcXxJ?f6`A^uQ+Js>k0*)1Z4Ms zn^LJ1IeVQ{e)veSS*BUf_2AsdWHfQT>0~mg)MIP0(fZmtg+pPwU~40@=~Q74tpCV* z?ho@%#bU9aI76NxIeHwFNF*?aMWwIcY>?`WCUqU3p`BrU7P-H#KQlGy-*EQ!{qC?| zBHyTwqR}XwX|T}E>o*E#8G_CNzUOjq9hiOEpwp*$E~o3w^mcAenG2uk(7mCIUZ>~% zB=me1mhaCn;Cq#;BX2o}t+|y3?+$Lc6{R^^&pjZF^ literal 0 HcmV?d00001 diff --git a/web/bundles/sensiodistribution/webconfigurator/images/logo-big.gif b/web/bundles/sensiodistribution/webconfigurator/images/logo-big.gif new file mode 100644 index 0000000000000000000000000000000000000000..721f12ab02990589a95fff62345c84113fdd724a GIT binary patch literal 4060 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 O01+?)X4L~B0028L!THSq literal 0 HcmV?d00001 diff --git a/web/bundles/sensiodistribution/webconfigurator/images/logo-small.gif b/web/bundles/sensiodistribution/webconfigurator/images/logo-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..703cf45fc78e6d31d4a9af460252b536b1c9854e GIT binary patch literal 1698 zcmV;T23`3_Nk%w1VYUE10K^&q%gfAUVr4x$Kl1YON=QuQ<>lDe*q4@=v9Pj!eSesj znO9X=ad2|Jy}yf!jHIKbv9Yp#e1F*3*>P`jS5;V~q@}*Tzl({C|Ns9mE;9fB{{R30 z000000000000000A^8LW000^QEC2ui0JZ==06+!*peBxFX^z0-1i_MJ3+p_pEh_&5dM^QH^o`2q?YC;|Y#eo6?SBFL~IkO9*W zUWrg(6a+6t1e9~gkzoUD0u)q?cL8IkHxMNMW_YDz4U&xn4G;-%fMrJwrreB*aD?3_ z1wa){Fo|t|jsdNTB$!ozNI7K6ROJ$p6pPVgF9`4wMB>|mt0D|wjG70m21m-KH6S4q zhKOfKG;JyM!j7010!F!0IkQPpts|OdaKxZQty_Z;XW06P@mIDOfgM&{!i#`0fD`e3 zQEdyS&0Nj2C9?Kr8lnz-R4p>0a~KE_K`S#&yS5Dk42ZH}fWWNn-@r{EpxZBi&EUv6 z8aN0#2?2n~qoYCA9N}^4*n51eZlv`Vo}$7KN0+^P4l3M z2>3zos9Q+@lo%19fEJ&v_eMl=Ver}i6~3L26fm|Wb=^(lB>@IXO1OprcmzanA$V+L zb^~<*z@))9>6GxyTD2hYPk$N-mINXQ^p_PtcqCwBVHzYQp9trqhK*03$jI3zp=`EL z4gk;<4l+DyFhEu)P)UL+z8NDzFH^jr%?TK>h?fa6iXfN(BusNv6&G%ik!z~7xy6*t zIl-j}Y9eFPWF!!y%L|M_g5H-VU{nL2eF8edifzfKN)iT20F<12yZv3FsjK z;Rr5efTm$DL^*<=i7qz6og;{q#A5}anraE7fn!1!py{+pbtXdbOp509;L?wY*qD(5 z06@@Q5uSu`O>_G}VTmEZ{vb*JgE&xUL1w2rpe-Fev@4h-90G~<(Y|8JzQl6785e#5UFuM(io2~!?FPxpW2UiiX#KE~* z@e34008|A3Hij{FaHUIu9SUF;&k<9N3>-uiQxHZ4U%WA%01CV85UvN?MKf#F{QQ#6 zwS{a20W27sMHohcl(Pv9{JSJU??&s;yP0%mi5&wxi^V4(W-tK+3tD074XPv%P67Jn zgWlPu)oR5^7&M*1$rz+WHy1@*`e+rU;lOHbgVTm}65KMKgaFOHA#`1H_0h5o&rIGb zE)5zmMj3GkP)KY67-azeT>((?w-JLB@U8#{nAQ0qC1>EkRbD)Is|#A0lK2~y79sN} zNG@y24sdXt_r~;iTHpx_=E*BaSP{$|$EWviZgdX{vBSluA zfC7ZqxHo|4cW)@0O6rG$hWUwSS3w4Z5G8{2&1zKz6h<&!@COo>P*Ep(L223&B{pG- z2y^&^Ds~qJqs^mjH~7XN@K6{!CC`PjdZDVeRKRC^iZLxrq7p~2JUof2D@uqT9E_kv z39)c17fSdz2oVk(|*9gP26mT@rLI(4sh?6#MCjsXOoCcz2gl2{9QVN>M zDBh=%)a0N50dPS1QV22^6&KcVi9jlXAybu*3hZqF zu;Jn-Qqr8K6@)kfNWj!GMXb&_vW`!zqp1P`D-sM~lX-ZeEsNm?6HFs{LTHX2-e5P0 zkjo5$5s}2!XM@Adqk=r!%(|SQh-ZjzVV3BW)ka{=J|u_>4l{-2o)9YhVN4aQ+W{Xl zVi%ZY#c|acCDCl7u_MR{1AEbx1k!1WaqiPJ^IWEzLb9vsZ1bQIlEVaoGL-Z@6r#YP s-o}b>F^nP~2bk%~rANzE00$7X3b6#@NZAEF2Ha}_46x5i%M$_sJDrx#NB{r; literal 0 HcmV?d00001 diff --git a/web/bundles/sensiodistribution/webconfigurator/images/notification.gif b/web/bundles/sensiodistribution/webconfigurator/images/notification.gif new file mode 100644 index 0000000000000000000000000000000000000000..017fac8d8c940c37f18bb67713483c38c360b5b4 GIT binary patch literal 206 zcmZ?wbhEHb6lM@-I3mFC>htAm&sXicS+Vwf$f4T}FF##eeJ)_#`LM%xnvUFQdHwn7 z=1Ym2F2%3E5b^*2|5a!GfFuJcK=CIFBLjl~gAPa&$W8`UZv_@cj?Z&6cBwRQux9G8 z2PodpRD7_<;KPplXB}Bib?_zgtn@LQy<9!y))K9?7uH;hJd@OTzulnvMkXtR^R)|2 Sj+sgf4-aGuh%6Fdum%7^qDo`{ literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/css/profiler.css b/web/bundles/webprofiler/css/profiler.css new file mode 100644 index 0000000..834c4f8 --- /dev/null +++ b/web/bundles/webprofiler/css/profiler.css @@ -0,0 +1,442 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;} + +html, body { + background-color: #efefef; +} +body { + font: 1em "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; + text-align: left; +} + +p { + font-size: 14px; + line-height: 20px; + color: #313131; + padding-bottom: 20px +} + +strong { + color: #313131; + font-weight: bold; +} +em { + font-style: italic; +} + +a { + color: #6c6159; +} +a img { + border: none; +} +a:hover { + text-decoration: underline; +} + +button::-moz-focus-inner { + padding: 0; + border: none; +} +button { + overflow: visible; + width: auto; + background-color: transparent; + font-weight: bold; +} + +caption { + margin-bottom: 7px; +} +table, tr, th, td { + border-collapse: collapse; + border: 1px solid #d0dbb3; +} +table { + width: 100%; + margin: 10px 0 30px; +} +table th { + font-weight: bold; + background-color: #f1f7e2; +} +table th, table td { + font-size: 12px; + padding: 8px 10px; +} + +fieldset { + border: none; +} + +abbr { + border-bottom: 1px dotted #000; + cursor: help; +} + +.clear { + clear: both; + height: 0; + font-size: 0; + line-height: 0; +} +.clear_fix:after +{ + content: "\0020"; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +* html .clear_fix +{ + height: 1%; +} +.clear_fix +{ + display: block; +} + +#content { + padding: 0 50px; + margin: 0 auto; + font-family: Arial, Helvetica, sans-serif; + min-width: 970px; +} + +#header { + padding: 30px 30px 20px; +} + +#header h1 { + float: left; +} + +.search { + float: right; +} + +#menu_profiler { + border-right: 1px solid #dfdfdf; +} + +#menu_profiler li { + border-bottom: 1px solid #dfdfdf; + position: relative; + padding-bottom: 0; + display: block; + background-color: #f6f6f6; +} + +#menu_profiler li a { + color: #404040; + display: block; + font-size: 13px; + text-transform: uppercase; + text-decoration: none; + cursor: pointer; +} + +#menu_profiler li a span.label { + display: block; + padding: 20px 20px 16px 65px; + min-height: 24px; + _height: 24px; +} + +#menu_profiler li a span.icon { + display: block; + position: absolute; + left: 0; + top: 12px; + width: 60px; + text-align: center; +} + +#menu_profiler li.selected a, +#menu_profiler li a:hover { + background: #d1d1d1 url(../images/profiler/bg_submenu.gif) repeat-x 0 0; +} + +#navigation div:first-child, +#menu_profiler li:first-child, +#menu_profiler li:first-child a, +#menu_profiler li:first-child a span.label { + -moz-border-radius: 16px 0 0 0; + -webkit-border-radius: 16px 0 0 0; + border-radius: 16px 0 0 0; +} + +#menu_profiler li a span.count { + padding: 0; + position: absolute; + right: 10px; + top: 20px; +} + +#collector_wrapper { + float: left; + width: 100%; +} + +#collector_content { + margin-left: 250px; + padding: 40px 50px; +} + +#navigation { + float: left; + width: 250px; + margin-left: -100%; +} + +#collector_content table td { + background-color: white; +} + +h1 { + font-family: Georgia, "Times New Roman", Times, serif; + color: #404040; +} +h2, h3 { + font-weight: bold; + margin-bottom: 20px; +} + +li { + padding-bottom: 10px; + +} + +#main, #resume { + -moz-border-radius: 16px; + -webkit-border-radius: 16px; + border-radius: 16px; + margin-bottom: 20px; +} + +#menu_profiler span.count span { + display: inline-block; + background-color: #aacd4e; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + padding: 4px; + color: white; + margin-right: 2px; + font-size: 11px; +} + +#resume { + background-color: #f6f6f6; + border: 1px solid #dfdfdf; + padding: 16px 28px; +} + +#resume p { + color: #313131; + font-size: 12px; +} + +#resume .date { + display: block; +} + +table th.value { + width: 450px; + background-color: #dfeeb8; +} + +#content h2 { + font-size: 24px; + color: #313131; + font-weight: bold; +} + +#content #main { + padding: 0; + background-color: #FFF; + border: 1px solid #dfdfdf; +} + +#content #main p { + color: #313131; + font-size: 14px; + padding-bottom: 20px; +} + +.sf-toolbarreset { + border-top: 0; + padding: 0; +} + +.sf-exceptionreset .block_exception_detected .text_exception { + width: 520px; +} + +.sf-exceptionreset .block_exception_detected .illustration_exception { + display: none; +} + +ul.alt { + margin: 10px 0 30px; +} + +ul.alt li { + padding: 5px 7px; + font-size: 13px; +} + +ul.alt li.even { + background: #f1f7e2; +} + +ul.alt li.error { + background-color: #f66; + margin-bottom: 1px; +} + +td.main, td.menu { + text-align: left; + margin: 0; + padding: 0; + border: 0; + vertical-align: top; +} + +.search { + padding-top: 20px; +} + +.search label { + line-height: 28px; + vertical-align: middle; +} + +.search input { + width: 188px; + margin-right: 10px; + font-size: 12px; + border: 1px solid #dadada; + background: #FFF url(../images/profiler/input_bg.gif) repeat-x left top; + padding: 5px 6px; + color: #565656; +} + +.search input[type="search"] { + -webkit-appearance: textfield; +} + +.search button { + -webkit-appearance: button-bevel; + float: none; + padding: 0; + margin: 0; + border: 0; + text-decoration: none; + cursor: pointer; + white-space: nowrap; + display: inline-block; + text-align: center; + vertical-align: middle; + background: none; +} + +.search button:hover { + text-decoration: none; +} + +.search button span span, +.search button span span span { + position: static; +} + +.search button span { + position: relative; + text-decoration: none; + display: block; + height: 28px; + float: left; + padding: 0 0 0 8px; + background: transparent url(../images/profiler/border_l.png) no-repeat top left; +} + +.search button span span { + padding: 0 8px 0 0; + background: transparent url(../images/profiler/border_r.png) right top no-repeat; +} + +.search button span span span { + padding: 0 7px; + font: bold 11px Arial, Helvetica, sans-serif; + color: #6b6b6b; + line-height: 28px; + background: transparent url(../images/profiler/btn_bg.png) repeat-x top left; +} + +#navigation div:first-child { + margin: 0 0 20px; + border-top: 0; +} + +#navigation .search { + padding-top: 15px; + float: none; + background: #f6f6f6; + color: #333; + margin: 20px 0; + border: 1px solid #dfdfdf; + border-left: none; +} + +#navigation .search h3 { + font-family: Arial, Helvetica, sans-serif; + text-transform: uppercase; + margin-left: 10px; + font-size: 13px; +} + +#navigation .search form { + padding: 15px 0; +} + +#navigation .search button { + float: right; + margin-right: 20px; +} + +#navigation .search label { + display: block; + float: left; + width: 50px; +} + +#navigation .search input, +#navigation .search select, +#navigation .search label, +#navigation .search a { + font-size: 12px; +} + +#navigation .search form { + padding-left: 10px; +} + +#navigation .search input { + width: 160px; +} + +#navigation .import label { + float: none; + display: inline; +} + +#navigation .import input { + margin: 5px 0; + width: 210px; +} \ No newline at end of file diff --git a/web/bundles/webprofiler/css/toolbar.css b/web/bundles/webprofiler/css/toolbar.css new file mode 100644 index 0000000..504e3fe --- /dev/null +++ b/web/bundles/webprofiler/css/toolbar.css @@ -0,0 +1,28 @@ +/* +Copyright (c) 2010, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.com/yui/license.html +version: 3.1.2 +build: 56 +*/ +.sf-toolbarreset div,.sf-toolbarreset dl,.sf-toolbarreset dt,.sf-toolbarreset dd,.sf-toolbarreset ul,.sf-toolbarreset ol,.sf-toolbarreset li,.sf-toolbarreset h1,.sf-toolbarreset h2,.sf-toolbarreset h3,.sf-toolbarreset h4,.sf-toolbarreset h5,.sf-toolbarreset h6,.sf-toolbarreset pre,.sf-toolbarreset code,.sf-toolbarreset form,.sf-toolbarreset fieldset,.sf-toolbarreset legend,.sf-toolbarreset input,.sf-toolbarreset textarea,.sf-toolbarreset p,.sf-toolbarreset blockquote,.sf-toolbarreset th,.sf-toolbarreset td{margin:0;padding:0;}.sf-toolbarreset table{border-collapse:collapse;border-spacing:0;}.sf-toolbarreset fieldset,.sf-toolbarreset img{border:0;}.sf-toolbarreset address,.sf-toolbarreset caption,.sf-toolbarreset cite,.sf-toolbarreset code,.sf-toolbarreset dfn,.sf-toolbarreset em,.sf-toolbarreset strong,.sf-toolbarreset th,.sf-toolbarreset var{font-style:normal;font-weight:normal;}.sf-toolbarreset li{list-style:none;}.sf-toolbarreset caption,.sf-toolbarreset th{text-align:left;}.sf-toolbarreset h1,.sf-toolbarreset h2,.sf-toolbarreset h3,.sf-toolbarreset h4,.sf-toolbarreset h5,.sf-toolbarreset h6{font-size:100%;font-weight:normal;}.sf-toolbarreset q:before,.sf-toolbarreset q:after{content:'';}.sf-toolbarreset abbr,.sf-toolbarreset acronym{border:0;font-variant:normal;}.sf-toolbarreset sup{vertical-align:text-top;}.sf-toolbarreset sub{vertical-align:text-bottom;}.sf-toolbarreset input,.sf-toolbarreset textarea,.sf-toolbarreset select{font-family:inherit;font-size:inherit;font-weight:inherit;}.sf-toolbarreset input,.sf-toolbarreset textarea,.sf-toolbarreset select{*font-size:100%;}.sf-toolbarreset legend{color:#000;} + +.sf-toolbarreset { + background: #cbcbcb; + background-image: -moz-linear-gradient(-90deg, #e8e8e8, #cbcbcb); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#e8e8e8), to(#cbcbcb)); + bottom: 0; + left: 0; + z-index: 6000000; + width: 100%; + border-top: 1px solid #bbb; + padding: 5px 0; + margin: 0; + font: 11px Verdana, Arial, sans-serif; + color: #000; +} + +.sf-toolbarreset abbr { + border-bottom: 1px dotted #000000; + cursor: help; +} diff --git a/web/bundles/webprofiler/favicon.ico b/web/bundles/webprofiler/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..864803618e0888f8463c0b30038633c018f939cc GIT binary patch literal 1150 zcmaizUr1AN6vuy3^oL%AsH~?RBQobI=ccaNk~J)QQD?41%~lUl4?1&O#PTUgotA-9 zsDZB9Dx!CTsTlUUw?V5x4YK5>5M*n+r|-FL<1!X8KKK0Y+4-K|Ip_DgLX_ZFS}O27 zD6VZ4Vy_V55P%DwO+Snf_;2^FO_X=lLt9ZPzz)z@c~ldI{Q@#slCUp96W9qfs%tQ*oXL6(4`+eocJ>~>XTi!Tx6`NE0#k>{2Oo} ztK9}W2EBZ;)|i=(L{i>6UU}sHFa>93DOU?()OGNh>)?K^U==8P)fsB(g!Z`H)Oe2K zAL8V3c}P=UQK;p237iK()-qO$m3q1_)5Uf>)l?g3abZDzzr3uhc^8WX1k|b(vZuwUYd`2nOcXxJ?f6`A^uQ+Js>k0*)1Z4Ms zn^LJ1IeVQ{e)veSS*BUf_2AsdWHfQT>0~mg)MIP0(fZmtg+pPwU~40@=~Q74tpCV* z?ho@%#bU9aI76NxIeHwFNF*?aMWwIcY>?`WCUqU3p`BrU7P-H#KQlGy-*EQ!{qC?| zBHyTwqR}XwX|T}E>o*E#8G_CNzUOjq9hiOEpwp*$E~o3w^mcAenG2uk(7mCIUZ>~% zB=me1mhaCn;Cq#;BX2o}t+|y3?+$Lc6{R^^&pjZF^ literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/close.png b/web/bundles/webprofiler/images/close.png new file mode 100644 index 0000000000000000000000000000000000000000..f28db617ee646d5efcc074ea97a628de01c8be03 GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^{2c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=$vx}vvsgb#frG=}Zp{s#~xw(;}siB#Lg@Lm% zFaltDUGkGlb5rw5V0u#!dM$A31to>t0-((%j>EOoi9AIs$~u?HV402|fxFi9g(%zhH+jOZdLVh)3Hrwy1bJ zbErH}3!47(zWs77)bTrm@#kFs-{GVoY)EapZgD9G2v}VbP0l+XkKkI1>` literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/config.png b/web/bundles/webprofiler/images/config.png new file mode 100644 index 0000000000000000000000000000000000000000..6907b485cca3e69502dc8fe3cf66f91fde3e4bdb GIT binary patch literal 497 zcmVFIeGgh6aHH9Q_39w$MVSUDCbE&cubcN-WRh;Jfkl=<=FhZ&3w#5V}Z!3^b&ii$c2 zW23o71P2=gxPbZ&!PqcCMxd9EfBW{$0!1Yk*NJW0wz&eCUx3&F2=;@-4;(n)2%^6Q8v}m(t3?92o?K{N8fLJ`WS(QbS;o!bLrA0 zaNz6d={*HfM}YVhFwxJzW+E^XWB@5K9Qsy)lGG|7zM7Ypw-&0Q4#Wpy6+A9|0?k?2 z^gUsM79J0gG(3cgeZb?z4|w!_g(ZGoBuNm;~dF9XtL2>19CNEiEnm7iusmhJS$? zyc>wOf(%4Xh#*@#+}+)elkH_Rz8@3|IygAICpS{=V-Z&%)u00h4!{j`1L8O!zKkR< zK&pX2AHfa00mQCA91X<&Kzy8{WCO&^KpYFjphzhO;_pB&OaRgbB${^tSEMMUq@)z^ z@bHji+Lte199W={qKGCZc<0U?k|PBaj-!z>NFzm+nvuc+ELlKB)?yIexpODTyA_l~ z3L}nc6cicpdu&dC%7aWKIPrCnGE17XN6 z`T+(Z2!#aEKTtPy(~U$TQATJ4@$`LO&XGfV-=UogyYPh%&pGdNeE0SByuK=kNE{_` z9N@nSaKPgtY)F^IKOBb+P_0(?dA;8IsKkbcheLYLiE)6Hm6d&&Oy)f*u}~-!(R)se z15_#%3yu?|QfU`sV%^={3#wO-ae(FJWlKXt!!1-&#>U20Rj(f70OfMo5)1|(p^}nH zrCzFDJ;ni+mX<7ogM*(@Nf{j-{h)gF7zbEfT;y^Fl^FKHPp&gFGh5t~{VQtxH{$^K zK+)9Hlt<+cr$V8y&UIp9VuyRIrKRN=mIl;ZXB=RDeqQwU_P#}>+1c5hp`oF>JeI6} zE|>e}@p#^;xz0Gi+}xa)oSfW4rF=gBytA{@%VUX`oZ@k@Sp1E#i_htd1K_xdi<1grWBS}cs9FOMpj*gBOYK|x6JHF(+w$402e}Dhx z)YKIJ;@L(O60z3S*4y!T{HvO?#>U1qZ5>}Cti8a(^#YufZ@8O~;RgVoWV6{{w6uIMmKRw_prlB zItRSt1-|PoK8L&WMeC1fV@Hkw@TNNr?T~^8@CrTwNkWOmVw>7|{@MSKy>K`zB9X|N-8yMnTRVN|0Lf&sMj#MaMJ3G*yLHU?DM%y|HSqYAQAs157ze;+ ztl{(d5~#!m1_rk6)+ojS!r^cYJpXr4iS_jKRPEL%#sToRpPhCf>6*hD%Yg$N|6_6- b;3)h7pSq^?OWQ~*00000NkvXXu0mjff|G7C literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/exception.png b/web/bundles/webprofiler/images/exception.png new file mode 100644 index 0000000000000000000000000000000000000000..08d5bcbb2020962678c4901e9e087f70611233c5 GIT binary patch literal 931 zcmV;U16=%xP)V%sQNrcL1`&u($YM7RU#4KbA-bk+zRZ^?IwvZET6y7A5E@|&48gaH z2&^!oD-kNlCNqlY!dEf`O>~(sL4ErELor))bH1$p4Z@AvJB?Im#GgvcHM! zQouhc!0)nvSzwk0f0=oYMH~!E!1(yMV`^%ORaI53!+i=O;L8F*IjW&r>Y-lA0wyLV zqJSN+;o)JgTrPitwJZ>nqZ+E^JyDVcjE#*6r~n%n7}!Tx4Ya_-p|zTFRKsge`y>k( z9UT>O6R_muc{iEnsM9=n7y&M@Pq2K|#R`PWVxIdHIi+ zn3xY485wi!?d`6fo}SMHttm!1s-eEDtgL5^jg4!<9GV%@Ef^debOVMT_-V0NmhE=? zG5G|3a6dmke=RdJbBUle#e_UjUthn{-QB&-eRo)gu&=N0E_l(}+PVwNLIFL$V5ezD zIEPRHt^*~wf!pBi?d@fufSo%=?=_&}vlKxKh>eY%kB^UEh>MGJsZ^@juCA^VY$qeE zR_lt%WO_qZh@FR0seGtVC|op)W(F;wv$K;4w6wJRuBfP368yr#!o{MZqE}?ab^hQM z92$*Aw>TEGfVQ@_4Zt{WD=RB~KE!ykv$MaG71f-fxw&~4c2X4E2={wHgDu~&*=)?8 zhK2?Yge+i3X2_B+o&0iD|i+#e{?$CyPTYyX#w(u9K^Wvdi@^Fpjk9C zXaP_kSyNMU1WR8+o3Qt)tE;!j7lUoyNJ~qb!&C1iS@J2)Yps}ZNIu>TC$RF6ZUKfk zffwij`RRa(!MA`H2Xb4Z(X5jtpXbtfkAeGpVZV-XxP0JNOv18@;5EJ;$=?Hbxrm7X z^MIYhJg@QfNET39S{jH4USL2GO4=c%cw6Kwj7aLgLlsFB)`p*PCN z$T( zv9Ylelg113L4<_kr$!Au^qyax6Q|R8vbeY?40u64h)}hKg@q&JEI`|x^78U`hP43l zW3Cxd!8NJT_4Klb-l(js?48@~7G!>YK7jmK88OyS^COP~3+E&@HZ~h4=2yPCxjC0w zGhz&>(e?DQhu&ynV!}T=J1fZa^t8)pLXBj}d`?M8i9>l@F4r-##jGKwUKXjJn(=)BUzTP`BG9pNIb@i^PO{kZf+jo2Aspg!-C*gKbqf9)Gt8|waVAn*f|-IsF}4+{$meabU1FmQ|< z!3{*UGoHd(YHI3RnrKE%BdQVCs8M=&pQyV|NJ!Yn!}(pUp|)$Y*$zuf zOTVa^^c*2yylri5Z5I6a93cxuadGjNq@<)nHX$6dX4Js*o?hIwGbbm&XBB literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/logger.png b/web/bundles/webprofiler/images/logger.png new file mode 100644 index 0000000000000000000000000000000000000000..a56e5824d6eb4f16697ec4aa6268e8909a9a01ed GIT binary patch literal 378 zcmV-=0fqjFP)g%KEt8V(K)*U7P6P*89w$O|ImXkM{m#mdj0 zKZmeDy@3G^95`?RNPPfe0iX*F(B&m0B)%{)F=5vX1q*=~WQYM2ql3pl@Bhaa3m1Ta zbO34yHt=^CB_yl>81nlE)&+#p0YL+ZNCyPHKqwsyl0YQO04*)8*Ffqw%nQFPEiE5k zxpGCOsj2CKp`qbZpx7Tg`o9D5seSwQ@%;Y%n*&s!sC@taJ$A~JDKUo+AC~y^=@S>R zE>TcWcnC6p8{{e=HU(la61)zw=qcmbvu7EMjEp#e9C08P1!7Jj!v+)vZy1Mu#R3pu Y00MAoU}Ljc$p8QV07*qoM6N<$g86-rk^lez literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/mail.png b/web/bundles/webprofiler/images/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..4e535e7cbfcba866591fbbd978638bc172bfcc16 GIT binary patch literal 1536 zcmaJ>eM}Q)7%$ZEVMT>Hv54b5%mk6%2b9tqwe4CI2**fiwkjs;(O%)y_PXl{MW+-@ zX4;`+$%x_<$M^%5_?66$5yi^Jl8PVTaG9G%ivps~A>dbCU3W#n{h_<$?tPy(zvuV- zo{#rj#YL-PW+u$!@pv)$c^WOZ#&d6CR0Q{R-(O@^TSYJ=Pi3OZNFd)r zl#^PLFjaqYmdxSt_#mazvwFM`Gtw3@5yFTa78~cyo7+&**+ zfxsk$T`vb;h|=T5fSP7VKq7|Ijc^tWWFcZCBU37sE(cH;fgu=$5HuZ;Vi_m~!@$c2 zMX-Cz1qqWj&!R%d5S?p z+KmilV=3ASgcyl3dLt_bIi)XBu-K+)t@f8?;tB>i2pfcm;ZRCbKpg*nsKqjkwzFFD zmEPA9+jZ4864H`(dLv`x8fQ)pg|cC4h9p>;(b4pVsVWv%&@64QplyJep*|;cI%c z7W9o;AWjSvYV3a+J$1xQPiQ+mwwy6N_@tGac7_}4rr3P|j~C8WK&5m1Q5FaW75sxd zAwQ<8eLx@9+Sw`3jY!P48Jufp7rOVVRI2{#ott+l-{y-%!DxY?cg^=^e6e?^Oet9V z-O!qERu|U%6By$+3DCXAJf4~zEiD7mbqi*r<>P~A)0~A_4Fd{+K)`pq-Iad7zq75| z06~Z60QT{T34ZOhB;Y6ibx#enzp-&>(C0g%fS}RXw6rwpPLs>ESR#3p+V`Lnusg@v zqR@EL4|DUnZujo@_nbSoMX%RiJaP2s+WGV51yf+-x_$@ zRlDRu-Io`+J63bf>%F!&lZwl`Rmtf&5PPt-bwV)Gz!$`e17jnXTH_NE5_+S}-}-#M z$TOFPHN)pcOAXy4VaXL4aMG#V4{r?)KI~{|Axd$4$B%dV+ZNUCOsU_w^Ymxd`2uv6 zRy*E%@3+IEB*oSPvu-N3Jkza6O?90(d2+Mh$nL(4WB+vtRr=R8Uax@p1abA@}mfclwtuHfUq8%0I6xGOW82RsTTP z(b4e^yp8Y${1XLdyw9TxWZvIzgnc!GI}dIKMvnRtB7McyU!`^UV z;Mt?JWG`BPUh>og7pNlm6VWN6VC3!Mg$uuqyu7SbDeCL*pNL4=URU?lylRzlgP{AA z4h}AA-yL}q_kr==hVaHR<@qA2C5l1jdU!W?)wklG50KePXBh9=>Tsu5`QDSzKRG|Q KNOS0YL*2jUq)KA| literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/memory.png b/web/bundles/webprofiler/images/memory.png new file mode 100644 index 0000000000000000000000000000000000000000..54f2d80d56c1f1de5bdcf247d9eda17d452495e8 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp@KrF+-1|)YSnmPd~$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G6FglULn>}1{rUgjo_S?MXCse+jOj)T3yX&4_Xir8o1UMW z`@6w=;lzm(83Nu`m&_L7h*;2Ywvvg(gp$fV(lF;n*jCWYJcI@T~UE%2!lSi(7Fr%J<&W)5Hb jh99htAL!{YGVw5IOi^!{c~y`J=r#sVS3j3^P6=UckbMI^5n_GhYz1Vefs9jo0l(NK701;@#DvrFJHcQ@80d(w_m(?ap}^fn>TM> zyLRo$l`F4bzh-~|#h)x-rVfY%+3CQlt03UvHC0ri+_YIWM?gIG{F9I~O&QXu42FIQ Z()l3Ap!ydS}ZIqydZIq=`2u2xP*j6 zn6R+0DNF(eST0_?Ce38k;0cfhZ#*BhSBo z|8Oc`!DT#H0Z1n<-7pgvaOs9Cpv(lK+%PPx_ybh%4;W!gxD>qo{rmS8 z{rmT)Ft?y%kb?bBpFTbD9|ABHxVgDK0W$Wzef#zd%)!VQma3P(e*Ib;$y!OF@i#E2e9+qP|kWj!rW)&mGI07bm)dU@IA%>V!Z M07*qoM6N<$f`V?7VgLXD literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/profiler/border_r.png b/web/bundles/webprofiler/images/profiler/border_r.png new file mode 100644 index 0000000000000000000000000000000000000000..36653557b01d3b94dc93aaeb30b37527a9e5c772 GIT binary patch literal 389 zcmV;00eb$4P)RCwClQ$0_FKoI2?VzPw=Qt}s| zvCz&^0>93GU}9rTw70O(=8`Kc2$2{{0|EsHgbsYJ~2xm zgisKUgbKg`dQ_;uz_=EQ2!g9` j>-o%jj^j+M_a(pp!*L5Y-B!~D00000NkvXXu0mjf`}L|T literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/profiler/btn_bg.png b/web/bundles/webprofiler/images/profiler/btn_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f168bfa64edcacd76984c4627f6fd1857b05235b GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{I!3HE3#9loEq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6={3AIEGZ*O4?KN^OMuD`v3p_rvLi?-<~;)NyEFNb$<7; kL&x@(zP_f^z`)F~=uW8M)B`fBfZ7;5UHx3vIVCg!0Qr0{T>t<8 literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/profiler/config.png b/web/bundles/webprofiler/images/profiler/config.png new file mode 100644 index 0000000000000000000000000000000000000000..6907b485cca3e69502dc8fe3cf66f91fde3e4bdb GIT binary patch literal 497 zcmVFIeGgh6aHH9Q_39w$MVSUDCbE&cubcN-WRh;Jfkl=<=FhZ&3w#5V}Z!3^b&ii$c2 zW23o71P2=gxPbZ&!PqcCMxd9EfBW{$0!1Yk*NJW0wz&eCUx3&F2=;@-4;(n)2%^6Q8v}m(t3?92o?K{N8fLJ`WS(QbS;o!bLrA0 zaNz6d={*HfM}YVhFwxJzW+E^XWB@5K9Qsy)lGG|7zM7Ypw-&0Q4#Wpy6+A9|0?k?2 z^gUsM79J0gG(3cgeZb?z4|w!_g(ZGoBuNqONT@{D7uA8 z1|?b)1zmJ8lW{8|;vm7L;3P^{M;%<+$^XEQNf0cBpa=n>gS21~gg_vLlF^C~NEgxb zBrP=uY0?MSrm&!Qm@xLLKVX>bmS%k+djHsU0u6JOW+oQ6}safxQx8WQYgqrCiRh` zDD+ouf!T;U4?#W}qrC((*=%+XM^hvf97l2@WX+Iin*TofBR)#_d_*fMP#@tsjqBl5 zD)q{7T%>K+YPFm&AC-~UKssVUPhmcqQdRYU=lMt~uIrL8AB{8`jo|00000NkvXXu0mjfMlR&) literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/profiler/events.png b/web/bundles/webprofiler/images/profiler/events.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c4c8a441c4e3d5559f0878be98c633a101c303 GIT binary patch literal 1743 zcmV;=1~B=FP)t7*nw`20b!FvCH$c#I1GuJv3QVaOe6#}M$ttR8D7(9P?W=nga~9H5j##n z4iPy9LOE(nTWI%t$oDnh2rbU}C2zj(eV^-npZ7U_AFr>k&y4$cd3o{D)6>02M@OTS zO64j?N5|@G*REB(eED+DY>5Z_g5>1nO_P(8kv29qono=Ls-U2t7yNoIAD?TWyu92Y zK0ZFHy}kVujC|qg>B(Qee!UgQmS)BuOX4A3k|9~rLAppM%OqfpoH%j9&fVR8aL=AS?IMxL?(pHmYZVHGX5YSj2cn{)w= zNJvOO80ruRZwd{JPZC z)K(sz1smhzm?2j4$8E&v=%7q#2`avIXOA2 z5h#)Lja^rtJ9n;&p>={+h)DCPsi|>;`(EI&fzH{On3yLpHcCohn9$oYAW#Lqf*?e8!-jc~g$f zkdnQ7_hvRXH|H!Ba{m7QKc7B*`V_-&k1>y-VO*`n(9sYe;xr~gmmM+F z(rk?A;^NYZ*Z7Apq$w#WS<6mrZEej^ZVbdbckX<~MA`o{gi?-5rSJT(MLwd}l)twm`c`n4O)qVb@Sz8d3He49C@IEU#X@nz&4bU-m?fU0q%A zhB%i<)WN~Qw~?g9*u-0Q9XxTw`(B2~6?JuWKCfTD_Gi~nBo%VGylZ4+q{rOc+z@G) z`;?WHeF_==`<%!M!ijTpa{_h&;6sgSorm!oit1Z*--UJb9^S);4^vI$lPN<^aLM=V zWX+m2vk3_ay+Av@P%K9MlWo|rVVb3*CvBo=|4)X<1%Oz=V`F0;hOAYo=FzeP(A;Vh z6BAotC=wW9n59ooPm54ozajXwlum(>4cIm`G^B7BQ04Wxxw+SUe0*e~p`qq*V+dMy zESIOHrG=vJ4^De9eImF=0#`&WssK}XHDQ!vR3b3?ki7o_mB0r<$f=K)$|=E8xs#ut z|1G+s11GF?KsN4Z)A=h`t~`Uh@e=j4?1)~#ECi*su6i3p=@1L|Zk zgc(jC1guR*2Nk2v$%~4LWPrV`0RaKixJR!eM~?i`*4AbV$Y#i?+S=M}ly;`>$f>ut zH-@{=(b2KO)z$TFMn=Y8KsR+*YDQoPPM$m&0ATnzu%KU4Q5Sz52%cDw z0~EGKsp{UmdGj+wux{~*tbr)E(a~u_D z(?;VDBphII!G~~X5?7u?6!92hkLBfm4uPhen-`!j}bEymyYq?U0VwXcu@ lhm%tqk-(p@IrWbK0{{e{MU&$5kG=o^002ovPDHLkV1n|7P#FLK literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/profiler/exception.png b/web/bundles/webprofiler/images/profiler/exception.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf54727b5e3050d0c535cd4b1e8893fd326fb9c GIT binary patch literal 2000 zcmV;>2QT=EP)*D7Gnr%3%N%6)lEC14Trx0xE}M zMeZxG-0W_@A^(ysb%7$be=>Rdzc+9Gd2@U-Z`m(jzGTh!$ch}3=Iu=3=a>l z9T^!hmt9v?RjpG|Q7OlG&(+oSnv;{0aK7JS&qvX+vNC>3N=jHyPfzf~#DwNt_Hen} zzQv0d|Lp7Q8@^`En*R5ysF|6W!m(q=KCY{)`vq3Cn2%-D)YM+s*w_S~KY#vFQ&W>@ zuKPIuM#-?SFvpsjnj7;~k{;SyQBjdivPkA!_i^W_Bs)1d*{Zm>ICFe_oUf;+H-7l= z;nwx**SCp8A~xoYVq;?sdV71>vio#&bR^(wS+{Oo3%!??mKsDyM+?BmFDWTWzjEb@ zy}!SIJuE9(5Z6Od-v0gjlV81hwPVSWC1d#5eQj;+`&epZykh<4%^QzHhYmRn3=FUt zB}L%N6$k|P@Y=wLvg+vQa0w0$-rnEeuV89wdh61qOMXyP_|C3}lANTZqz$iMzxJf} zy?ggoK**Z%~$YKZS|FJHbKQ&d!>D&=Ej6BfS)@nDSY z5{ZPv9F__QpA5qRo^3*A-h!!jdU<&ba5x+Z6N~MnJV+fCXUYX>X=!d443RuP;xK$7 z`b~0kb8}s#e0T2L@xUO!VWLqK^q?rOrKKh6@#DuIW@cvYkbx^wdQoU-sB>as;<6Ph zR!m|m^k6YDKdCgQudnYEm_1<)AW*WarKRP7zP|pjrl#hwpP%31#>PegAZZHk@Sy*2$PZYZJZQxL;ub6`Pd;OM8)IUJM}A!xgC_3G6u zlwxg~NA>C=ONNAmxJE=oShE2saq81(R_aND3E>-gFv3ls90c6(?+)r67m_J2T=j zP(h4Ni!(Sl_}2C7*ROw&o}TX5+1dFey(1@BNU9qs(G;h&>CsdPB@Dyh6c`woi7?>J z#SE~z5V%(igm9L|^xK}(r%&et*ll4Uow>-hwzlrQc=2Koe*QsvgL-5wF$vliE?l?_ z{2L(i&-TDgy(p*gD3wX_cu)kgA@2tmWN0>dN=ix+cX#(bKxQI?;VPXhOQc zw-i$wnWekP=5}0F4C3PA@=y|&&5-rqVR!;+WBLIahvX_cElJ4Qgm+t^z|EOl2JCHy zMScbFKLN&;#>B+5;U-`X<-EJPy1oL43ub|*T^MpfBl5a_xs5Y6OkfZ~;epv=3yK&u zH#dh#-*K>i3r_?1-r#~EEG@z<;3m5IYgSfP4REm~dQ@E$5|*?vK5*c`i-3TDI0AX}#e?s3T?RZUVIUy? zWNd8A5xuJkI+`&H3k$j`=MfCjfkE4;{A1k`d=eWQn^NE^bzjBQ!Goyb*@|^*taH%M zk{1e?TWllXX?!8>^#uHMw=tvg4I+%~V7jhOk^|DC++s!vQ(@>ZeGFdfQXyli9h=$L i#9RPJXVc*?0R{leZJ{SN+;?990000gsCw z?(Xh4xV&O-EF1{%v$Hc}p-`|-CXOKadE^5EYyTmDC?Y##GKKABNo`~s zLF(c`qtW1~>;;02jSb|4JwHFws4L4|dU$xyR;yJpOS9ShvMeIucDqsPSgls04i67^ zudlCF^5t+iY`DL_|1z7+aDpH(kH^D-eYOw*djIL-;^K2ImlLBXmCC7Ft?t1k1=OrV zbAs&K+uPHdo134KPSg28(u0uZL?W^N`1ttdAju2Ftl!?=rk4qjs%Q?Fd_K=)G8uKb zTo#2g8jZr%)|L>D$5ow9N4&r=Od}GBJXx*QsZ4-L%BlhHkl28gxh{~|Y<4Xa3hBGu zu2>GdkJj<=@lzlWc##P(sRN|cXSr3Vr388oK=SeO^3nk1iX?iyzH@SN@`IQwQIH~z zr6EEXNki4N+wE*L8s+4vY`5DqkeV=*!G8c{N&(F2bov`SHs96N)ps~Ee+3u-E3-EG Tu4^P)lfA#8B<-dRb*cqq* zSXo)08WC>kh^XARF1+?%V zqrJWTe+C)?2?>dbD^{$iV4{WL6%`c^Y;A3yf!H5Dd`JXRVl=VH!^2}|b93_^D3=pt z5ep$r2M!##0CE_Tkbr}Og8>0;AWK+*I1ZE!fS8?y2nQ|%;tNQ811QD^-k|XriLvMc zFx4D@aTF93$O=v-20DRJi$*P?zeNP|5wH~4KN@so1sz(U$_T8?MEv~xw5e_pTA|AP z{rh(-Al*a@i{OPSus~(`^5qNvX!0H{f`|gl%*_9Q)PI^=1Z)A_22wvT5(BUa`|tPf z-%M<5Z2y-pUw&O!SQyl>_(!HaA3=E>h+l$o1Byk_(b4A@ELdRt>(?*F?Cflj($dli z#>U2Xuz8;d0P@KTP%CKW%$cDm&7lAP{})W3KD~71%9T>kM*1fK0fF7X_V^!iyu=6u zzz&1l*RNlVfFZ@k%gg(7^XARYpnS9^Gc%J*M@J`Y%a$z)SFT*)eEs@$Fg4;!NJ!`} zu(xs&$ovNK5eGCp&4Abt)Gmj%F8@)GlG&m7H4yIu;#~j%1^~$$sGs?^*)sqD002ov JPDHLkV1j91`q%&f literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/profiler/logo_symfony_profiler.gif b/web/bundles/webprofiler/images/profiler/logo_symfony_profiler.gif new file mode 100644 index 0000000000000000000000000000000000000000..61d5f94d07c5b98abe28946293d7dbc7c6a33265 GIT binary patch literal 2589 zcmb8q`#+P51Hkd;*@YR)GrKerwuUYvq!N-bm)t^Hbj4Ykj5Cfjmuj2UP==CQE_0bA zVv?gJjieQFsSp(_$w7x4_3CSEP>(S;rsWMYPCA_ zNSLF&)4O-?dU|@URo7%mvU#TxRVvlU$cU%A*UZdJL4ILSAd?dneXFT?X=&;G`}aE? zc6oXF%+JqvbaaSP&-L{5UM(uVckftr2CVNJfCT!(wXL@zL;CO?^{#+8pan6ijw<}@1t5+ z=;0&v1p)#`i+3?ol9hef;Pf72v4uVdZ(>oLU&tni*XPnu2jF}5C1`-4www0NM)&Kq z8y+`7je|(VF$@gmiUR;6jC2MLH!^N7o`OSbJuA6i}x<|`Q`^|NW4!MWH-ReZ4qruBVR@H1ysNW zyGftz4?iU4+p{79{ClX|D*iNZ-U860pJlVh@Gg5J_SpZVz5mfT9lcX?V6BL^cI)qX zF!(d7XRC=xP8NB!4fRq9@(tNo-zUfoF$bS>(Sdk+Mt$GNEiT~^Sb-{Lz1u+0UM%sD zG*gQf`G)|>;7R*5a8N-X+8p|H*$=MZ7HbnZjVqlR1JE_!bCxK(VtR}cr*ewq2~{}! z6mEpmmY!3Rwn#UW$+7HbHnJf*YxwBY5#qMX7iRDu`5{u3(%gW7n zNBv#FkT`jfZn`}F7Ix33#u!a&!fbf9X-pWSztd#UcEY85Mfxh6z0i^ zp^ga~2q{*L4Y~e_ZgudfX&Cc?UTo0WT}^b-9h!(}9%E^!{Diwfp--rGDzXoIGWdiU z$oAx20StF$bUIC=)>eYtRnG!jdir9Ez(8Z- zH}le91k}hhmd(3>)T^A*EcU>74ur?V&Ifs{Pyd8Nkg(Sv`{A8kXO__(5~0>jr3rQ; zCZ@Km;Q;J?)Id96<^ z1TSXn_iS45&lLt@MeZY-@?h!j7206c<&#XG(dxI3>37Q~gzdXUyy#|aSbRzUSH@j& zN@;Don_*A)J=a&ma;$cGebTH;-ACb!t7=5!k`H=!GBzn<>t(wKnlhOBzVTr6;HF?) zAv4_UeY!WwOm%cHblQ=E4`n3;_&KsnWo76Bvp4 zUbW5pG>*20A5=*53D3jqbi>Ka6YD$7QDoRP7T?~sQ;HF{Zdf4qVAfD8^t{ilWknxP z_g|ib*+Pv@I?iyy#R{VLN&YX}4Di)>1<7|W&}fLoK-p^2NKFAsw3voKty}Yfq-9vT z5~~|mRcSOg+3w&(M;P;;YL=e7w$ngQ*JDQ|%2CZ{q*0)g0r2muc0aZ{G%canF|^RJ z>7nHU;6z>3dikQ#LBYN(jze#xZ+pU&yMkyEJx!#PM2>b`_*ugbiCujcPC>MhOKAK>js9*HJdcxXVi>1Wr`Ij5dc32TbQuxx_)NeOUN)ha1U`R@r zynBa-tloq%3p~63#DAAlV>R-=&jZRqldH*S3TAZN(DS=;Ahdtfy$jCVd9B%u5QttPyh z;H{LL)3U4BFYgHTtIV%Y#&x7Jm4cJ4&PZJsP1b3q>p2_CBHQaU_^vLUA|49RIpG|n zLqs(>g<0mOO%1nBZXJM@g)OetykOJPiRRl0UpG{jF5+*rEw`ZV2*>5|nnd#XFDToP z%U;rLqB8&OYu#_e6cUdsb-wxWJO2rJZs~k?TbdGN)vwH$lJXvZsLF^6;Z|mQJ%-Jt zOdYwkx8#kmS@D^$WgRK8bHmaN`$@m~gimU$=7?S^A{KD%csI#)96wwJG_qY24bP5; z?)WGV#eE(aD_Q2Zy+Q>;59T-G1`Y(k5;WHx|E0h*VnV$)T~@?Y;A-P8paD zr1JM8HV1q`OOlHcv{Z+y(zS1`L)gefliNoAW9*S3F*;XSrWc%R&}@i$S+y~@{{{ur zQ{J91`&3mDaXT|4x;;qQFA(^`;T)Y9^UUO3mXgog41ivc6;E+xuKoNXhEvy^my1?LV)x%Y~8Cp2ioCer~#|&Qv_9d^zGLiZ6?O#mV}i hY0Xb?;{51}>rW<5p#>W&)F4!o_eOI;XaWEZ{{sdMXSDzT literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/profiler/mail.png b/web/bundles/webprofiler/images/profiler/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..30bcdb1095ce13433144e179e48e4117f58e057d GIT binary patch literal 2176 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 u4nP2e+feX literal 0 HcmV?d00001 diff --git a/web/bundles/webprofiler/images/symfony.png b/web/bundles/webprofiler/images/symfony.png new file mode 100644 index 0000000000000000000000000000000000000000..1321f606491819ad4b754f8a8200b7de49ee27fd GIT binary patch literal 1396 zcmV-)1&jKLP)y|6(v0U6z)XcPc8&Z@^tG+@TmEsv#f{rUO9K;J{$6QmJ&O7(oCy zYQwe3t*olJ087n_fT$<4Pj6`WrJ-PAVj`OI62xY+AH~E(?>?GwWEhr+9~HnVp^8xY|bp0^Zgl+uCv$a=tx1{!T==3iq{IE%VCdD`lun5{RCac`UB4uW!$4 zLBhhru_()+BJWx=hS9%b91JooP~wOljfF29&MAmN8r8Md!MZIVEo=V zWl(UCe7)6riY1#(l}bndRrj&uSqgu93^p038 zjv{8JXLyDVoi{qqMMg#xPfbmAl6#wqJf#qX?K)7_buC87tl}ZUiZ-FXb zC&1IVh7L!iqo{)4LqkIvBcme4r(l>smmMD;w>8#FpV6rqgQ2o_u&-Iv z<)-0bNdgR0LqkLOIAw#Kodh*__Do)&u^?6)D;43fdGqixeX>#yrulO?R!SC&xd4&g z4_+5?>sDD5o_l$FqH`?v_V(^D7RbTgev0nx?bUs^>hAyQOnbY)6Gt@i?edBp;CbQX z*_JK*b{J^Ay?y@10&Vi}5D|M~-}@QuVMqXt3?NH}Mn`aTbQI_2d>619`y}sAtVJ93 z?oEgn8gs#q?>B^LzpQi1`xT&SS%{76pjDH*xm|9(=# zfe%s+Ltq+Jby+Od(@&3Qm11xcI#>NIGb^JO65vu5w6U?#Y~Q}EL?jyc6W6<<-<4jw zTIA6o>l*1=RlR#+>{`qzFe`t0oYd2f({kk`5if<}j*?U-zg0p;Dy zSdfg&^v6lbiFud?fk#LnOdSruQK0{{FFrrPgGx(%*$NBV=}S!7R|wN8U=h|q{hq;8 z2euOmR?L?tz6xx4(862|fRB&2_R!%&0$*RBo3N|~?k78<5V{@;#G*PjK2`)Jy$QA&(dL*`^xLjy`Z`@RfwAKRjDhQoF$YfIG&?J2 z_4M?xA>-5deEu|>ZK3e;_QK5G2i&1!RMiaG{X7qdB$}?Vu)$ob`%)~~Yjrtt8cT)F zYsYkq0P{w5s?PysV9wPsel^A&c0B6k|K1S&BftO#3nswSs75;g0000?A16&*z`QvUv2*U`6B>U#KQ8H zmzQ^sn3&j%nKNe|273E1iWh(y8G(Z0{{H?u@7%ew_2b8nJ}}K70AvflfB!!G=FOY? z0|Nus+`fHV1f&P-1zo zP4j^R2f!E|eE$4dd+E}pbAe1Qrn;_fpA?flHSz zYW6n>SLmoEh}&w~uOBPAuZroX>`qn@7LPePi_%*?(|nlx#JfPlaz zAol?{GXWXGKx_`gUORX0blYCC?yim zAXXp+DhI@XSO|zg=')) { + $version = phpversion(); + $majorProblems[] = <<$version", but Symfony + needs at least PHP "5.3.2" to run. Before using Symfony, install + PHP "5.3.2" or newer. +EOF; +} + +if (!is_writable(__DIR__ . '/../app/cache')) { + $majorProblems[] = 'Change the permissions of the "app/cache/" + directory so that the web server can write into it.'; +} + +if (!is_writable(__DIR__ . '/../app/logs')) { + $majorProblems[] = 'Change the permissions of the "app/logs/" + directory so that the web server can write into it.'; +} + +// extensions +if (!class_exists('DomDocument')) { + $minorProblems[] = 'Install and enable the php-xml module.'; +} + +if (!((function_exists('apc_store') && ini_get('apc.enabled')) || function_exists('eaccelerator_put') && ini_get('eaccelerator.enable') || function_exists('xcache_set'))) { + $minorProblems[] = 'Install and enable a PHP accelerator like APC (highly recommended).'; +} + +if (!(!(function_exists('apc_store') && ini_get('apc.enabled')) || version_compare(phpversion('apc'), '3.0.17', '>='))) { + $majorProblems[] = 'Upgrade your APC extension (3.0.17+)'; +} + +if (!function_exists('token_get_all')) { + $minorProblems[] = 'Install and enable the Tokenizer extension.'; +} + +if (!function_exists('mb_strlen')) { + $minorProblems[] = 'Install and enable the mbstring extension.'; +} + +if (!function_exists('iconv')) { + $minorProblems[] = 'Install and enable the iconv extension.'; +} + +if (!function_exists('utf8_decode')) { + $minorProblems[] = 'Install and enable the XML extension.'; +} + +if (PHP_OS != 'WINNT' && !function_exists('posix_isatty')) { + $minorProblems[] = 'Install and enable the php_posix extension (used to colorize the CLI output).'; +} + +if (!class_exists('Locale')) { + $minorProblems[] = 'Install and enable the intl extension.'; +} else { + $version = ''; + + if (defined('INTL_ICU_VERSION')) { + $version = INTL_ICU_VERSION; + } else { + $reflector = new \ReflectionExtension('intl'); + + ob_start(); + $reflector->info(); + $output = strip_tags(ob_get_clean()); + + preg_match('/^ICU version (.*)$/m', $output, $matches); + $version = $matches[1]; + } + + if (!version_compare($version, '4.0', '>=')) { + $minorProblems[] = 'Upgrade your intl extension with a newer ICU version (4+).'; + } +} + +if (!class_exists('SQLite3') && !in_array('sqlite', PDO::getAvailableDrivers())) { + $majorProblems[] = 'Install and enable the SQLite3 or PDO_SQLite extension.'; +} + +if (!function_exists('json_encode')) { + $majorProblems[] = 'Install and enable the json extension.'; +} + +if (!function_exists('session_start')) { + $majorProblems[] = 'Install and enable the session extension.'; +} + +if (!function_exists('ctype_alpha')) { + $majorProblems[] = 'Install and enable the ctype extension.'; +} + +if (!function_exists('token_get_all')) { + $majorProblems[] = 'Install and enable the Tokenizer extension.'; +} + +// php.ini +if (!ini_get('date.timezone')) { + $phpini = true; + $majorProblems[] = 'Set the "date.timezone" setting in php.ini* (like Europe/Paris).'; +} + +if (ini_get('short_open_tag')) { + $phpini = true; + $minorProblems[] = 'Set short_open_tag to off in php.ini*.'; +} + +if (ini_get('magic_quotes_gpc')) { + $phpini = true; + $minorProblems[] = 'Set magic_quotes_gpc to off in php.ini*.'; +} + +if (ini_get('register_globals')) { + $phpini = true; + $minorProblems[] = 'Set register_globals to off in php.ini*.'; +} + +if (ini_get('session.auto_start')) { + $phpini = true; + $minorProblems[] = 'Set session.auto_start to off in php.ini*.'; +} +?> + + + + + + Symfony Configuration + + +
+
+
+ + +
+

Welcome!

+

Welcome to your new Symfony project.

+

This script will guide you through the basic configuration of your project. You can also do the same by editing the ‘app/config/parameters.ini’ file directly.

+ + +

+ Major problems +

+

Major problems have been detected and must be fixed before continuing :

+
    + +
  1. + +
+ + + +

Recommendations

+

+ + Additionally, to + + To + enhance your Symfony experience, it’s recommended that you fix the following : +

+
    + +
  1. + +
+ + + + +

* + + Changes to the php.ini file must be done in "". + + To change settings, create a "php.ini". + +

+ + + +
+
+
+
Symfony Standard Edition
+ + diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..864803618e0888f8463c0b30038633c018f939cc GIT binary patch literal 1150 zcmaizUr1AN6vuy3^oL%AsH~?RBQobI=ccaNk~J)QQD?41%~lUl4?1&O#PTUgotA-9 zsDZB9Dx!CTsTlUUw?V5x4YK5>5M*n+r|-FL<1!X8KKK0Y+4-K|Ip_DgLX_ZFS}O27 zD6VZ4Vy_V55P%DwO+Snf_;2^FO_X=lLt9ZPzz)z@c~ldI{Q@#slCUp96W9qfs%tQ*oXL6(4`+eocJ>~>XTi!Tx6`NE0#k>{2Oo} ztK9}W2EBZ;)|i=(L{i>6UU}sHFa>93DOU?()OGNh>)?K^U==8P)fsB(g!Z`H)Oe2K zAL8V3c}P=UQK;p237iK()-qO$m3q1_)5Uf>)l?g3abZDzzr3uhc^8WX1k|b(vZuwUYd`2nOcXxJ?f6`A^uQ+Js>k0*)1Z4Ms zn^LJ1IeVQ{e)veSS*BUf_2AsdWHfQT>0~mg)MIP0(fZmtg+pPwU~40@=~Q74tpCV* z?ho@%#bU9aI76NxIeHwFNF*?aMWwIcY>?`WCUqU3p`BrU7P-H#KQlGy-*EQ!{qC?| zBHyTwqR}XwX|T}E>o*E#8G_CNzUOjq9hiOEpwp*$E~o3w^mcAenG2uk(7mCIUZ>~% zB=me1mhaCn;Cq#;BX2o}t+|y3?+$Lc6{R^^&pjZF^ literal 0 HcmV?d00001 diff --git a/web/robots.txt b/web/robots.txt new file mode 100644 index 0000000..214e411 --- /dev/null +++ b/web/robots.txt @@ -0,0 +1,4 @@ +# www.robotstxt.org/ +# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 + +User-agent: *