@@ -0,0 +1,268 @@
Symfony Standard Edition Upgrade
================================

From Symfony 2.0 to Symfony 2.1
-------------------------------

### Project Dependencies

As of Symfony 2.1, project dependencies are managed by
[Composer](http://getcomposer.org/):

* The `bin/vendors` script can be removed as `composer.phar` does all the work
now (it is recommended to install it globally on your machine).

* The `deps` file need to be replaced with the `composer.json` one.

* The `composer.lock` is the equivalent of the generated `deps.lock` file and
it is automatically generated by Composer.

Download the default
[`composer.json`](https://raw.github.com/symfony/symfony-standard/2.1/composer.json)
and
[`composer.lock`](https://raw.github.com/symfony/symfony-standard/2.1/composer.lock)
files for Symfony 2.1 and put them into the main directory of your project. If
you have customized your `deps` file, move the added dependencies to the
`composer.json` file (many bundles and PHP libraries are already available as
Composer packages -- search for them on [Packagist](http://packagist.org/)).

Remove your current `vendor` directory.

Finally, run Composer:

$ composer.phar install

Note: You must complete the upgrade steps below so composer can successfully generate the autoload files.

### `app/autoload.php`

The default `autoload.php` reads as follows (it has been simplified a lot as
autoloading for libraries and bundles declared in your `composer.json` file is
automatically managed by the Composer autoloader):

<?php

use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = include __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';

$loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
}

AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

return $loader;

### `app/config/config.yml`

The `framework.charset` setting must be removed. If you are not using `UTF-8`
for your application, override the `getCharset()` method in your `AppKernel`
class instead:

class AppKernel extends Kernel
{
public function getCharset()
{
return 'ISO-8859-1';
}

// ...
}

You might want to add the new `strict_requirements` parameter to
`framework.router` (it avoids fatal errors in the production environment when
a link cannot be generated):

framework:
router:
strict_requirements: "%kernel.debug%"

You can even disable the requirements check on production with `null` as you should
know that the parameters for URL generation always pass the requirements, e.g. by
validating them beforehand. This additionally enhances performance. See
[config_prod.yml](https://github.com/symfony/symfony-standard/blob/master/app/config/config_prod.yml).

The `default_locale` parameter is now a setting of the main `framework`
configuration (it was under the `framework.session` in 2.0):

framework:
default_locale: "%locale%"

The `auto_start` setting under `framework.session` must be removed as it is
not used anymore (the session is now always started on-demand). If
`auto_start` was the only setting under the `framework.session` entry, don't
remove it entirely, but set its value to `~` (`~` means `null` in YAML)
instead:

framework:
session: ~

The `trust_proxy_headers` setting was added in the default configuration file
(as it should be set to `true` when you install your application behind a
reverse proxy):

framework:
trust_proxy_headers: false

An empty `bundles` entry was added to the `assetic` configuration:

assetic:
bundles: []

The default `swiftmailer` configuration now has the `spool` setting configured
to the `memory` type to defer email sending after the response is sent to the
user (recommended for better end-user performance):

swiftmailer:
spool: { type: memory }

The `jms_security_extra` configuration was moved to the `security.yml`
configuration file.

### `app/config/config_dev.yml`

An example of how to send all emails to a unique address was added:

#swiftmailer:
# delivery_address: me@example.com

### `app/config/config_test.yml`

The `storage_id` setting must be changed to `session.storage.mock_file`:

framework:
session:
storage_id: session.storage.mock_file

### `app/config/parameters.ini`

The file has been converted to a YAML file which reads as follows:

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

Note that if you convert your parameters file to YAML, you must also change
its reference in `app/config/config.yml`.

### `app/config/routing_dev.yml`

The `_assetic` entry was removed:

#_assetic:
# resource: .
# type: assetic

### `app/config/security.yml`

Under `security.access_control`, the default rule for internal routes was changed:

security:
access_control:
#- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }

Under `security.providers`, the `in_memory` example was updated to the following:

security:
providers:
in_memory:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

### `app/AppKernel.php`

The following bundles have been added to the list of default registered bundles:

new JMS\AopBundle\JMSAopBundle(),
new JMS\DiExtraBundle\JMSDiExtraBundle($this),

You must also rename the DoctrineBundle from:

new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),

to:

new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),

### `web/app.php`

The default `web/app.php` file now reads as follows:

<?php

use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';

// Use APC for autoloading to improve performance.
// Change 'sf2' to a unique prefix in order to prevent cache key conflicts
// with other applications also using APC.
/*
$loader = new ApcClassLoader('sf2', $loader);
$loader->register(true);
*/

require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';

$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

### `web/app_dev.php`

The default `web/app_dev.php` file now reads as follows:

<?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',
'::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 = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
@@ -0,0 +1,7 @@
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
@@ -0,0 +1,9 @@
<?php

require_once __DIR__.'/AppKernel.php';

use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;

class AppCache extends HttpCache
{
}
@@ -0,0 +1,37 @@
<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new AppBundle\AppBundle(),
new TEST\PlatformBundle\TESTPlatformBundle(),
);

if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
$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');
}
}
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
@@ -0,0 +1,5 @@
{% extends 'base.html.twig' %}

