| @@ -0,0 +1,14 @@ | ||
| <?php | ||
| use Doctrine\Common\Annotations\AnnotationRegistry; | ||
| $loader = require __DIR__.'/../vendor/autoload.php'; | ||
| // intl | ||
| if (!function_exists('intl_get_error_code')) { | ||
| require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php'; | ||
| } | ||
| AnnotationRegistry::registerLoader(array($loader, 'loadClass')); | ||
| return $loader; |
| @@ -0,0 +1,55 @@ | ||
| <?php | ||
| require_once dirname(__FILE__).'/SymfonyRequirements.php'; | ||
| $symfonyRequirements = new SymfonyRequirements(); | ||
| $iniPath = $symfonyRequirements->getPhpIniConfigPath(); | ||
| echo "********************************\n"; | ||
| echo "* *\n"; | ||
| echo "* Symfony requirements check *\n"; | ||
| echo "* *\n"; | ||
| echo "********************************\n\n"; | ||
| echo $iniPath ? sprintf("* Configuration file used by PHP: %s\n\n", $iniPath) : "* WARNING: No configuration file (php.ini) used by PHP!\n\n"; | ||
| echo "** ATTENTION **\n"; | ||
| echo "* The PHP CLI can use a different php.ini file\n"; | ||
| echo "* than the one used with your web server.\n"; | ||
| if ('\\' == DIRECTORY_SEPARATOR) { | ||
| echo "* (especially on the Windows platform)\n"; | ||
| } | ||
| echo "* To be on the safe side, please also launch the requirements check\n"; | ||
| echo "* from your web server using the web/config.php script.\n"; | ||
| echo_title('Mandatory requirements'); | ||
| foreach ($symfonyRequirements->getRequirements() as $req) { | ||
| echo_requirement($req); | ||
| } | ||
| echo_title('Optional recommendations'); | ||
| foreach ($symfonyRequirements->getRecommendations() as $req) { | ||
| echo_requirement($req); | ||
| } | ||
| /** | ||
| * Prints a Requirement instance | ||
| */ | ||
| function echo_requirement(Requirement $requirement) | ||
| { | ||
| $result = $requirement->isFulfilled() ? 'OK' : ($requirement->isOptional() ? 'WARNING' : 'ERROR'); | ||
| echo ' ' . str_pad($result, 9); | ||
| echo $requirement->getTestMessage() . "\n"; | ||
| if (!$requirement->isFulfilled()) { | ||
| echo sprintf(" %s\n\n", $requirement->getHelpText()); | ||
| } | ||
| } | ||
| function echo_title($title) | ||
| { | ||
| echo "\n** $title **\n\n"; | ||
| } |
| @@ -0,0 +1,65 @@ | ||
| imports: | ||
| - { resource: parameters.yml } | ||
| - { resource: security.yml } | ||
| framework: | ||
| #esi: ~ | ||
| #translator: { fallback: %locale% } | ||
| secret: %secret% | ||
| router: | ||
| resource: "%kernel.root_dir%/config/routing.yml" | ||
| strict_requirements: %kernel.debug% | ||
| form: ~ | ||
| csrf_protection: ~ | ||
| validation: { enable_annotations: true } | ||
| templating: | ||
| engines: ['twig', 'php'] | ||
| #assets_version: SomeVersionScheme | ||
| default_locale: "%locale%" | ||
| trusted_proxies: ~ | ||
| session: ~ | ||
| fragments: ~ | ||
| # Twig Configuration | ||
| twig: | ||
| debug: %kernel.debug% | ||
| strict_variables: %kernel.debug% | ||
| # Assetic Configuration | ||
| assetic: | ||
| debug: %kernel.debug% | ||
| use_controller: false | ||
| bundles: [ ] | ||
| #java: /usr/bin/java | ||
| filters: | ||
| cssrewrite: ~ | ||
| #closure: | ||
| # jar: %kernel.root_dir%/Resources/java/compiler.jar | ||
| #yui_css: | ||
| # jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.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 | ||
| # if using pdo_sqlite as your database driver, add the path in parameters.yml | ||
| # e.g. database_path: %kernel.root_dir%/data/data.db3 | ||
| # path: %database_path% | ||
| 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% | ||
| spool: { type: memory } |
| @@ -0,0 +1,29 @@ | ||
| 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 | ||
| chromephp: | ||
| type: chromephp | ||
| level: info | ||
| assetic: | ||
| use_controller: true | ||
| #swiftmailer: | ||
| # delivery_address: me@example.com |
| @@ -0,0 +1,29 @@ | ||
| imports: | ||
| - { resource: config.yml } | ||
| # In production environment you should know that the parameters for URL generation | ||
| # always pass the requirements. Otherwise it would break your link (or even site with | ||
| # strict_requirements = true). So we can disable the requirements check completely for | ||
| # enhanced performance with strict_requirements = null. | ||
| framework: | ||
| router: | ||
| strict_requirements: null | ||
| # validation: | ||
| # cache: apc | ||
| doctrine: | ||
| orm: | ||
| # metadata_cache_driver: redis | ||
| # result_cache_driver: apc | ||
| # query_cache_driver: redis | ||
| monolog: | ||
| handlers: | ||
| main: | ||
| type: fingers_crossed | ||
| action_level: error | ||
| handler: nested | ||
| nested: | ||
| type: stream | ||
| path: %kernel.logs_dir%/%kernel.environment%.log | ||
| level: debug |
| @@ -0,0 +1,16 @@ | ||
| imports: | ||
| - { resource: config_dev.yml } | ||
| framework: | ||
| test: ~ | ||
| session: | ||
| storage_id: session.storage.mock_file | ||
| profiler: | ||
| enabled: false | ||
| web_profiler: | ||
| toolbar: false | ||
| intercept_redirects: false | ||
| swiftmailer: | ||
| disable_delivery: true |
| @@ -0,0 +1,14 @@ | ||
| parameters: | ||
| database_driver: pdo_mysql | ||
| database_host: 127.0.0.1 | ||
| database_port: null | ||
| database_name: hello_world | ||
| database_user: benchmarkdbuser | ||
| database_password: benchmarkdbpass | ||
| mailer_transport: smtp | ||
| mailer_host: 127.0.0.1 | ||
| mailer_user: null | ||
| mailer_password: null | ||
| locale: en | ||
| secret: 2d50e353f5d24683c46e298ec0aead14 | ||
| database_path: null |
| @@ -0,0 +1,23 @@ | ||
| _json: | ||
| pattern: /json | ||
| defaults: { _controller: SkamanderBenchmarkBundle:Bench:json } | ||
| _db: | ||
| pattern: /db | ||
| defaults: { _controller: SkamanderBenchmarkBundle:Bench:db } | ||
| _dbRaw: | ||
| pattern: /db-raw | ||
| defaults: { _controller: SkamanderBenchmarkBundle:Bench:dbRaw } | ||
| _fortunes: | ||
| pattern: /fortunes | ||
| defaults: { _controller: SkamanderBenchmarkBundle:Bench:fortunes } | ||
| _fortunesPhp: | ||
| pattern: /fortunes-php | ||
| defaults: { _controller: SkamanderBenchmarkBundle:Bench:fortunesPhp } | ||
| _fortunesRaw: | ||
| pattern: /fortunes-raw | ||
| defaults: { _controller: SkamanderBenchmarkBundle:Bench:fortunesRaw } |
| @@ -0,0 +1,27 @@ | ||
| _welcome: | ||
| pattern: / | ||
| defaults: { _controller: AcmeDemoBundle:Welcome:index } | ||
| _demo_secured: | ||
| resource: "@AcmeDemoBundle/Controller/SecuredController.php" | ||
| type: annotation | ||
| _demo: | ||
| resource: "@AcmeDemoBundle/Controller/DemoController.php" | ||
| type: annotation | ||
| prefix: /demo | ||
| _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 |
| @@ -0,0 +1,42 @@ | ||
| jms_security_extra: | ||
| secure_all_services: false | ||
| expressions: true | ||
| 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: | ||
| 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: _security_check | ||
| login_path: _demo_login | ||
| logout: | ||
| path: _demo_logout | ||
| target: _demo | ||
| #anonymous: ~ | ||
| #http_basic: | ||
| # realm: "Secured Demo Area" | ||
| access_control: | ||
| #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } |
| @@ -0,0 +1,22 @@ | ||
| #!/usr/bin/env php | ||
| <?php | ||
| // if you don't want to setup permissions the proper way, just uncomment the following PHP line | ||
| // read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information | ||
| //umask(0000); | ||
| set_time_limit(0); | ||
| require_once __DIR__.'/bootstrap.php.cache'; | ||
| require_once __DIR__.'/AppKernel.php'; | ||
| use Symfony\Bundle\FrameworkBundle\Console\Application; | ||
| use Symfony\Component\Console\Input\ArgvInput; | ||
| $input = new ArgvInput(); | ||
| $env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); | ||
| $debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; | ||
| $kernel = new AppKernel($env, $debug); | ||
| $application = new Application($kernel); | ||
| $application->run($input); |
| @@ -0,0 +1,41 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <!-- http://www.phpunit.de/manual/current/en/appendixes.configuration.html --> | ||
| <phpunit | ||
| backupGlobals = "false" | ||
| backupStaticAttributes = "false" | ||
| colors = "true" | ||
| convertErrorsToExceptions = "true" | ||
| convertNoticesToExceptions = "true" | ||
| convertWarningsToExceptions = "true" | ||
| processIsolation = "false" | ||
| stopOnFailure = "false" | ||
| syntaxCheck = "false" | ||
| bootstrap = "bootstrap.php.cache" > | ||
| <testsuites> | ||
| <testsuite name="Project Test Suite"> | ||
| <directory>../src/*/*Bundle/Tests</directory> | ||
| <directory>../src/*/Bundle/*Bundle/Tests</directory> | ||
| </testsuite> | ||
| </testsuites> | ||
| <!-- | ||
| <php> | ||
| <server name="KERNEL_DIR" value="/path/to/your/app/" /> | ||
| </php> | ||
| --> | ||
| <filter> | ||
| <whitelist> | ||
| <directory>../src</directory> | ||
| <exclude> | ||
| <directory>../src/*/*Bundle/Resources</directory> | ||
| <directory>../src/*/*Bundle/Tests</directory> | ||
| <directory>../src/*/Bundle/*Bundle/Resources</directory> | ||
| <directory>../src/*/Bundle/*Bundle/Tests</directory> | ||
| </exclude> | ||
| </whitelist> | ||
| </filter> | ||
| </phpunit> |
| @@ -0,0 +1,64 @@ | ||
| { | ||
| "framework": "symfony2_hhvm", | ||
| "tests": [{ | ||
| "default": { | ||
| "setup_file": "setup_hhvm", | ||
| "json_url": "/json", | ||
| "db_url": "/db", | ||
| "query_url": "/db?queries=", | ||
| "fortune_url": "/fortunes", | ||
| "port": 8080, | ||
| "approach": "Realistic", | ||
| "classification": "Fullstack", | ||
| "database": "MySQL", | ||
| "framework": "symfony2", | ||
| "language": "PHP", | ||
| "orm": "Full", | ||
| "platform": "PHP-FPM", | ||
| "webserver": "nginx", | ||
| "os": "Linux", | ||
| "database_os": "Linux", | ||
| "display_name": "symfony2", | ||
| "notes": "", | ||
| "versus": "php" | ||
| }, | ||
| "php-templates": { | ||
| "setup_file": "setup_hhvm", | ||
| "fortune_url": "/fortunes-php", | ||
| "port": 8080, | ||
| "approach": "Realistic", | ||
| "classification": "Fullstack", | ||
| "database": "MySQL", | ||
| "framework": "symfony2", | ||
| "language": "PHP", | ||
| "orm": "Full", | ||
| "platform": "PHP-FPM", | ||
| "webserver": "nginx", | ||
| "os": "Linux", | ||
| "database_os": "Linux", | ||
| "display_name": "symfony2", | ||
| "notes": "", | ||
| "versus": "php" | ||
| }, | ||
| "raw": { | ||
| "setup_file": "setup_hhvm", | ||
| "db_url": "/db-raw", | ||
| "query_url": "/db-raw?queries=", | ||
| "fortune_url": "/fortunes-raw", | ||
| "port": 8080, | ||
| "approach": "Realistic", | ||
| "classification": "Fullstack", | ||
| "database": "MySQL", | ||
| "framework": "symfony2", | ||
| "language": "PHP", | ||
| "orm": "Raw", | ||
| "platform": "PHP-FPM", | ||
| "webserver": "nginx", | ||
| "os": "Linux", | ||
| "database_os": "Linux", | ||
| "display_name": "symfony2", | ||
| "notes": "", | ||
| "versus": "php" | ||
| } | ||
| }] | ||
| } |
| @@ -0,0 +1,47 @@ | ||
| { | ||
| "name": "symfony/framework-standard-edition", | ||
| "description": "The \"Symfony Standard Edition\" distribution", | ||
| "autoload": { | ||
| "psr-0": { "": "src/" } | ||
| }, | ||
| "require": { | ||
| "php": ">=5.3.3", | ||
| "symfony/symfony": "2.2.*", | ||
| "doctrine/orm": "~2.2,>=2.2.3", | ||
| "doctrine/doctrine-bundle": "1.2.*", | ||
| "twig/extensions": "1.0.*", | ||
| "symfony/assetic-bundle": "2.1.*", | ||
| "symfony/swiftmailer-bundle": "2.2.*", | ||
| "symfony/monolog-bundle": "2.2.*", | ||
| "sensio/distribution-bundle": "2.2.*", | ||
| "sensio/framework-extra-bundle": "2.2.*", | ||
| "sensio/generator-bundle": "2.2.*", | ||
| "jms/security-extra-bundle": "1.4.*", | ||
| "jms/di-extra-bundle": "1.3.*" | ||
| }, | ||
| "scripts": { | ||
| "post-install-cmd": [ | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" | ||
| ], | ||
| "post-update-cmd": [ | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", | ||
| "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" | ||
| ] | ||
| }, | ||
| "config": { | ||
| "bin-dir": "bin" | ||
| }, | ||
| "minimum-stability": "alpha", | ||
| "extra": { | ||
| "symfony-app-dir": "app", | ||
| "symfony-web-dir": "web", | ||
| "branch-alias": { | ||
| "dev-master": "2.2-dev" | ||
| } | ||
| } | ||
| } |
| @@ -0,0 +1,47 @@ | ||
| # main configuration file | ||
| # Application PID File | ||
| PidFile = /home/vagrant/FrameworkBenchmarks/frameworks/PHP/symfony2_hhvm/hhvm.pid | ||
| # Server settings | ||
| Server { | ||
| Port = 9001 | ||
| Type = fastcgi | ||
| SourceRoot = /home/vagrant/FrameworkBenchmarks/frameworks/PHP/symfony2_hhvm | ||
| DefaultDocument = index.php | ||
| } | ||
| # Disable logging completely | ||
| Log { | ||
| UseLogFile = false | ||
| UseSyslog = false | ||
| Level = Error | ||
| #File = /home/vagrant/FrameworkBenchmarks/frameworks/PHP/symfony2_hhvm/error.log | ||
| } | ||
| # Enable jit for production mode | ||
| Eval { | ||
| Jit = true | ||
| CheckSymLink = false | ||
| } | ||
| # Repo file | ||
| Repo { | ||
| Central { | ||
| Path = /home/vagrant/FrameworkBenchmarks/frameworks/PHP/symfony2_hhvm/.hhvm.bbhc | ||
| } | ||
| } | ||
| # Setup basic rewrite | ||
| VirtualHost { | ||
| * { | ||
| Pattern = .* | ||
| RewriteRules { | ||
| * { | ||
| pattern = ^(.*)$ | ||
| to = $1.php | ||
| qsa = true | ||
| } | ||
| } | ||
| } | ||
| } |
| @@ -0,0 +1,133 @@ | ||
| #user nobody; | ||
| worker_processes 8; | ||
| #error_log logs/error.log; | ||
| #error_log logs/error.log notice; | ||
| #error_log logs/error.log info; | ||
| error_log stderr error; | ||
| #pid logs/nginx.pid; | ||
| events { | ||
| worker_connections 1024; | ||
| } | ||
| http { | ||
| include /home/vagrant/FrameworkBenchmarks/installs/nginx/conf/mime.types; | ||
| default_type application/octet-stream; | ||
| #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' | ||
| # '$status $body_bytes_sent "$http_referer" ' | ||
| # '"$http_user_agent" "$http_x_forwarded_for"'; | ||
| #access_log logs/access.log main; | ||
| access_log off; | ||
| sendfile on; | ||
| #tcp_nopush on; | ||
| #keepalive_timeout 0; | ||
| keepalive_timeout 65; | ||
| #gzip on; | ||
| upstream fastcgi_backend { | ||
| server 127.0.0.1:9001; | ||
| keepalive 32; | ||
| } | ||
| server { | ||
| listen 8080; | ||
| server_name localhost; | ||
| #charset koi8-r; | ||
| #access_log logs/host.access.log main; | ||
| #location / { | ||
| # root html; | ||
| # index index.html index.htm; | ||
| #} | ||
| #error_page 404 /404.html; | ||
| # redirect server error pages to the static page /50x.html | ||
| # | ||
| #error_page 500 502 503 504 /50x.html; | ||
| #location = /50x.html { | ||
| # root html; | ||
| #} | ||
| # proxy the PHP scripts to Apache listening on 127.0.0.1:80 | ||
| # | ||
| #location ~ \.php$ { | ||
| # proxy_pass http://127.0.0.1; | ||
| #} | ||
| root /home/vagrant/FrameworkBenchmarks/frameworks/PHP/symfony2_hhvm/web/; | ||
| index app.php; | ||
| location / { | ||
| try_files $uri $uri/ /app.php?$uri&$args; | ||
| } | ||
| # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 | ||
| # | ||
| location ~ \.php$ { | ||
| try_files $uri =404; | ||
| fastcgi_pass fastcgi_backend; | ||
| fastcgi_keep_conn on; | ||
| fastcgi_index index.php; | ||
| # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; | ||
| fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
| include /home/vagrant/FrameworkBenchmarks/installs/nginx/conf/fastcgi_params; | ||
| } | ||
| # deny access to .htaccess files, if Apache's document root | ||
| # concurs with nginx's one | ||
| # | ||
| #location ~ /\.ht { | ||
| # deny all; | ||
| #} | ||
| } | ||
| # another virtual host using mix of IP-, name-, and port-based configuration | ||
| # | ||
| #server { | ||
| # listen 8000; | ||
| # listen somename:8080; | ||
| # server_name somename alias another.alias; | ||
| # location / { | ||
| # root html; | ||
| # index index.html index.htm; | ||
| # } | ||
| #} | ||
| # HTTPS server | ||
| # | ||
| #server { | ||
| # listen 443; | ||
| # server_name localhost; | ||
| # ssl on; | ||
| # ssl_certificate cert.pem; | ||
| # ssl_certificate_key cert.key; | ||
| # ssl_session_timeout 5m; | ||
| # ssl_protocols SSLv2 SSLv3 TLSv1; | ||
| # ssl_ciphers HIGH:!aNULL:!MD5; | ||
| # ssl_prefer_server_ciphers on; | ||
| # location / { | ||
| # root html; | ||
| # index index.html index.htm; | ||
| # } | ||
| #} | ||
| } |
| @@ -0,0 +1 @@ | ||
| 19724 |
| @@ -0,0 +1,9 @@ | ||
| <VirtualHost *:8080> | ||
| Alias /php-symfony2_hhvm/ "/home/ubuntu/FrameworkBenchmarks/php-symfony2_hhvm/web/" | ||
| <Directory /home/ubuntu/FrameworkBenchmarks/php-symfony2_hhvm/web/> | ||
| Options Indexes FollowSymLinks MultiViews | ||
| #AllowOverride None | ||
| Order allow,deny | ||
| allow from all | ||
| </Directory> | ||
| </VirtualHost> |
| @@ -0,0 +1 @@ | ||
| 26599 |
| @@ -0,0 +1,12 @@ | ||
| #!/bin/bash | ||
| export PHP_HOME=${IROOT}/php-5.5.17 | ||
| export COMPOSER_HOME=${IROOT}/php-composer | ||
| export PHP_FPM=${PHP_HOME}/sbin/php-fpm | ||
| export NGINX_HOME=${IROOT}/nginx | ||
| fw_depends php nginx composer hhvm | ||
| ${PHP_HOME}/bin/php ${COMPOSER_HOME}/composer.phar install \ | ||
| --no-interaction --working-dir $TROOT \ | ||
| --no-progress --optimize-autoloader |
| @@ -0,0 +1,21 @@ | ||
| #!/bin/bash | ||
| export PHP_HOME=${IROOT}/php-5.5.17 | ||
| export COMPOSER_HOME=${IROOT}/php-composer | ||
| export PHP_FPM=${PHP_HOME}/sbin/php-fpm | ||
| export NGINX_HOME=${IROOT}/nginx | ||
| sed -i 's|database_host: .*|database_host: '"${DBHOST}"'|g' app/config/parameters.yml | ||
| sed -i 's|SourceRoot = .*/FrameworkBenchmarks/symfony2_hhvm|SourceRoot = '"${TROOT}"'|g' deploy/config.hdf | ||
| sed -i 's|Path = .*/.hhvm.hhbc|Path = '"${TROOT}"'/.hhvm.bbhc|g' deploy/config.hdf | ||
| sed -i 's|PidFile = .*/hhvm.pid|PidFile = '"${TROOT}"'/hhvm.pid|g' deploy/config.hdf | ||
| sed -i 's|File = .*/error.log|File = '"${TROOT}"'/error.log|g' deploy/config.hdf | ||
| sed -i 's|root .*/FrameworkBenchmarks/php-symfony2_hhvm| root '"${TROOT}"'|g' deploy/nginx.conf | ||
| sed -i 's|/usr/local/nginx/|'"${IROOT}"'/nginx/|g' deploy/nginx.conf | ||
| ${PHP_HOME}/bin/php app/console cache:clear \ | ||
| --env=prod --no-debug --no-warmup | ||
| ${PHP_HOME}/bin/php app/console cache:warmup \ | ||
| --env=prod --no-debug | ||
| hhvm --config $TROOT/deploy/config.hdf --user $(whoami) -m daemon | ||
| $NGINX_HOME/sbin/nginx -c $TROOT/deploy/nginx.conf |
| @@ -0,0 +1,114 @@ | ||
| ./php-symfony2_hhvm/app/AppCache.php | ||
| ./php-symfony2_hhvm/app/AppKernel.php | ||
| ./php-symfony2_hhvm/app/autoload.php | ||
| ./php-symfony2_hhvm/app/bootstrap.php.cache | ||
| ./php-symfony2_hhvm/app/check.php | ||
| ./php-symfony2_hhvm/app/SymfonyRequirements.php | ||
| ./php-symfony2_hhvm/app/console | ||
| ./php-symfony2_hhvm/app/phpunit.xml.dist | ||
| ./php-symfony2_hhvm/app/Resources/ | ||
| ./php-symfony2_hhvm/app/Resources/views | ||
| ./php-symfony2_hhvm/app/Resources/views/base.html.twig | ||
| ./php-symfony2_hhvm/app/Resources/views/base.html.php | ||
| ./php-symfony2_hhvm/deploy/php-symfony2 | ||
| ./php-symfony2_hhvm/src/ | ||
| ./php-symfony2_hhvm/src/Skamander | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/SkamanderBenchmarkBundle.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Entity | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Entity/World.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Entity/Fortune.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Controller | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Controller/BenchController.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/layout.html.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/layout.html.twig | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/content.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/fortunes.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/template_footer.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/template_header.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench/fortunes.html.php | ||
| ./php-symfony2_hhvm/src/Skamander/BenchmarkBundle/Resources/views/Bench/fortunes.html.twig | ||
| ./php-symfony2_hhvm/src/.htaccess | ||
| ./php-symfony2_hhvm/src/Acme | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Twig/Extension | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/DependencyInjection | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/AcmeDemoBundle.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/EventListener | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/EventListener/ControllerListener.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Controller | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Controller/DemoController.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Controller/SecuredController.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Controller/WelcomeController.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images/search.png | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images/field-background.gif | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/images/logo.gif | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/css | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/public/css/demo.css | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Secured | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Welcome | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/layout.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Demo | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/config | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Resources/config/services.xml | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Form | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Form/ContactType.php | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Tests | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Tests/Controller | ||
| ./php-symfony2_hhvm/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php | ||
| ./php-symfony2_hhvm/web/bundles/ | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator/images | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator/images/blue-arrow.png | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator/images/notification.gif | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator/images/favicon.ico | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator/css | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator/css/configurator.css | ||
| ./php-symfony2_hhvm/web/bundles/sensiodistribution/webconfigurator/css/install.css | ||
| ./php-symfony2_hhvm/web/bundles/framework | ||
| ./php-symfony2_hhvm/web/bundles/framework/images | ||
| ./php-symfony2_hhvm/web/bundles/framework/images/grey_magnifier.png | ||
| ./php-symfony2_hhvm/web/bundles/framework/images/logo_symfony.png | ||
| ./php-symfony2_hhvm/web/bundles/framework/images/blue_picto_more.gif | ||
| ./php-symfony2_hhvm/web/bundles/framework/images/blue_picto_less.gif | ||
| ./php-symfony2_hhvm/web/bundles/framework/css | ||
| ./php-symfony2_hhvm/web/bundles/framework/css/body.css | ||
| ./php-symfony2_hhvm/web/bundles/framework/css/exception.css | ||
| ./php-symfony2_hhvm/web/bundles/framework/css/structure.css | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images/blue-arrow.png | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images/welcome-configure.gif | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images/welcome-demo.gif | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images/search.png | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images/welcome-quick-tour.gif | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images/field-background.gif | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/images/logo.gif | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/css | ||
| ./php-symfony2_hhvm/web/bundles/acmedemo/css/demo.css | ||
| ./php-symfony2_hhvm/web/app_dev.php | ||
| ./php-symfony2_hhvm/web/app.php |
| @@ -0,0 +1 @@ | ||
| deny from all |
| @@ -0,0 +1,9 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle; | ||
| use Symfony\Component\HttpKernel\Bundle\Bundle; | ||
| class AcmeDemoBundle extends Bundle | ||
| { | ||
| } |
| @@ -0,0 +1,57 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\Controller; | ||
| use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
| use Symfony\Component\HttpFoundation\RedirectResponse; | ||
| use Acme\DemoBundle\Form\ContactType; | ||
| // these import the "@Route" and "@Template" annotations | ||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; | ||
| class DemoController extends Controller | ||
| { | ||
| /** | ||
| * @Route("/", name="_demo") | ||
| * @Template() | ||
| */ | ||
| public function indexAction() | ||
| { | ||
| return array(); | ||
| } | ||
| /** | ||
| * @Route("/hello/{name}", name="_demo_hello") | ||
| * @Template() | ||
| */ | ||
| public function helloAction($name) | ||
| { | ||
| return array('name' => $name); | ||
| } | ||
| /** | ||
| * @Route("/contact", name="_demo_contact") | ||
| * @Template() | ||
| */ | ||
| public function contactAction() | ||
| { | ||
| $form = $this->get('form.factory')->create(new ContactType()); | ||
| $request = $this->get('request'); | ||
| if ($request->isMethod('POST')) { | ||
| $form->bind($request); | ||
| if ($form->isValid()) { | ||
| $mailer = $this->get('mailer'); | ||
| // .. setup a message and send it | ||
| // http://symfony.com/doc/current/cookbook/email.html | ||
| $this->get('session')->getFlashBag()->set('notice', 'Message sent!'); | ||
| return new RedirectResponse($this->generateUrl('_demo')); | ||
| } | ||
| } | ||
| return array('form' => $form->createView()); | ||
| } | ||
| } |
| @@ -0,0 +1,69 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\Controller; | ||
| use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
| use Symfony\Component\Security\Core\SecurityContext; | ||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; | ||
| use JMS\SecurityExtraBundle\Annotation\Secure; | ||
| /** | ||
| * @Route("/demo/secured") | ||
| */ | ||
| class SecuredController extends Controller | ||
| { | ||
| /** | ||
| * @Route("/login", name="_demo_login") | ||
| * @Template() | ||
| */ | ||
| public function loginAction() | ||
| { | ||
| if ($this->get('request')->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { | ||
| $error = $this->get('request')->attributes->get(SecurityContext::AUTHENTICATION_ERROR); | ||
| } else { | ||
| $error = $this->get('request')->getSession()->get(SecurityContext::AUTHENTICATION_ERROR); | ||
| } | ||
| return array( | ||
| 'last_username' => $this->get('request')->getSession()->get(SecurityContext::LAST_USERNAME), | ||
| 'error' => $error, | ||
| ); | ||
| } | ||
| /** | ||
| * @Route("/login_check", name="_security_check") | ||
| */ | ||
| public function securityCheckAction() | ||
| { | ||
| // The security layer will intercept this request | ||
| } | ||
| /** | ||
| * @Route("/logout", name="_demo_logout") | ||
| */ | ||
| public function logoutAction() | ||
| { | ||
| // The security layer will intercept this request | ||
| } | ||
| /** | ||
| * @Route("/hello", defaults={"name"="World"}), | ||
| * @Route("/hello/{name}", name="_demo_secured_hello") | ||
| * @Template() | ||
| */ | ||
| public function helloAction($name) | ||
| { | ||
| return array('name' => $name); | ||
| } | ||
| /** | ||
| * @Route("/hello/admin/{name}", name="_demo_secured_hello_admin") | ||
| * @Secure(roles="ROLE_ADMIN") | ||
| * @Template() | ||
| */ | ||
| public function helloadminAction($name) | ||
| { | ||
| return array('name' => $name); | ||
| } | ||
| } |
| @@ -0,0 +1,18 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\Controller; | ||
| use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
| class WelcomeController extends Controller | ||
| { | ||
| public function indexAction() | ||
| { | ||
| /* | ||
| * The action's view can be rendered using render() method | ||
| * or @Template annotation as demonstrated in DemoController. | ||
| * | ||
| */ | ||
| return $this->render('AcmeDemoBundle:Welcome:index.html.twig'); | ||
| } | ||
| } |
| @@ -0,0 +1,22 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\DependencyInjection; | ||
| use Symfony\Component\DependencyInjection\ContainerBuilder; | ||
| use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; | ||
| use Symfony\Component\HttpKernel\DependencyInjection\Extension; | ||
| use Symfony\Component\Config\FileLocator; | ||
| class AcmeDemoExtension extends Extension | ||
| { | ||
| public function load(array $configs, ContainerBuilder $container) | ||
| { | ||
| $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); | ||
| $loader->load('services.xml'); | ||
| } | ||
| public function getAlias() | ||
| { | ||
| return 'acme_demo'; | ||
| } | ||
| } |
| @@ -0,0 +1,25 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\EventListener; | ||
| use Symfony\Component\EventDispatcher\Event; | ||
| use Symfony\Component\HttpKernel\HttpKernelInterface; | ||
| use Symfony\Component\HttpKernel\Event\FilterControllerEvent; | ||
| use Acme\DemoBundle\Twig\Extension\DemoExtension; | ||
| class ControllerListener | ||
| { | ||
| protected $extension; | ||
| public function __construct(DemoExtension $extension) | ||
| { | ||
| $this->extension = $extension; | ||
| } | ||
| public function onKernelController(FilterControllerEvent $event) | ||
| { | ||
| if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { | ||
| $this->extension->setController($event->getController()); | ||
| } | ||
| } | ||
| } |
| @@ -0,0 +1,20 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\Form; | ||
| use Symfony\Component\Form\AbstractType; | ||
| use Symfony\Component\Form\FormBuilderInterface; | ||
| class ContactType extends AbstractType | ||
| { | ||
| public function buildForm(FormBuilderInterface $builder, array $options) | ||
| { | ||
| $builder->add('email', 'email'); | ||
| $builder->add('message', 'textarea'); | ||
| } | ||
| public function getName() | ||
| { | ||
| return 'contact'; | ||
| } | ||
| } |
| @@ -0,0 +1,18 @@ | ||
| <?xml version="1.0" ?> | ||
| <container xmlns="http://symfony.com/schema/dic/services" | ||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> | ||
| <services> | ||
| <service id="twig.extension.acme.demo" class="Acme\DemoBundle\Twig\Extension\DemoExtension" public="false"> | ||
| <tag name="twig.extension" /> | ||
| <argument type="service" id="twig.loader" /> | ||
| </service> | ||
| <service id="acme.demo.listener" class="Acme\DemoBundle\EventListener\ControllerListener"> | ||
| <tag name="kernel.event_listener" event="kernel.controller" method="onKernelController" /> | ||
| <argument type="service" id="twig.extension.acme.demo" /> | ||
| </service> | ||
| </services> | ||
| </container> |
| @@ -0,0 +1,101 @@ | ||
| body { | ||
| font-size: 14px; | ||
| font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| } | ||
| h1.title { | ||
| font-size: 45px; | ||
| padding-bottom: 30px; | ||
| } | ||
| .sf-reset h2 { | ||
| font-weight: bold; | ||
| color: #FFFFFF; | ||
| /* Font is duplicated of body (sans-serif) */ | ||
| font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| margin-bottom: 10px; | ||
| background-color: #aacd4e; | ||
| padding: 2px 4px; | ||
| display: inline-block; | ||
| text-transform: uppercase; | ||
| } | ||
| p { | ||
| line-height: 20px; | ||
| padding-bottom: 20px; | ||
| } | ||
| ul#demo-list a { | ||
| background: url(../images/blue-arrow.png) no-repeat right 6px; | ||
| padding-right: 10px; | ||
| margin-right: 30px; | ||
| } | ||
| #symfony-header { | ||
| position: relative; | ||
| padding: 30px 30px 20px 30px; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome { | ||
| overflow: hidden; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome > div { | ||
| background-color: whitesmoke; | ||
| float: left; | ||
| width: 240px; | ||
| margin-right: 14px; | ||
| text-align: center; | ||
| padding: 26px 20px; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome > div.block-demo { | ||
| margin-right: 0; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome .illustration { | ||
| padding-bottom: 20px; | ||
| } | ||
| .sf-reset .symfony-blocks-help { | ||
| overflow: hidden; | ||
| } | ||
| .sf-reset .symfony-blocks-help { | ||
| margin-top: 30px; | ||
| padding: 18px; | ||
| border: 1px solid #E6E6E6; | ||
| } | ||
| .sf-reset .symfony-blocks-help > div { | ||
| width: 254px; | ||
| float: left; | ||
| } | ||
| .flash-message { | ||
| padding: 10px; | ||
| margin: 5px; | ||
| margin-top: 15px; | ||
| background-color: #ffe; | ||
| } | ||
| .sf-reset .error { | ||
| color: red; | ||
| } | ||
| #login label, #contact_form label { | ||
| display: block; | ||
| float: left; | ||
| width: 90px; | ||
| } | ||
| .sf-reset ul#menu { | ||
| float: right; | ||
| margin-bottom: 20px; | ||
| padding-left: 0; | ||
| } | ||
| .sf-reset #menu li { | ||
| padding-left: 0; | ||
| margin-right: 10px; | ||
| display: inline; | ||
| } | ||
| .sf-reset a, | ||
| .sf-reset li a { | ||
| color: #08C; | ||
| text-decoration: none; | ||
| } | ||
| .sf-reset a:hover, | ||
| .sf-reset li a:hover { | ||
| color: #08C; | ||
| text-decoration: underline; | ||
| } | ||
| .sf-reset .symfony-content pre { | ||
| white-space: pre; | ||
| font-family: monospace; | ||
| } |
| @@ -0,0 +1,15 @@ | ||
| {% extends "AcmeDemoBundle::layout.html.twig" %} | ||
| {% block title "Symfony - Contact form" %} | ||
| {% block content %} | ||
| <form action="{{ path('_demo_contact') }}" method="POST" id="contact_form"> | ||
| {{ form_errors(form) }} | ||
| {{ form_row(form.email) }} | ||
| {{ form_row(form.message) }} | ||
| {{ form_rest(form) }} | ||
| <input type="submit" value="Send" class="symfony-button-grey" /> | ||
| </form> | ||
| {% endblock %} |
| @@ -0,0 +1,9 @@ | ||
| {% extends "AcmeDemoBundle::layout.html.twig" %} | ||
| {% block title "Hello " ~ name %} | ||
| {% block content %} | ||
| <h1>Hello {{ name }}!</h1> | ||
| {% endblock %} | ||
| {% set code = code(_self) %} |
| @@ -0,0 +1,14 @@ | ||
| {% extends "AcmeDemoBundle::layout.html.twig" %} | ||
| {% block title "Symfony - Demos" %} | ||
| {% block content_header '' %} | ||
| {% block content %} | ||
| <h1 class="title">Available demos</h1> | ||
| <ul id="demo-list"> | ||
| <li><a href="{{ path('_demo_hello', {'name': 'World'}) }}">Hello World</a></li> | ||
| <li><a href="{{ path('_demo_secured_hello', {'name': 'World'}) }}">Access the secured area</a> <a href="{{ path('_demo_login') }}">Go to the login page</a></li> | ||
| {# <li><a href="{{ path('_demo_contact') }}">Send a Message</a></li> #} | ||
| </ul> | ||
| {% endblock %} |
| @@ -0,0 +1,11 @@ | ||
| {% extends "AcmeDemoBundle:Secured:layout.html.twig" %} | ||
| {% block title "Hello " ~ name %} | ||
| {% block content %} | ||
| <h1 class="title">Hello {{ name }}!</h1> | ||
| <a href="{{ path('_demo_secured_hello_admin', { 'name': name }) }}">Hello resource secured for <strong>admin</strong> only.</a> | ||
| {% endblock %} | ||
| {% set code = code(_self) %} |
| @@ -0,0 +1,9 @@ | ||
| {% extends "AcmeDemoBundle:Secured:layout.html.twig" %} | ||
| {% block title "Hello " ~ name %} | ||
| {% block content %} | ||
| <h1 class="title">Hello {{ name }} secured for Admins only!</h1> | ||
| {% endblock %} | ||
| {% set code = code(_self) %} |
| @@ -0,0 +1,6 @@ | ||
| {% extends "AcmeDemoBundle::layout.html.twig" %} | ||
| {% block content_header_more %} | ||
| {{ parent() }} | ||
| <li>logged in as <strong>{{ app.user ? app.user.username : 'Anonymous' }}</strong> - <a href="{{ path('_demo_logout') }}">Logout</a></li> | ||
| {% endblock %} |
| @@ -0,0 +1,35 @@ | ||
| {% extends 'AcmeDemoBundle::layout.html.twig' %} | ||
| {% block content %} | ||
| <h1 class="title">Login</h1> | ||
| <p> | ||
| Choose between two default users: <em>user/userpass</em> <small>(ROLE_USER)</small> or <em>admin/adminpass</em> <small>(ROLE_ADMIN)</small> | ||
| </p> | ||
| {% if error %} | ||
| <div class="error">{{ error.message }}</div> | ||
| {% endif %} | ||
| <form action="{{ path("_security_check") }}" method="post" id="login"> | ||
| <div> | ||
| <label for="username">Username</label> | ||
| <input type="text" id="username" name="_username" value="{{ last_username }}" /> | ||
| </div> | ||
| <div> | ||
| <label for="password">Password</label> | ||
| <input type="password" id="password" name="_password" /> | ||
| </div> | ||
| <button type="submit" class="sf-button"> | ||
| <span class="border-l"> | ||
| <span class="border-r"> | ||
| <span class="btn-bg">Login</span> | ||
| </span> | ||
| </span> | ||
| </button> | ||
| </form> | ||
| {% endblock %} | ||
| {% set code = code(_self) %} |
| @@ -0,0 +1,83 @@ | ||
| {% extends 'AcmeDemoBundle::layout.html.twig' %} | ||
| {% block title %}Symfony - Welcome{% endblock %} | ||
| {% block content_header '' %} | ||
| {% block content %} | ||
| {% set version = constant('Symfony\\Component\\HttpKernel\\Kernel::MAJOR_VERSION') ~ '.' ~ constant('Symfony\\Component\\HttpKernel\\Kernel::MINOR_VERSION')%} | ||
| <h1 class="title">Welcome!</h1> | ||
| <p>Congratulations! You have successfully installed a new Symfony application.</p> | ||
| <div class="symfony-blocks-welcome"> | ||
| <div class="block-quick-tour"> | ||
| <div class="illustration"> | ||
| <img src="{{ asset('bundles/acmedemo/images/welcome-quick-tour.gif') }}" alt="Quick tour" /> | ||
| </div> | ||
| <a href="http://symfony.com/doc/{{ version }}/quick_tour/index.html" class="sf-button sf-button-selected"> | ||
| <span class="border-l"> | ||
| <span class="border-r"> | ||
| <span class="btn-bg">Read the Quick Tour</span> | ||
| </span> | ||
| </span> | ||
| </a> | ||
| </div> | ||
| {% if app.environment == 'dev' %} | ||
| <div class="block-configure"> | ||
| <div class="illustration"> | ||
| <img src="{{ asset('bundles/acmedemo/images/welcome-configure.gif') }}" alt="Configure your application" /> | ||
| </div> | ||
| <a href="{{ path('_configurator_home') }}" class="sf-button sf-button-selected"> | ||
| <span class="border-l"> | ||
| <span class="border-r"> | ||
| <span class="btn-bg">Configure</span> | ||
| </span> | ||
| </span> | ||
| </a> | ||
| </div> | ||
| {% endif %} | ||
| <div class="block-demo"> | ||
| <div class="illustration"> | ||
| <img src="{{ asset('bundles/acmedemo/images/welcome-demo.gif') }}" alt="Demo" /> | ||
| </div> | ||
| <a href="{{ path('_demo') }}" class="sf-button sf-button-selected"> | ||
| <span class="border-l"> | ||
| <span class="border-r"> | ||
| <span class="btn-bg">Run The Demo</span> | ||
| </span> | ||
| </span> | ||
| </a> | ||
| </div> | ||
| </div> | ||
| <div class="symfony-blocks-help"> | ||
| <div class="block-documentation"> | ||
| <ul> | ||
| <li><strong>Documentation</strong></li> | ||
| <li><a href="http://symfony.com/doc/{{ version }}/book/index.html">The Book</a></li> | ||
| <li><a href="http://symfony.com/doc/{{ version }}/cookbook/index.html">The Cookbook</a></li> | ||
| <li><a href="http://symfony.com/doc/{{ version }}/components/index.html">The Components</a></li> | ||
| <li><a href="http://symfony.com/doc/{{ version }}/reference/index.html">Reference</a></li> | ||
| <li><a href="http://symfony.com/doc/{{ version }}/glossary.html">Glossary</a></li> | ||
| </ul> | ||
| </div> | ||
| <div class="block-documentation-more"> | ||
| <ul> | ||
| <li><strong>Sensio</strong></li> | ||
| <li><a href="http://trainings.sensiolabs.com">Trainings</a></li> | ||
| <li><a href="http://books.sensiolabs.com">Books</a></li> | ||
| </ul> | ||
| </div> | ||
| <div class="block-community"> | ||
| <ul> | ||
| <li><strong>Community</strong></li> | ||
| <li><a href="http://symfony.com/irc">IRC channel</a></li> | ||
| <li><a href="http://symfony.com/mailing-lists">Mailing lists</a></li> | ||
| <li><a href="http://forum.symfony-project.org">Forum</a></li> | ||
| <li><a href="http://symfony.com/doc/{{ version }}/contributing/index.html">Contributing</a></li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| {% endblock %} |
| @@ -0,0 +1,37 @@ | ||
| {% extends "TwigBundle::layout.html.twig" %} | ||
| {% block head %} | ||
| <link rel="icon" sizes="16x16" href="{{ asset('favicon.ico') }}" /> | ||
| <link rel="stylesheet" href="{{ asset('bundles/acmedemo/css/demo.css') }}" /> | ||
| {% endblock %} | ||
| {% block title 'Demo Bundle' %} | ||
| {% block body %} | ||
| {% for flashMessage in app.session.flashbag.get('notice') %} | ||
| <div class="flash-message"> | ||
| <em>Notice</em>: {{ flashMessage }} | ||
| </div> | ||
| {% endfor %} | ||
| {% block content_header %} | ||
| <ul id="menu"> | ||
| {% block content_header_more %} | ||
| <li><a href="{{ path('_demo') }}">Demo Home</a></li> | ||
| {% endblock %} | ||
| </ul> | ||
| <div style="clear: both"></div> | ||
| {% endblock %} | ||
| <div class="block"> | ||
| {% block content %}{% endblock %} | ||
| </div> | ||
| {% if code is defined %} | ||
| <h2>Code behind this page</h2> | ||
| <div class="block"> | ||
| <div class="symfony-content">{{ code|raw }}</div> | ||
| </div> | ||
| {% endif %} | ||
| {% endblock %} |
| @@ -0,0 +1,17 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\Tests\Controller; | ||
| use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; | ||
| class DemoControllerTest extends WebTestCase | ||
| { | ||
| public function testIndex() | ||
| { | ||
| $client = static::createClient(); | ||
| $crawler = $client->request('GET', '/demo/hello/Fabien'); | ||
| $this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count()); | ||
| } | ||
| } |
| @@ -0,0 +1,81 @@ | ||
| <?php | ||
| namespace Acme\DemoBundle\Twig\Extension; | ||
| use CG\Core\ClassUtils; | ||
| class DemoExtension extends \Twig_Extension | ||
| { | ||
| protected $loader; | ||
| protected $controller; | ||
| public function __construct(\Twig_LoaderInterface $loader) | ||
| { | ||
| $this->loader = $loader; | ||
| } | ||
| public function setController($controller) | ||
| { | ||
| $this->controller = $controller; | ||
| } | ||
| /** | ||
| * {@inheritdoc} | ||
| */ | ||
| public function getFunctions() | ||
| { | ||
| return array( | ||
| 'code' => new \Twig_Function_Method($this, 'getCode', array('is_safe' => array('html'))), | ||
| ); | ||
| } | ||
| public function getCode($template) | ||
| { | ||
| // highlight_string highlights php code only if '<?php' tag is present. | ||
| $controller = highlight_string("<?php" . $this->getControllerCode(), true); | ||
| $controller = str_replace('<span style="color: #0000BB"><?php </span>', ' ', $controller); | ||
| $template = htmlspecialchars($this->getTemplateCode($template), ENT_QUOTES, 'UTF-8'); | ||
| // remove the code block | ||
| $template = str_replace('{% set code = code(_self) %}', '', $template); | ||
| return <<<EOF | ||
| <p><strong>Controller Code</strong></p> | ||
| <pre>$controller</pre> | ||
| <p><strong>Template Code</strong></p> | ||
| <pre>$template</pre> | ||
| EOF; | ||
| } | ||
| protected function getControllerCode() | ||
| { | ||
| $class = get_class($this->controller[0]); | ||
| if (class_exists('CG\Core\ClassUtils')) { | ||
| $class = ClassUtils::getUserClass($class); | ||
| } | ||
| $r = new \ReflectionClass($class); | ||
| $m = $r->getMethod($this->controller[1]); | ||
| $code = file($r->getFilename()); | ||
| return ' '.$m->getDocComment()."\n".implode('', array_slice($code, $m->getStartline() - 1, $m->getEndLine() - $m->getStartline() + 1)); | ||
| } | ||
| protected function getTemplateCode($template) | ||
| { | ||
| return $this->loader->getSource($template->getTemplateName()); | ||
| } | ||
| /** | ||
| * Returns the name of the extension. | ||
| * | ||
| * @return string The extension name | ||
| */ | ||
| public function getName() | ||
| { | ||
| return 'demo'; | ||
| } | ||
| } |
| @@ -0,0 +1,131 @@ | ||
| <?php | ||
| namespace Skamander\BenchmarkBundle\Controller; | ||
| use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
| use Symfony\Component\HttpFoundation\JsonResponse; | ||
| use Symfony\Component\HttpFoundation\Request; | ||
| use Symfony\Component\HttpFoundation\Response; | ||
| use Skamander\BenchmarkBundle\Entity\Fortune; | ||
| class BenchController extends Controller | ||
| { | ||
| public function jsonAction() | ||
| { | ||
| return new JsonResponse(array('message' => 'Hello, World!')); | ||
| } | ||
| public function dbAction(Request $request) | ||
| { | ||
| $queries = $request->query->getInt('queries', 1); | ||
| $queries = max(1, $queries); | ||
| $queries = min(500, $queries); | ||
| // possibility for enhancement is the use of SplFixedArray -> http://php.net/manual/de/class.splfixedarray.php | ||
| $worlds = array(); | ||
| $repo = $this->getDoctrine() | ||
| ->getRepository('SkamanderBenchmarkBundle:World'); | ||
| for ($i = 0; $i < $queries; ++$i) { | ||
| $worlds[] = $repo->find(mt_rand(1, 10000)); | ||
| } | ||
| if ($queries == 1 && !$request->query->has('queries')) { | ||
| $worlds = $worlds[0]; | ||
| } | ||
| return new JsonResponse($worlds); | ||
| } | ||
| public function dbRawAction(Request $request) | ||
| { | ||
| $queries = $request->query->getInt('queries', 1); | ||
| // possibility for enhancement is the use of SplFixedArray -> http://php.net/manual/de/class.splfixedarray.php | ||
| $worlds = array(); | ||
| $conn = $this->get('database_connection'); | ||
| for($i = 0; $i < $queries; ++$i) { | ||
| $worlds[] = $conn->fetchAssoc('SELECT * FROM World WHERE id = ?', array(mt_rand(1, 10000))); | ||
| } | ||
| if ($queries == 1) { | ||
| $worlds = $worlds[0]; | ||
| } | ||
| return new JsonResponse($worlds); | ||
| } | ||
| public function fortunesAction() | ||
| { | ||
| $repo = $this->getDoctrine() | ||
| ->getRepository('SkamanderBenchmarkBundle:Fortune'); | ||
| $fortunes = $repo->findAll(); | ||
| $runtimeFortune = new Fortune(); | ||
| $runtimeFortune->setId(0) | ||
| ->setMessage('Additional fortune added at request time.'); | ||
| $fortunes[] = $runtimeFortune; | ||
| usort($fortunes, function($left, $right) { | ||
| return strcmp($left->message, $right->message); | ||
| }); | ||
| return $this->render("SkamanderBenchmarkBundle:Bench:fortunes.html.twig", [ | ||
| 'fortunes' => $fortunes | ||
| ]); | ||
| } | ||
| public function fortunesPhpAction() | ||
| { | ||
| $repo = $this->getDoctrine() | ||
| ->getRepository('SkamanderBenchmarkBundle:Fortune'); | ||
| $fortunes = $repo->findAll(); | ||
| $runtimeFortune = new Fortune(); | ||
| $runtimeFortune->setId(0) | ||
| ->setMessage('Additional fortune added at request time.'); | ||
| $fortunes[] = $runtimeFortune; | ||
| usort($fortunes, function($left, $right) { | ||
| return strcmp($left->message, $right->message); | ||
| }); | ||
| return $this->render("SkamanderBenchmarkBundle:Bench:fortunes.html.php", [ | ||
| 'fortunes' => $fortunes | ||
| ]); | ||
| } | ||
| public function fortunesRawAction() | ||
| { | ||
| $repo = $this->getDoctrine() | ||
| ->getRepository('SkamanderBenchmarkBundle:Fortune'); | ||
| $fortunes = $repo->findAll(); | ||
| $runtimeFortune = new Fortune(); | ||
| $runtimeFortune->setId(0) | ||
| ->setMessage('Additional fortune added at request time.'); | ||
| $fortunes[] = $runtimeFortune; | ||
| usort($fortunes, function($left, $right) { | ||
| return strcmp($left->message, $right->message); | ||
| }); | ||
| // This is not the symfony way to work with templates! It's implemented to show users | ||
| // who don't want to use template engines (like twig), or template sugar (like the slots etc. | ||
| // from symfony 2), because in their opinion already built-in php constructs like foreach + | ||
| // if else + include etc. are enough, that the performance impact should be neglectable, and | ||
| // that the advantages outweigh the disadvantages (performance). | ||
| $title = 'Fortunes'; | ||
| ob_start(); | ||
| include __DIR__ . '/../Resources/views/Bench/raw/content.php'; | ||
| $response = ob_get_clean(); | ||
| return new Response($response); | ||
| } | ||
| } |
| @@ -0,0 +1,69 @@ | ||
| <?php | ||
| namespace Skamander\BenchmarkBundle\Entity; | ||
| use Doctrine\ORM\Mapping as ORM; | ||
| /** | ||
| * @ORM\Entity | ||
| * @ORM\Table(name="Fortune") | ||
| */ | ||
| class Fortune | ||
| { | ||
| /** | ||
| * @ORM\Id | ||
| * @ORM\Column(type="integer") | ||
| */ | ||
| public $id; | ||
| /** | ||
| * @ORM\Column(type="string") | ||
| */ | ||
| public $message; | ||
| /** | ||
| * Set id | ||
| * | ||
| * @param integer $id | ||
| * @return Fortune | ||
| */ | ||
| public function setId($id) | ||
| { | ||
| $this->id = $id; | ||
| return $this; | ||
| } | ||
| /** | ||
| * Get id | ||
| * | ||
| * @return integer | ||
| */ | ||
| public function getId() | ||
| { | ||
| return $this->id; | ||
| } | ||
| /** | ||
| * Set message | ||
| * | ||
| * @param string $message | ||
| * @return Fortune | ||
| */ | ||
| public function setMessage($message) | ||
| { | ||
| $this->message = $message; | ||
| return $this; | ||
| } | ||
| /** | ||
| * Get message | ||
| * | ||
| * @return string | ||
| */ | ||
| public function getMessage() | ||
| { | ||
| return $this->message; | ||
| } | ||
| } |
| @@ -0,0 +1,85 @@ | ||
| <?php | ||
| namespace Skamander\BenchmarkBundle\Entity; | ||
| use Doctrine\ORM\Mapping as ORM; | ||
| /** | ||
| * @ORM\Entity | ||
| * @ORM\Table(name="World") | ||
| */ | ||
| class World /* implements JsonSerializable */ | ||
| { | ||
| /** | ||
| * @ORM\Id | ||
| * @ORM\Column(type="integer") | ||
| */ | ||
| public $id; | ||
| /** | ||
| * @ORM\Column(type="integer") | ||
| */ | ||
| public $randomNumber; | ||
| /** | ||
| * Although this is a benchmark, implemented this so | ||
| * we don't have to make our members public. :) | ||
| * | ||
| * @return array | ||
| */ | ||
| /* | ||
| public function jsonSerialize() { | ||
| return [ | ||
| 'id' => $this->id, | ||
| 'randomNumber' => $this->randomNumber | ||
| ]; | ||
| } | ||
| */ | ||
| /** | ||
| * Set id | ||
| * | ||
| * @param integer $id | ||
| * @return World | ||
| */ | ||
| public function setId($id) | ||
| { | ||
| $this->id = $id; | ||
| return $this; | ||
| } | ||
| /** | ||
| * Get id | ||
| * | ||
| * @return integer | ||
| */ | ||
| public function getId() | ||
| { | ||
| return $this->id; | ||
| } | ||
| /** | ||
| * Set randomNumber | ||
| * | ||
| * @param integer $randomNumber | ||
| * @return World | ||
| */ | ||
| public function setRandomNumber($randomNumber) | ||
| { | ||
| $this->randomNumber = $randomNumber; | ||
| return $this; | ||
| } | ||
| /** | ||
| * Get randomNumber | ||
| * | ||
| * @return integer | ||
| */ | ||
| public function getRandomNumber() | ||
| { | ||
| return $this->randomNumber; | ||
| } | ||
| } |
| @@ -0,0 +1,18 @@ | ||
| <?php $view->extend('SkamanderBenchmarkBundle::layout.html.php') ?> | ||
| <?php $view['slots']->set('title', 'Fortunes') ?> | ||
| <?php $view['slots']->start('content') ?> | ||
| <table> | ||
| <tr> | ||
| <th>id</th> | ||
| <th>message</th> | ||
| </tr> | ||
| <?php foreach($fortunes as $fortune): ?> | ||
| <tr> | ||
| <td><?php echo $view->escape($fortune->id); ?></td> | ||
| <td><?php echo $view->escape($fortune->message); ?></td> | ||
| </tr> | ||
| <?php endforeach; ?> | ||
| </table> | ||
| <?php $view['slots']->stop() ?> |
| @@ -0,0 +1,20 @@ | ||
| {% extends "SkamanderBenchmarkBundle::layout.html.twig" %} | ||
| {% block title "Fortunes" %} | ||
| {% block content %} | ||
| <table> | ||
| <tr> | ||
| <th>id</th> | ||
| <th>message</th> | ||
| </tr> | ||
| {% for fortune in fortunes %} | ||
| <tr> | ||
| <td>{{ fortune.id }}</td> | ||
| <td>{{ fortune.message }}</td> | ||
| </tr> | ||
| {% endfor %} | ||
| </table> | ||
| {% endblock %} |
| @@ -0,0 +1,5 @@ | ||
| <?php include 'template_header.php'; ?> | ||
| <?php include 'fortunes.php'; ?> | ||
| <?php include 'template_footer.php'; ?> |
| @@ -0,0 +1,14 @@ | ||
| <table> | ||
| <tr> | ||
| <th>id</th> | ||
| <th>message</th> | ||
| </tr> | ||
| <?php foreach($fortunes as $fortune): ?> | ||
| <tr> | ||
| <td><?php echo $fortune->id; ?></td> | ||
| <td><?php echo htmlspecialchars($fortune->message, ENT_QUOTES, "UTF-8", false); ?></td> | ||
| </tr> | ||
| <?php endforeach; ?> | ||
| </table> |
| @@ -0,0 +1,2 @@ | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,6 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <title><?php echo $title ?></title> | ||
| </head> | ||
| <body> |
| @@ -0,0 +1,7 @@ | ||
| <?php $view->extend('::base.html.php') ?> | ||
| <?php $view['slots']->set('title', 'Fortunes') ?> | ||
| <?php $view['slots']->start('body') ?> | ||
| <?php $view['slots']->output('content') ?> | ||
| <?php $view['slots']->stop() ?> |
| @@ -0,0 +1,7 @@ | ||
| {% extends '::base.html.twig' %} | ||
| {% block title 'Fortunes' %} | ||
| {% block body %} | ||
| {% block content %}{% endblock %} | ||
| {% endblock %} |
| @@ -0,0 +1,9 @@ | ||
| <?php | ||
| namespace Skamander\BenchmarkBundle; | ||
| use Symfony\Component\HttpKernel\Bundle\Bundle; | ||
| class SkamanderBenchmarkBundle extends Bundle | ||
| { | ||
| } |
| @@ -0,0 +1,48 @@ | ||
| # Use the front controller as index file. It serves as fallback solution when | ||
| # every other rewrite/redirect fails (e.g. in an aliased environment without | ||
| # mod_rewrite). Additionally, this reduces the matching process for the | ||
| # startpage (path "/") because otherwise Apache will apply the rewritting rules | ||
| # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). | ||
| DirectoryIndex app.php | ||
| <IfModule mod_rewrite.c> | ||
| RewriteEngine On | ||
| # Redirect to URI without front controller to prevent duplicate content | ||
| # (with and without `/app.php`). Only do this redirect on the initial | ||
| # rewrite by Apache and not on subsequent cycles. Otherwise we would get an | ||
| # endless redirect loop (request -> rewrite to front controller -> | ||
| # redirect -> request -> ...). | ||
| # So in case you get a "too many redirects" error or you always get redirected | ||
| # to the startpage because your Apache does not expose the REDIRECT_STATUS | ||
| # environment variable, you have 2 choices: | ||
| # - disable this feature by commenting the following 2 lines or | ||
| # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the | ||
| # following RewriteCond (best solution) | ||
| RewriteCond %{ENV:REDIRECT_STATUS} ^$ | ||
| RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] | ||
| # If the requested filename exists, simply serve it. | ||
| # We only want to let Apache serve files and not directories. | ||
| RewriteCond %{REQUEST_FILENAME} -f | ||
| RewriteRule .? - [L] | ||
| # The following rewrites all other queries to the front controller. The | ||
| # condition ensures that if you are using Apache aliases to do mass virtual | ||
| # hosting, the base path will be prepended to allow proper resolution of the | ||
| # app.php file; it will work in non-aliased environments as well, providing | ||
| # a safe, one-size fits all solution. | ||
| RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ | ||
| RewriteRule ^(.*) - [E=BASE:%1] | ||
| RewriteRule .? %{ENV:BASE}app.php [L] | ||
| </IfModule> | ||
| <IfModule !mod_rewrite.c> | ||
| <IfModule mod_alias.c> | ||
| # When mod_rewrite is not available, we instruct a temporary redirect of | ||
| # the startpage to the front controller explicitly so that the website | ||
| # and the generated links can still be used. | ||
| RedirectMatch 302 ^/$ /app.php/ | ||
| # RedirectTemp cannot be used instead | ||
| </IfModule> | ||
| </IfModule> |
| @@ -0,0 +1,22 @@ | ||
| <?php | ||
| use Symfony\Component\HttpFoundation\Request; | ||
| $loader = require_once __DIR__.'/../app/bootstrap.php.cache'; | ||
| require_once __DIR__.'/../app/AppKernel.php'; | ||
| // FrameworkBenchmark rules prohibit using AppCache, | ||
| // specifically every request for the JSON test type | ||
| // must be handled separately | ||
| // | ||
| // require_once __DIR__.'/../app/AppCache.php'; | ||
| $kernel = new AppKernel('prod', false); | ||
| $kernel->loadClassCache(); | ||
| //$kernel = new AppCache($kernel); | ||
| Request::enableHttpMethodParameterOverride(); | ||
| $request = Request::createFromGlobals(); | ||
| $response = $kernel->handle($request); | ||
| $response->send(); | ||
| $kernel->terminate($request, $response); |
| @@ -0,0 +1,28 @@ | ||
| <?php | ||
| use Symfony\Component\HttpFoundation\Request; | ||
| // If you don't want to setup permissions the proper way, just uncomment the following PHP line | ||
| // read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information | ||
| //umask(0000); | ||
| // This check prevents access to debug front controllers that are deployed by accident to production servers. | ||
| // Feel free to remove this, extend it, or make something more sophisticated. | ||
| if (isset($_SERVER['HTTP_CLIENT_IP']) | ||
| || isset($_SERVER['HTTP_X_FORWARDED_FOR']) | ||
| || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) | ||
| ) { | ||
| header('HTTP/1.0 403 Forbidden'); | ||
| exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); | ||
| } | ||
| $loader = require_once __DIR__.'/../app/bootstrap.php.cache'; | ||
| require_once __DIR__.'/../app/AppKernel.php'; | ||
| $kernel = new AppKernel('dev', true); | ||
| $kernel->loadClassCache(); | ||
| Request::enableHttpMethodParameterOverride(); | ||
| $request = Request::createFromGlobals(); | ||
| $response = $kernel->handle($request); | ||
| $response->send(); | ||
| $kernel->terminate($request, $response); |
| @@ -0,0 +1,101 @@ | ||
| body { | ||
| font-size: 14px; | ||
| font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| } | ||
| h1.title { | ||
| font-size: 45px; | ||
| padding-bottom: 30px; | ||
| } | ||
| .sf-reset h2 { | ||
| font-weight: bold; | ||
| color: #FFFFFF; | ||
| /* Font is duplicated of body (sans-serif) */ | ||
| font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| margin-bottom: 10px; | ||
| background-color: #aacd4e; | ||
| padding: 2px 4px; | ||
| display: inline-block; | ||
| text-transform: uppercase; | ||
| } | ||
| p { | ||
| line-height: 20px; | ||
| padding-bottom: 20px; | ||
| } | ||
| ul#demo-list a { | ||
| background: url(../images/blue-arrow.png) no-repeat right 6px; | ||
| padding-right: 10px; | ||
| margin-right: 30px; | ||
| } | ||
| #symfony-header { | ||
| position: relative; | ||
| padding: 30px 30px 20px 30px; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome { | ||
| overflow: hidden; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome > div { | ||
| background-color: whitesmoke; | ||
| float: left; | ||
| width: 240px; | ||
| margin-right: 14px; | ||
| text-align: center; | ||
| padding: 26px 20px; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome > div.block-demo { | ||
| margin-right: 0; | ||
| } | ||
| .sf-reset .symfony-blocks-welcome .illustration { | ||
| padding-bottom: 20px; | ||
| } | ||
| .sf-reset .symfony-blocks-help { | ||
| overflow: hidden; | ||
| } | ||
| .sf-reset .symfony-blocks-help { | ||
| margin-top: 30px; | ||
| padding: 18px; | ||
| border: 1px solid #E6E6E6; | ||
| } | ||
| .sf-reset .symfony-blocks-help > div { | ||
| width: 254px; | ||
| float: left; | ||
| } | ||
| .flash-message { | ||
| padding: 10px; | ||
| margin: 5px; | ||
| margin-top: 15px; | ||
| background-color: #ffe; | ||
| } | ||
| .sf-reset .error { | ||
| color: red; | ||
| } | ||
| #login label, #contact_form label { | ||
| display: block; | ||
| float: left; | ||
| width: 90px; | ||
| } | ||
| .sf-reset ul#menu { | ||
| float: right; | ||
| margin-bottom: 20px; | ||
| padding-left: 0; | ||
| } | ||
| .sf-reset #menu li { | ||
| padding-left: 0; | ||
| margin-right: 10px; | ||
| display: inline; | ||
| } | ||
| .sf-reset a, | ||
| .sf-reset li a { | ||
| color: #08C; | ||
| text-decoration: none; | ||
| } | ||
| .sf-reset a:hover, | ||
| .sf-reset li a:hover { | ||
| color: #08C; | ||
| text-decoration: underline; | ||
| } | ||
| .sf-reset .symfony-content pre { | ||
| white-space: pre; | ||
| font-family: monospace; | ||
| } |
| @@ -0,0 +1,150 @@ | ||
| /* | ||
| 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-reset html{color:#000;background:#FFF;}.sf-reset body,.sf-reset div,.sf-reset dl,.sf-reset dt,.sf-reset dd,.sf-reset ul,.sf-reset ol,.sf-reset li,.sf-reset h1,.sf-reset h2,.sf-reset h3,.sf-reset h4,.sf-reset h5,.sf-reset h6,.sf-reset pre,.sf-reset code,.sf-reset form,.sf-reset fieldset,.sf-reset legend,.sf-reset input,.sf-reset textarea,.sf-reset p,.sf-reset blockquote,.sf-reset th,.sf-reset td{margin:0;padding:0;}.sf-reset table{border-collapse:collapse;border-spacing:0;}.sf-reset fieldset,.sf-reset img{border:0;}.sf-reset address,.sf-reset caption,.sf-reset cite,.sf-reset code,.sf-reset dfn,.sf-reset em,.sf-reset strong,.sf-reset th,.sf-reset var{font-style:normal;font-weight:normal;}.sf-reset li{list-style:none;}.sf-reset caption,.sf-reset th{text-align:left;}.sf-reset h1,.sf-reset h2,.sf-reset h3,.sf-reset h4,.sf-reset h5,.sf-reset h6{font-size:100%;font-weight:normal;}.sf-reset q:before,.sf-reset q:after{content:'';}.sf-reset abbr,.sf-reset acronym{border:0;font-variant:normal;}.sf-reset sup{vertical-align:text-top;}.sf-reset sub{vertical-align:text-bottom;}.sf-reset input,.sf-reset textarea,.sf-reset select{font-family:inherit;font-size:inherit;font-weight:inherit;}.sf-reset input,.sf-reset textarea,.sf-reset select{*font-size:100%;}.sf-reset legend{color:#000;} | ||
| .sf-reset html, | ||
| .sf-reset body { | ||
| width: 100%; | ||
| min-height: 100%; | ||
| _height: 100%; | ||
| margin: 0; | ||
| padding: 0; | ||
| } | ||
| .sf-reset body { | ||
| font: 1em "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| text-align: left; | ||
| background-color: #efefef; | ||
| } | ||
| .sf-reset abbr { | ||
| border-bottom: 1px dotted #000; | ||
| cursor: help; | ||
| } | ||
| .sf-reset p { | ||
| font-size: 14px; | ||
| line-height: 20px; | ||
| padding-bottom: 20px; | ||
| } | ||
| .sf-reset strong { | ||
| color: #313131; | ||
| font-weight: bold; | ||
| } | ||
| .sf-reset a { | ||
| color: #6c6159; | ||
| } | ||
| .sf-reset a img { | ||
| border: none; | ||
| } | ||
| .sf-reset a:hover { | ||
| text-decoration: underline; | ||
| } | ||
| .sf-reset em { | ||
| font-style: italic; | ||
| } | ||
| .sf-reset h2, | ||
| .sf-reset h3 { | ||
| font-weight: bold; | ||
| } | ||
| .sf-reset h1 { | ||
| font-family: Georgia, "Times New Roman", Times, serif; | ||
| font-size: 20px; | ||
| color: #313131; | ||
| word-break: break-all; | ||
| } | ||
| .sf-reset li { | ||
| padding-bottom: 10px; | ||
| } | ||
| .sf-reset .block { | ||
| -moz-border-radius: 16px; | ||
| -webkit-border-radius: 16px; | ||
| border-radius: 16px; | ||
| margin-bottom: 20px; | ||
| background-color: #FFFFFF; | ||
| border: 1px solid #dfdfdf; | ||
| padding: 40px 50px; | ||
| } | ||
| .sf-reset h2 { | ||
| font-size: 16px; | ||
| font-family: Arial, Helvetica, sans-serif; | ||
| } | ||
| .sf-reset li a { | ||
| background: none; | ||
| color: #868686; | ||
| text-decoration: none; | ||
| } | ||
| .sf-reset li a:hover { | ||
| background: none; | ||
| color: #313131; | ||
| text-decoration: underline; | ||
| } | ||
| .sf-reset ol { | ||
| padding: 10px 0; | ||
| } | ||
| .sf-reset ol li { | ||
| list-style: decimal; | ||
| margin-left: 20px; | ||
| padding: 2px; | ||
| padding-bottom: 20px; | ||
| } | ||
| .sf-reset ol ol li { | ||
| list-style-position: inside; | ||
| margin-left: 0; | ||
| white-space: nowrap; | ||
| font-size: 12px; | ||
| padding-bottom: 0; | ||
| } | ||
| .sf-reset li .selected { | ||
| background-color: #ffd; | ||
| } | ||
| .sf-button { | ||
| display: -moz-inline-box; | ||
| display: inline-block; | ||
| text-align: center; | ||
| vertical-align: middle; | ||
| border: 0; | ||
| background: transparent none; | ||
| text-transform: uppercase; | ||
| cursor: pointer; | ||
| font: bold 11px Arial, Helvetica, sans-serif; | ||
| } | ||
| .sf-button span { | ||
| text-decoration: none; | ||
| display: block; | ||
| height: 28px; | ||
| float: left; | ||
| } | ||
| .sf-button .border-l { | ||
| text-decoration: none; | ||
| display: block; | ||
| height: 28px; | ||
| float: left; | ||
| padding: 0 0 0 7px; | ||
| background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUeNpiPHnyJAMakARiByDWYEGT8ADiYGVlZStubm5xlv///4MEQYoKZGRkQkRERLRYWVl5wYJQyXBZWdkwCQkJUxAHKgaWlAHSLqKiosb//v1DsYMFKGCvoqJiDmQzwXTAJYECulxcXNLoumCSoszMzDzoumDGghQwYZUECWIzkrAkSIIGOmlkLI10AiX//P379x8jIyMTNmPf/v79+ysLCwsvuiQoNi5//fr1Kch4dAyS3P/gwYMTQBP+wxwHw0xA4gkQ73v9+vUZdJ2w1Lf82bNn4iCHCQoKasHsZw4ODgbRIL8c+/Lly5M3b978Y2dn5wC6npkFLXnsAOKLjx49AmUHLYAAAwBoQubG016R5wAAAABJRU5ErkJggg==) no-repeat top left; | ||
| } | ||
| .sf-button .border-r { | ||
| padding: 0 7px 0 0; | ||
| background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR1JREFUeNpiPHnyZCMDA8MNID5gZmb2nAEJMH7//v3N169fX969e/cYkL8WqGAHXPLv37//QYzfv39/fvPmzbUnT56sAXInmJub/2H5/x8sx8DCwsIrISFhDmQyPX78+CmQXs70798/BmQsKipqBNTgdvz4cWkmkE5kDATMioqKZkCFdiwg1eiAi4tLGqhQF24nMmBmZuYEigth1QkEbEBxTlySYPvJkwSJ00AnjYylgU6gxB8g/oFVEphkvgLF32KNMmCCewYUv4qhEyj47+HDhyeBzIMYOoEp8CxQw56wsLAncJ1//vz5/P79+2svX74EJc2V4BT58+fPd8CE/QKYHMGJOiIiAp6oWW7evDkNSF8DZYfIyEiU7AAQYACJ2vxVdJW4eQAAAABJRU5ErkJggg==) right top no-repeat; | ||
| } | ||
| .sf-button .btn-bg { | ||
| padding: 0px 14px; | ||
| color: #636363; | ||
| line-height: 28px; | ||
| background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAYAAACgXdXMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiPnny5EKGf//+/Wf6//8/A4QAcrGzKCZwGc9sa2urBBBgAIbDUoYVp9lmAAAAAElFTkSuQmCC) repeat-x top left; | ||
| } | ||
| .sf-button:hover .border-l, | ||
| .sf-button-selected .border-l { | ||
| background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR9JREFUeNpi/P//PwMyOHfunDqQSgNiexZkibNnzxYBqZa3HOs5v7PcYQBLnjlzhg1IbfzIdsTjA/t+ht9Mr8GKwZL//v3r+sB+0OMN+zqIEf8gFMvJkyd1gXTOa9YNDP//otrPAtSV/Jp9HfPff78Z0AEL0LUeXxivMfxD0wXTqfjj/2ugkf+wSrL9/YtpJEyS4S8WI5Ek/+GR/POPFjr//cenE6/kP9q4Fo/kr39/mdj+M/zFkGQCSj5i+ccPjLJ/GBgkuYOHQR1sNDpmAkb2LBmWwL///zKCIxwZM0VHR18G6p4uxeLLAA4tJMwEshiou1iMxXaHLGswA+t/YbhORuQUv2DBAnCifvxzI+enP3dQJUFg/vz5sOzgBBBgAPxX9j0YnH4JAAAAAElFTkSuQmCC) no-repeat top left; | ||
| } | ||
| .sf-button:hover .border-r, | ||
| .sf-button-selected .border-r { | ||
| background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT5JREFUeNpiPHv27BkGBoaDQDzLyMjoJgMSYHrM3WX8hn1d0f///88DFRYhSzIuv2X5H8Rg/SfKIPDTkYH/l80OINffxMTkF9O/f/8ZQPgnwyuGl+wrGd6x7vf49+9fO9jYf3+Bkkj4NesmBqAV+SdPntQC6vzHgIz//gOawbqOGchOxtAJwp8Zr4F0e7D8/fuPAR38/P8eZIo0yz8skv8YvoIk+YE6/zNgAyD7sRqLkPzzjxY6/+HS+R+fTkZ8djLh08lCUCcuSWawJGbwMTGwg7zyBatX2Bj5QZKPsBrLzaICktzN8g/NWEYGZgYZjoC/wMiei5FMpFh8QPSU6Ojoy3Cd7EwiDBJsDgxiLNY7gLrKQGIsHAxSDHxAO2TZ/b8D+TVxcXF9MCtYtLiKLgDpfUDVsxITE1GyA0CAAQA2E/N8VuHyAAAAAABJRU5ErkJggg==) right top no-repeat; | ||
| } | ||
| .sf-button:hover .btn-bg, | ||
| .sf-button-selected .btn-bg { | ||
| color: #FFFFFF; | ||
| text-shadow:0 1px 1px #6b9311; | ||
| background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpiPnv2LNMdvlymf///M/37B8R/QfQ/MP33L4j+B6Qh7L9//sHpf2h8MA1V+w/KRjYLaDaLCU8vQIABAFO3TxZriO4yAAAAAElFTkSuQmCC) repeat-x top left; | ||
| } |
| @@ -0,0 +1,108 @@ | ||
| .sf-reset .traces { | ||
| padding-bottom: 14px; | ||
| } | ||
| .sf-reset .traces li { | ||
| font-size: 12px; | ||
| color: #868686; | ||
| padding: 5px 4px; | ||
| list-style-type: decimal; | ||
| margin-left: 20px; | ||
| white-space: break-word; | ||
| } | ||
| .sf-reset #logs .traces li.error { | ||
| font-style: normal; | ||
| color: #AA3333; | ||
| background: #f9ecec; | ||
| } | ||
| .sf-reset #logs .traces li.warning { | ||
| font-style: normal; | ||
| background: #ffcc00; | ||
| } | ||
| /* fix for Opera not liking empty <li> */ | ||
| .sf-reset .traces li:after { | ||
| content: "\00A0"; | ||
| } | ||
| .sf-reset .trace { | ||
| border: 1px solid #D3D3D3; | ||
| padding: 10px; | ||
| overflow: auto; | ||
| margin: 10px 0 20px; | ||
| } | ||
| .sf-reset .block-exception { | ||
| -moz-border-radius: 16px; | ||
| -webkit-border-radius: 16px; | ||
| border-radius: 16px; | ||
| margin-bottom: 20px; | ||
| background-color: #f6f6f6; | ||
| border: 1px solid #dfdfdf; | ||
| padding: 30px 28px; | ||
| word-wrap: break-word; | ||
| overflow: hidden; | ||
| } | ||
| .sf-reset .block-exception div { | ||
| color: #313131; | ||
| font-size: 10px; | ||
| } | ||
| .sf-reset .block-exception-detected .illustration-exception, | ||
| .sf-reset .block-exception-detected .text-exception { | ||
| float: left; | ||
| } | ||
| .sf-reset .block-exception-detected .illustration-exception { | ||
| width: 152px; | ||
| } | ||
| .sf-reset .block-exception-detected .text-exception { | ||
| width: 670px; | ||
| padding: 30px 44px 24px 46px; | ||
| position: relative; | ||
| } | ||
| .sf-reset .text-exception .open-quote, | ||
| .sf-reset .text-exception .close-quote { | ||
| position: absolute; | ||
| } | ||
| .sf-reset .open-quote { | ||
| top: 0; | ||
| left: 0; | ||
| } | ||
| .sf-reset .close-quote { | ||
| bottom: 0; | ||
| right: 50px; | ||
| } | ||
| .sf-reset .block-exception p { | ||
| font-family: Arial, Helvetica, sans-serif; | ||
| } | ||
| .sf-reset .block-exception p a, | ||
| .sf-reset .block-exception p a:hover { | ||
| color: #565656; | ||
| } | ||
| .sf-reset .logs h2 { | ||
| float: left; | ||
| width: 654px; | ||
| } | ||
| .sf-reset .error-count { | ||
| float: right; | ||
| width: 170px; | ||
| text-align: right; | ||
| } | ||
| .sf-reset .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-reset .toggle { | ||
| vertical-align: middle; | ||
| } | ||
| .sf-reset .linked ul, | ||
| .sf-reset .linked li { | ||
| display: inline; | ||
| } | ||
| .sf-reset #output-content { | ||
| color: #000; | ||
| font-size: 12px; | ||
| } |
| @@ -0,0 +1,72 @@ | ||
| html { | ||
| background: #eee; | ||
| } | ||
| body { | ||
| font: 11px Verdana, Arial, sans-serif; | ||
| color: #333; | ||
| } | ||
| .sf-reset, .sf-reset .block, .sf-reset #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: 195px; | ||
| font-size: 12px; | ||
| border: 1px solid #dadada; | ||
| background: #fff url(data:image/gif;base64,R0lGODlhAQAFAKIAAPX19e/v7/39/fr6+urq6gAAAAAAAAAAACH5BAAAAAAALAAAAAABAAUAAAMESAEjCQA7) repeat-x left top; | ||
| padding: 5px 6px; | ||
| color: #565656; | ||
| } | ||
| .search input[type="search"] { | ||
| -webkit-appearance: textfield; | ||
| } | ||
| #content { | ||
| width: 970px; | ||
| margin: 0 auto; | ||
| } | ||
| pre { | ||
| white-space: normal; | ||
| font-family: Arial, Helvetica, sans-serif; | ||
| } | ||
| pre.xdebug-var-dump{ | ||
| white-space: pre; | ||
| font-family: monospace; | ||
| } |
| @@ -0,0 +1,73 @@ | ||
| @import url("install.css"); | ||
| .step h1 { | ||
| margin-top: 10px; | ||
| margin-bottom: 30px; | ||
| font-size: 26px; | ||
| } | ||
| .step p { | ||
| line-height: 20px; | ||
| padding-bottom: 20px; | ||
| } | ||
| .step .symfony-block-steps span { | ||
| display: inline-block; | ||
| padding: 2px 3px; | ||
| font-size: 11px; | ||
| line-height: 15px; | ||
| color: #868686; | ||
| font-weight: bold; | ||
| text-transform: uppercase; | ||
| } | ||
| .step .symfony-block-steps span.selected { | ||
| background-color: #aacd4e; | ||
| color: #FFFFFF; | ||
| } | ||
| .step .symfony-form-row { | ||
| padding-bottom: 40px; | ||
| } | ||
| .step .symfony-form-column { | ||
| width: 430px; | ||
| float: left; | ||
| } | ||
| .step .symfony-form-footer { | ||
| padding-top: 20px; | ||
| clear: both; | ||
| } | ||
| .step .symfony-form-field { | ||
| height: 20px; | ||
| } | ||
| .step .symfony-form-row label { | ||
| display: block; | ||
| padding-bottom: 8px; | ||
| } | ||
| .step .symfony-form-field input[type=text], | ||
| .step .symfony-form-field input[type=password], | ||
| .step .symfony-form-field textarea, | ||
| .step .symfony-form-field select { | ||
| font-size: 13px; | ||
| color: #565656; | ||
| width: 200px; | ||
| } | ||
| .step .symfony-form-field input[type=text], | ||
| .step .symfony-form-field input[type=password], | ||
| .step .symfony-form-field textarea { | ||
| border: 1px solid #dadada; | ||
| background: #FFFFFF url(../../../framework/images/input_bg.gif) repeat-x left top; | ||
| width: 194px; | ||
| padding: 5px 6px; | ||
| } | ||
| .step .symfony-form-errors ul { | ||
| padding: 0; | ||
| } | ||
| .step .symfony-form-errors li { | ||
| background: url(../images/notification.gif) no-repeat left 6px; | ||
| font-size: 11px; | ||
| line-height: 16px; | ||
| color: #759e1a; | ||
| padding: 10px 25px; | ||
| } | ||
| .step .symfony-configuration { | ||
| margin: 10px 0; | ||
| width: 100%; | ||
| height: 240px; | ||
| } |
| @@ -0,0 +1,74 @@ | ||
| body { | ||
| font-size: 14px; | ||
| font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| } | ||
| .sf-reset h1.title { | ||
| font-size: 45px; | ||
| padding-bottom: 30px; | ||
| } | ||
| .sf-reset h2 { | ||
| font-weight: bold; | ||
| color: #FFFFFF; | ||
| /* Font is reset to sans-serif (like body) */ | ||
| font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| margin-bottom: 10px; | ||
| background-color: #aacd4e; | ||
| padding: 2px 4px; | ||
| display: inline-block; | ||
| text-transform: uppercase; | ||
| } | ||
| .sf-reset ul a, | ||
| .sf-reset ul a:hover { | ||
| background: url(../images/blue-arrow.png) no-repeat right 6px; | ||
| padding-right: 10px; | ||
| } | ||
| .sf-reset ul, ol { | ||
| padding-left: 20px; | ||
| } | ||
| .sf-reset li { | ||
| padding-bottom: 18px; | ||
| } | ||
| .sf-reset ol li { | ||
| list-style-type: decimal; | ||
| } | ||
| .sf-reset ul li { | ||
| list-style-type: none; | ||
| } | ||
| .sf-reset .symfony-blocks-install { | ||
| overflow: hidden; | ||
| } | ||
| .sf-reset .symfony-install-continue { | ||
| font-size: 0.95em; | ||
| padding-left: 0; | ||
| } | ||
| .sf-reset .symfony-install-continue li { | ||
| padding-bottom: 10px; | ||
| } | ||
| .sf-reset .ok { | ||
| color: #fff; | ||
| font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; | ||
| background-color: #6d6; | ||
| padding: 10px; | ||
| margin-bottom: 20px; | ||
| } | ||
| .sf-reset .ko { | ||
| background-color: #d66; | ||
| } | ||
| .version { | ||
| text-align: right; | ||
| font-size: 10px; | ||
| margin-right: 20px; | ||
| } | ||
| .sf-reset a, | ||
| .sf-reset li a { | ||
| color: #08C; | ||
| text-decoration: none; | ||
| } | ||
| .sf-reset a:hover, | ||
| .sf-reset li a:hover { | ||
| color: #08C; | ||
| text-decoration: underline; | ||
| } | ||
| .sf-reset textarea { | ||
| padding: 7px; | ||
| } |
| @@ -0,0 +1,124 @@ | ||
| <?php | ||
| if (!isset($_SERVER['HTTP_HOST'])) { | ||
| exit('This script cannot be run from the CLI. Run it from a browser.'); | ||
| } | ||
| if (!in_array(@$_SERVER['REMOTE_ADDR'], array( | ||
| '127.0.0.1', | ||
| '::1', | ||
| ))) { | ||
| header('HTTP/1.0 403 Forbidden'); | ||
| exit('This script is only accessible from localhost.'); | ||
| } | ||
| require_once dirname(__FILE__).'/../app/SymfonyRequirements.php'; | ||
| $symfonyRequirements = new SymfonyRequirements(); | ||
| $majorProblems = $symfonyRequirements->getFailedRequirements(); | ||
| $minorProblems = $symfonyRequirements->getFailedRecommendations(); | ||
| ?> | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> | ||
| <meta name="robots" content="noindex,nofollow" /> | ||
| <title>Symfony Configuration</title> | ||
| <link rel="stylesheet" href="bundles/framework/css/structure.css" media="all" /> | ||
| <link rel="stylesheet" href="bundles/framework/css/body.css" media="all" /> | ||
| <link rel="stylesheet" href="bundles/sensiodistribution/webconfigurator/css/install.css" media="all" /> | ||
| </head> | ||
| <body> | ||
| <div id="content"> | ||
| <div class="header clear-fix"> | ||
| <div class="header-logo"> | ||
| <img src="bundles/framework/images/logo_symfony.png" alt="Symfony" /> | ||
| </div> | ||
| <div class="search"> | ||
| <form method="get" action="http://symfony.com/search"> | ||
| <div class="form-row"> | ||
| <label for="search-id"> | ||
| <img src="bundles/framework/images/grey_magnifier.png" alt="Search on Symfony website" /> | ||
| </label> | ||
| <input name="q" id="search-id" type="search" placeholder="Search on Symfony website" /> | ||
| <button type="submit" class="sf-button"> | ||
| <span class="border-l"> | ||
| <span class="border-r"> | ||
| <span class="btn-bg">OK</span> | ||
| </span> | ||
| </span> | ||
| </button> | ||
| </div> | ||
| </form> | ||
| </div> | ||
| </div> | ||
| <div class="sf-reset"> | ||
| <div class="block"> | ||
| <div class="symfony-block-content"> | ||
| <h1 class="title">Welcome!</h1> | ||
| <p>Welcome to your new Symfony project.</p> | ||
| <p> | ||
| This script will guide you through the basic configuration of your project. | ||
| You can also do the same by editing the ‘<strong>app/config/parameters.yml</strong>’ file directly. | ||
| </p> | ||
| <?php if (count($majorProblems)): ?> | ||
| <h2 class="ko">Major problems</h2> | ||
| <p>Major problems have been detected and <strong>must</strong> be fixed before continuing:</p> | ||
| <ol> | ||
| <?php foreach ($majorProblems as $problem): ?> | ||
| <li><?php echo $problem->getHelpHtml() ?></li> | ||
| <?php endforeach; ?> | ||
| </ol> | ||
| <?php endif; ?> | ||
| <?php if (count($minorProblems)): ?> | ||
| <h2>Recommendations</h2> | ||
| <p> | ||
| <?php if (count($majorProblems)): ?>Additionally, to<?php else: ?>To<?php endif; ?> enhance your Symfony experience, | ||
| it’s recommended that you fix the following: | ||
| </p> | ||
| <ol> | ||
| <?php foreach ($minorProblems as $problem): ?> | ||
| <li><?php echo $problem->getHelpHtml() ?></li> | ||
| <?php endforeach; ?> | ||
| </ol> | ||
| <?php endif; ?> | ||
| <?php if ($symfonyRequirements->hasPhpIniConfigIssue()): ?> | ||
| <p id="phpini">* | ||
| <?php if ($symfonyRequirements->getPhpIniConfigPath()): ?> | ||
| Changes to the <strong>php.ini</strong> file must be done in "<strong><?php echo $symfonyRequirements->getPhpIniConfigPath() ?></strong>". | ||
| <?php else: ?> | ||
| To change settings, create a "<strong>php.ini</strong>". | ||
| <?php endif; ?> | ||
| </p> | ||
| <?php endif; ?> | ||
| <?php if (!count($majorProblems) && !count($minorProblems)): ?> | ||
| <p class="ok">Your configuration looks good to run Symfony.</p> | ||
| <?php endif; ?> | ||
| <ul class="symfony-install-continue"> | ||
| <?php if (!count($majorProblems)): ?> | ||
| <li><a href="app_dev.php/_configurator/">Configure your Symfony Application online</a></li> | ||
| <li><a href="app_dev.php/">Bypass configuration and go to the Welcome page</a></li> | ||
| <?php endif; ?> | ||
| <?php if (count($majorProblems) || count($minorProblems)): ?> | ||
| <li><a href="config.php">Re-check configuration</a></li> | ||
| <?php endif; ?> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <div class="version">Symfony Standard Edition</div> | ||
| </div> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,4 @@ | ||
| # www.robotstxt.org/ | ||
| # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 | ||
| User-agent: * |