{% block body %}
Homepage.
{% endblock %}

Large diffs are not rendered by default.

@@ -0,0 +1,13 @@
<?php

use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;

/**
* @var ClassLoader $loader
*/
$loader = require __DIR__.'/../vendor/autoload.php';

AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

return $loader;
Empty file.
@@ -0,0 +1,142 @@
<?php

require_once dirname(__FILE__).'/SymfonyRequirements.php';

$lineSize = 70;
$symfonyRequirements = new SymfonyRequirements();
$iniPath = $symfonyRequirements->getPhpIniConfigPath();

echo_title('Symfony2 Requirements Checker');

echo '> PHP is using the following php.ini file:'.PHP_EOL;
if ($iniPath) {
echo_style('green', ' '.$iniPath);
} else {
echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!');
}

echo PHP_EOL.PHP_EOL;

echo '> Checking Symfony requirements:'.PHP_EOL.' ';

$messages = array();
foreach ($symfonyRequirements->getRequirements() as $req) {
/** @var $req Requirement */
if ($helpText = get_error_message($req, $lineSize)) {
echo_style('red', 'E');
$messages['error'][] = $helpText;
} else {
echo_style('green', '.');
}
}

$checkPassed = empty($messages['error']);

foreach ($symfonyRequirements->getRecommendations() as $req) {
if ($helpText = get_error_message($req, $lineSize)) {
echo_style('yellow', 'W');
$messages['warning'][] = $helpText;
} else {
echo_style('green', '.');
}
}

if ($checkPassed) {
echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects', true);
} else {
echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects', true);

echo_title('Fix the following mandatory requirements', 'red');

foreach ($messages['error'] as $helpText) {
echo ' * '.$helpText.PHP_EOL;
}
}

if (!empty($messages['warning'])) {
echo_title('Optional recommendations to improve your setup', 'yellow');

foreach ($messages['warning'] as $helpText) {
echo ' * '.$helpText.PHP_EOL;
}
}

echo PHP_EOL;
echo_style('title', 'Note');
echo ' The command console could use a different php.ini file'.PHP_EOL;
echo_style('title', '~~~~');
echo ' than the one used with your web server. To be on the'.PHP_EOL;
echo ' safe side, please check the requirements from your web'.PHP_EOL;
echo ' server using the ';
echo_style('yellow', 'web/config.php');
echo ' script.'.PHP_EOL;
echo PHP_EOL;

exit($checkPassed ? 0 : 1);

function get_error_message(Requirement $requirement, $lineSize)
{
if ($requirement->isFulfilled()) {
return;
}

$errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL;
$errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL;

return $errorMessage;
}

function echo_title($title, $style = null)
{
$style = $style ?: 'title';

echo PHP_EOL;
echo_style($style, $title.PHP_EOL);
echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
echo PHP_EOL;
}

function echo_style($style, $message)
{
// ANSI color codes
$styles = array(
'reset' => "\033[0m",
'red' => "\033[31m",
'green' => "\033[32m",
'yellow' => "\033[33m",
'error' => "\033[37;41m",
'success' => "\033[37;42m",
'title' => "\033[34m",
);
$supports = has_color_support();

echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
}

function echo_block($style, $title, $message)
{
$message = ' '.trim($message).' ';
$width = strlen($message);

echo PHP_EOL.PHP_EOL;

echo_style($style, str_repeat(' ', $width).PHP_EOL);
echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);
echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);
echo_style($style, str_repeat(' ', $width).PHP_EOL);
}

function has_color_support()
{
static $support;

if (null === $support) {
if (DIRECTORY_SEPARATOR == '\\') {
$support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
} else {
$support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
}
}

return $support;
}
@@ -0,0 +1,72 @@
imports:
- { resource: parameters.yml }
- { resource: security.yml }

framework:
#esi: ~
#translator: { fallbacks: ["%locale%"] }
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
fragments: ~
http_method_override: true

# 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:
# 1. add the path in parameters.yml
# e.g. database_path: "%kernel.root_dir%/data/data.db3"
# 2. Uncomment database_path in parameters.yml.dist
# 3. Uncomment next line:
# 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,36 @@
imports:
- { resource: config.yml }

framework:
router:
resource: "%kernel.root_dir%/config/routing_dev.yml"
strict_requirements: true
profiler: { only_exceptions: false }

web_profiler:
toolbar: "%debug_toolbar%"
intercept_redirects: "%debug_redirects%"

monolog:
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
console:
type: console
bubble: false
# uncomment to get logging in your browser
# you may have to allow bigger header sizes in your Web server configuration
#firephp:
# type: firephp
# level: info
#chromephp:
# type: chromephp
# level: info

assetic:
use_controller: "%use_assetic_controller%"

#swiftmailer:
# delivery_address: me@example.com
@@ -0,0 +1,25 @@
imports:
- { resource: config.yml }

#framework:
# validation:
# cache: apc

#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
console:
type: console
@@ -0,0 +1,16 @@
imports:
- { resource: config_dev.yml }

framework:
test: ~
session:
storage_id: session.storage.mock_file
profiler:
collect: false

web_profiler:
toolbar: false
intercept_redirects: false

swiftmailer:
disable_delivery: true
@@ -0,0 +1,24 @@
# This file is a "template" of what your parameters.yml file should look like
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: ~
database_name: symfony
database_user: root
database_password: ~
# You should uncomment this if you want use pdo_sqlite
# database_path: "%kernel.root_dir%/data.db3"

mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: ~
mailer_password: ~

locale: en

# A secret key that's used to generate certain security-related tokens
secret: ThisTokenIsNotSoSecretChangeIt

debug_toolbar: true
debug_redirects: false
use_assetic_controller: true
@@ -0,0 +1,7 @@
test_platform:
resource: "@TESTPlatformBundle/Resources/config/routing.yml"
prefix: /platform

app:
resource: @AppBundle/Controller/
type: annotation
@@ -0,0 +1,18 @@
_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

# AcmeDemoBundle routes (to be removed)
_acme_demo:
resource: "@AcmeDemoBundle/Resources/config/routing.yml"
@@ -0,0 +1,62 @@
# you can read more about security in the related section of the documentation
# http://symfony.com/doc/current/book/security.html
security:
# http://symfony.com/doc/current/book/security.html#encoding-the-user-s-password
encoders:
Symfony\Component\Security\Core\User\User: plaintext

# http://symfony.com/doc/current/book/security.html#hierarchical-roles
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
in_memory:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

# the main part of the security, where you can set up firewalls
# for specific sections of your app
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
# the login page has to be accessible for everybody
demo_login:
pattern: ^/demo/secured/login$
security: false

# secures part of the application
demo_secured_area:
pattern: ^/demo/secured/
# it's important to notice that in this case _demo_security_check and _demo_login
# are route names and that they are specified in the AcmeDemoBundle
form_login:
check_path: _demo_security_check
login_path: _demo_login
logout:
path: _demo_logout
target: _demo
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
main:
pattern: ^/
anonymous: true
provider: in_memory
form_login:
login_path: login
check_path: login_check
logout:
path: logout
target: /platform

# with these settings you can restrict or allow access for different parts
# of your application based on roles, ip, host or methods
# http://symfony.com/doc/current/cookbook/security/access_control.html
access_control:
#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
@@ -0,0 +1,27 @@
#!/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;
use Symfony\Component\Debug\Debug;

$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';

if ($debug) {
Debug::enable();
}

$kernel = new AppKernel($env, $debug);
$application = new Application($kernel);
$application->run($input);
Empty file.
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>

<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
backupGlobals="false"
colors="true"
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/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,62 @@
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": { "": "src/", "SymfonyStandard": "app/" },
"UserBundle": {"src/OC/" }
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.5.*",
"doctrine/orm": "~2.2,>=2.2.3,<2.5",
"doctrine/dbal": "<2.5",
"doctrine/doctrine-bundle": "~1.2",
"twig/extensions": "~1.0",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~3.0,>=3.0.12",
"sensio/framework-extra-bundle": "~3.0,>=3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"friendsofsymfony/user-bundle": "dev-master"
},
"require-dev": {
"sensio/generator-bundle": "~2.3"
},
"scripts": {
"post-root-package-install": [
"SymfonyStandard\\Composer::hookRootPackageInstall"
],
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
],
"post-update-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
]
},
"config": {
"bin-dir": "bin"
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "2.5-dev"
}
}
}
@@ -0,0 +1,7 @@
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
@@ -0,0 +1,9 @@
<?php

namespace Acme\DemoBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AcmeDemoBundle extends Bundle
{
}
@@ -0,0 +1,48 @@
<?php

namespace Acme\DemoBundle\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

/**
* Hello World command for demo purposes.
*
* You could also extend from Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand
* to get access to the container via $this->getContainer().
*
* @author Tobias Schultze <http://tobion.de>
*/
class HelloWorldCommand extends Command
{
/**
* {@inheritdoc}
*/
protected function configure()
{
$this
->setName('acme:hello')
->setDescription('Hello World example command')
->addArgument('who', InputArgument::OPTIONAL, 'Who to greet.', 'World')
->setHelp(<<<EOF
The <info>%command.name%</info> command greets somebody or everybody:
<info>php %command.full_name%</info>
The optional argument specifies who to greet:
<info>php %command.full_name%</info> Fabien
EOF
);
}

/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln(sprintf('Hello <comment>%s</comment>!', $input->getArgument('who')));
}
}
@@ -0,0 +1,56 @@
<?php

namespace Acme\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
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(Request $request)
{
$form = $this->createForm(new ContactType());
$form->handleRequest($request);

if ($form->isValid()) {
$mailer = $this->get('mailer');

// .. setup a message and send it
// http://symfony.com/doc/current/cookbook/email.html

$request->getSession()->getFlashBag()->set('notice', 'Message sent!');

return new RedirectResponse($this->generateUrl('_demo'));
}

return array('form' => $form->createView());
}
}
@@ -0,0 +1,70 @@
<?php

namespace Acme\DemoBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;

/**
* @Route("/demo/secured")
*/
class SecuredController extends Controller
{
/**
* @Route("/login", name="_demo_login")
* @Template()
*/
public function loginAction(Request $request)
{
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
}

return array(
'last_username' => $request->getSession()->get(SecurityContext::LAST_USERNAME),
'error' => $error,
);
}

/**
* @Route("/login_check", name="_demo_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")
* @Security("is_granted('ROLE_ADMIN')")
* @Template()
*/
public function helloadminAction($name)
{
return array('name' => $name);
}
}
@@ -0,0 +1,19 @@
<?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,24 @@
<?php

namespace Acme\DemoBundle\EventListener;

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,12 @@
_welcome:
path: /
defaults: { _controller: AcmeDemoBundle:Welcome:index }

_demo_secured:
resource: "@AcmeDemoBundle/Controller/SecuredController.php"
type: annotation

_demo:
resource: "@AcmeDemoBundle/Controller/DemoController.php"
type: annotation
prefix: /demo
@@ -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;
}
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -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("_demo_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,45 @@
<?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());
}

public function testSecureSection()
{
$client = static::createClient();

// goes to the secure page
$crawler = $client->request('GET', '/demo/secured/hello/World');

// redirects to the login page
$crawler = $client->followRedirect();

// submits the login form
$form = $crawler->selectButton('Login')->form(array('_username' => 'admin', '_password' => 'adminpass'));
$client->submit($form);

// redirect to the original page (but now authenticated)
$crawler = $client->followRedirect();

// check that the page is the right one
$this->assertCount(1, $crawler->filter('h1.title:contains("Hello World!")'));

// click on the secure link
$link = $crawler->selectLink('Hello resource secured')->link();
$crawler = $client->click($link);

// check that the page is the right one
$this->assertCount(1, $crawler->filter('h1.title:contains("secured for Admins only!")'));
}
}
@@ -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(
new \Twig_SimpleFunction('code', array($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">&lt;?php&nbsp;&nbsp;&nbsp;&nbsp;</span>', '&nbsp;&nbsp;&nbsp;&nbsp;', $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,9 @@
<?php

namespace AppBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AppBundle extends Bundle
{
}
@@ -0,0 +1,17 @@
<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
/**
* @Route("/app/example", name="homepage")
*/
public function indexAction()
{
return $this->render('default/index.html.twig');
}
}
@@ -0,0 +1,17 @@
<?php

namespace AppBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DefaultControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();

$crawler = $client->request('GET', '/');

$this->assertTrue($crawler->filter('html:contains("Homepage")')->count() > 0);
}
}
@@ -0,0 +1,13 @@
<?php

namespace TEST\PlatformBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
public function indexAction($name)
{
return $this->render('TESTPlatformBundle:Default:index.html.twig', array('name' => $name));
}
}
@@ -0,0 +1,45 @@
<?php

// src/OC/PlatformBundle/Controller/AdvertController.php

namespace TEST\PlatformBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class PhotoController extends Controller
{
public function indexAction()
{
$content = $this
->get('templating')
->render('TESTPlatformBundle:Photo:index.html.twig', array(
'name' => 'World'
)
);
return new Response("$content");
}

public function addFormularAction()
{
$content = $this
->get('templating')
->render('TESTPlatformBundle:Photo:add_formular.html.twig', array(
)
);
return new Response("$content");
}

public function viewAction($soc_name, $title, $ext)
{
$content = $this
->get('templating')
->render('TESTPlatformBundle:Photo:view_photo.html.twig', array(
'soc_name' => $soc_name,
'title' => $title,
'ext' => $ext
)
);
return new Response("$content");
}
}
@@ -0,0 +1,29 @@
<?php

namespace TEST\PlatformBundle\DependencyInjection;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

/**
* This is the class that validates and merges configuration from your app/config files
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}
*/
class Configuration implements ConfigurationInterface
{
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('test_platform');

// Here you should define the parameters that are allowed to
// configure your bundle. See the documentation linked above for
// more information on that topic.

return $treeBuilder;
}
}
@@ -0,0 +1,28 @@
<?php

namespace TEST\PlatformBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
* This is the class that loads and manages your bundle configuration
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
*/
class TESTPlatformExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);

$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}
@@ -0,0 +1,189 @@
<?php

namespace TEST\PlatformBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Photo
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="TEST\PlatformBundle\Entity\PhotoRepository")
*/
class Photo
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="owner", type="string", length=255)
*/
private $owner;

/**
* @var \DateTime
*
* @ORM\Column(name="date_added", type="datetime")
*/
private $dateAdded;

/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;

/**
* @var string
*
* @ORM\Column(name="society", type="string", length=255)
*/
private $society;

/**
* @var string
*
* @ORM\Column(name="exention", type="string", length=255)
*/
private $exention;


/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set owner
*
* @param string $owner
* @return Photo
*/
public function setOwner($owner)
{
$this->owner = $owner;

return $this;
}

/**
* Get owner
*
* @return string
*/
public function getOwner()
{
return $this->owner;
}

/**
* Set dateAdded
*
* @param \DateTime $dateAdded
* @return Photo
*/
public function setDateAdded($dateAdded)
{
$this->dateAdded = $dateAdded;

return $this;
}

/**
* Get dateAdded
*
* @return \DateTime
*/
public function getDateAdded()
{
return $this->dateAdded;
}

/**
* Set title
*
* @param string $title
* @return Photo
*/
public function setTitle($title)
{
$this->title = $title;

return $this;
}

/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}

/**
* Set society
*
* @param string $society
* @return Photo
*/
public function setSociety($society)
{
$this->society = $society;

return $this;
}

/**
* Get society
*
* @return string
*/
public function getSociety()
{
return $this->society;
}

/**
* Set exention
*
* @param string $exention
* @return Photo
*/
public function setExention($exention)
{
$this->exention = $exention;

return $this;
}

/**
* Get exention
*
* @return string
*/
public function getExention()
{
return $this->exention;
}

public function __construc($society, $title, $exention, $owner)
{
$this->dateAdded = new \DateTime();
}
}
@@ -0,0 +1,15 @@
<?php

namespace TEST\PlatformBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
* PhotoRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class PhotoRepository extends EntityRepository
{
}
@@ -0,0 +1,11 @@
test_platform_homepage:
path: /
defaults: { _controller: TESTPlatformBundle:Photo:index }

test_platform_view:
path: /{soc_name}/{title}/fichier.{ext}
defaults: { _controller: TESTPlatformBundle:Photo:view }

test_platform_addPhoto:
path: /add
defaults: { _controller: TESTPlatformBundle:Photo:addFormular }
@@ -0,0 +1,4 @@
services:
# test_platform.example:
# class: TEST\PlatformBundle\Example
# arguments: [@service_id, "plain_value", %parameter%]
@@ -0,0 +1,5 @@
<html>
<body>
Hello {{ name }}!
</body>
</html>
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>add a photo</title>
</head>
<body>
<h1>Hello !</h1>

<p>
here is formular to add a photo
</p>
</body>
</html>
@@ -0,0 +1,18 @@
{# src/OC/PlatformBundle/Resources/views/Advert/index.html.twig #}

<!DOCTYPE html>
<html>
<head>
<title>Bienvenue sur l'index</title>
</head>
<body>
<h1>Hello {{ name }} !</h1>

<p>
Le Hello World est un grand classique en programmation.
Il signifie énormément, car cela veut dire que vous avez
réussi à exécuter le programme pour accomplir une tâche simple :
afficher ce hello world !
</p>
</body>
</html>
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>all Pictures</title>
</head>
<body>
<h1>Here is picture carac</h1>

<p>
cette photo appartient a la societe {{ soc_name }} et s'apelle {{ title }}. Elle est un fichier d'extention {{ext}}.
</p>
</body>
</html>
@@ -0,0 +1,9 @@
<?php

namespace TEST\PlatformBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class TESTPlatformBundle extends Bundle
{
}
@@ -0,0 +1,17 @@
<?php

namespace TEST\PlatformBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DefaultControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();

$crawler = $client->request('GET', '/hello/Fabien');

$this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0);
}
}
@@ -0,0 +1,56 @@
# Use the front controller as index file. It serves as a 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
# start page (path "/") because otherwise Apache will apply the rewriting rules
# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
DirectoryIndex app.php

<IfModule mod_rewrite.c>
RewriteEngine On

# Determine the RewriteBase automatically and set it as environment variable.
# If you are using Apache aliases to do mass virtual hosting or installed the
# project in a subdirectory, the base path will be prepended to allow proper
# resolution of the app.php file and to redirect to the correct URI. It will
# work in environments without path prefix as well, providing a safe, one-size
# fits all solution. But as you do not need it in this case, you can comment
# the following 2 lines to eliminate the overhead.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]

# Sets the HTTP_AUTHORIZATION header removed by apache
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# 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 start page 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(/(.*)|$) %{ENV:BASE}/$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]

# Rewrite all other queries to the front controller.
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 start page 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,29 @@
<?php

use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';

// Use APC for autoloading to improve performance.
// Change 'sf2' to a unique prefix in order to prevent cache key conflicts
// with other applications also using APC.
/*
$apcLoader = new ApcClassLoader('sf2', $loader);
$loader->unregister();
$apcLoader->register(true);
*/

require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';

$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);

// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
@@ -0,0 +1,23 @@
<?php

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Debug\Debug;

// 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.

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
Debug::enable();

require_once __DIR__.'/../app/AppKernel.php';

$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -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>
BIN +6.37 KB web/favicon.ico
Binary file not shown.
@@ -0,0 +1,4 @@
# www.robotstxt.org/
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449

User-agent: *