git.fiddlerwoaroof.com
fiddlerwoaroof authored on 15/07/2015 20:35:01
Showing 44 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,11 @@
1
+/app/bootstrap.php.cache
2
+/app/cache/*
3
+!app/cache/.gitkeep
4
+/app/config/parameters.yml
5
+/app/logs/*
6
+!app/logs/.gitkeep
7
+/app/phpunit.xml
8
+/bin/
9
+/composer.phar
10
+/vendor/
11
+/web/bundles/
0 12
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+blog
2
+====
3
+
4
+A Symfony project created on July 15, 2015, 12:10 pm.
0 5
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+<IfModule mod_authz_core.c>
2
+    Require all denied
3
+</IfModule>
4
+<IfModule !mod_authz_core.c>
5
+    Order deny,allow
6
+    Deny from all
7
+</IfModule>
0 8
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+<?php
2
+
3
+require_once __DIR__.'/AppKernel.php';
4
+
5
+use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
6
+
7
+class AppCache extends HttpCache
8
+{
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+<?php
2
+
3
+use Symfony\Component\HttpKernel\Kernel;
4
+use Symfony\Component\Config\Loader\LoaderInterface;
5
+
6
+class AppKernel extends Kernel
7
+{
8
+    public function registerBundles()
9
+    {
10
+        $bundles = array(
11
+            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
12
+            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
13
+            new Symfony\Bundle\TwigBundle\TwigBundle(),
14
+            new Symfony\Bundle\MonologBundle\MonologBundle(),
15
+            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
16
+            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
17
+            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
18
+            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
19
+            new AppBundle\AppBundle(),
20
+            new Blogger\BlogBundle\BloggerBlogBundle(),
21
+        );
22
+
23
+        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
24
+            $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
25
+            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
26
+            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
27
+            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
28
+        }
29
+
30
+        return $bundles;
31
+    }
32
+
33
+    public function registerContainerConfiguration(LoaderInterface $loader)
34
+    {
35
+        $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
36
+    }
37
+}
0 38
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+<!DOCTYPE html>
2
+<html>
3
+    <head>
4
+        <meta charset="UTF-8" />
5
+        <title>{% block title %}Welcome!{% endblock %}</title>
6
+        {% block stylesheets %}{% endblock %}
7
+        <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
8
+    </head>
9
+    <body>
10
+        {% block body %}{% endblock %}
11
+        {% block javascripts %}{% endblock %}
12
+    </body>
13
+</html>
0 14
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+{% extends 'base.html.twig' %}
2
+
3
+{% block body %}
4
+    Homepage.
5
+{% endblock %}
0 6
new file mode 100644
... ...
@@ -0,0 +1,758 @@
1
+<?php
2
+
3
+/*
4
+ * This file is part of the Symfony package.
5
+ *
6
+ * (c) Fabien Potencier <fabien@symfony.com>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+/*
13
+ * Users of PHP 5.2 should be able to run the requirements checks.
14
+ * This is why the file and all classes must be compatible with PHP 5.2+
15
+ * (e.g. not using namespaces and closures).
16
+ *
17
+ * ************** CAUTION **************
18
+ *
19
+ * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
20
+ * the installation/update process. The original file resides in the
21
+ * SensioDistributionBundle.
22
+ *
23
+ * ************** CAUTION **************
24
+ */
25
+
26
+/**
27
+ * Represents a single PHP requirement, e.g. an installed extension.
28
+ * It can be a mandatory requirement or an optional recommendation.
29
+ * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
30
+ *
31
+ * @author Tobias Schultze <http://tobion.de>
32
+ */
33
+class Requirement
34
+{
35
+    private $fulfilled;
36
+    private $testMessage;
37
+    private $helpText;
38
+    private $helpHtml;
39
+    private $optional;
40
+
41
+    /**
42
+     * Constructor that initializes the requirement.
43
+     *
44
+     * @param bool        $fulfilled   Whether the requirement is fulfilled
45
+     * @param string      $testMessage The message for testing the requirement
46
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem
47
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
48
+     * @param bool        $optional    Whether this is only an optional recommendation not a mandatory requirement
49
+     */
50
+    public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
51
+    {
52
+        $this->fulfilled = (bool) $fulfilled;
53
+        $this->testMessage = (string) $testMessage;
54
+        $this->helpHtml = (string) $helpHtml;
55
+        $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
56
+        $this->optional = (bool) $optional;
57
+    }
58
+
59
+    /**
60
+     * Returns whether the requirement is fulfilled.
61
+     *
62
+     * @return bool true if fulfilled, otherwise false
63
+     */
64
+    public function isFulfilled()
65
+    {
66
+        return $this->fulfilled;
67
+    }
68
+
69
+    /**
70
+     * Returns the message for testing the requirement.
71
+     *
72
+     * @return string The test message
73
+     */
74
+    public function getTestMessage()
75
+    {
76
+        return $this->testMessage;
77
+    }
78
+
79
+    /**
80
+     * Returns the help text for resolving the problem.
81
+     *
82
+     * @return string The help text
83
+     */
84
+    public function getHelpText()
85
+    {
86
+        return $this->helpText;
87
+    }
88
+
89
+    /**
90
+     * Returns the help text formatted in HTML.
91
+     *
92
+     * @return string The HTML help
93
+     */
94
+    public function getHelpHtml()
95
+    {
96
+        return $this->helpHtml;
97
+    }
98
+
99
+    /**
100
+     * Returns whether this is only an optional recommendation and not a mandatory requirement.
101
+     *
102
+     * @return bool true if optional, false if mandatory
103
+     */
104
+    public function isOptional()
105
+    {
106
+        return $this->optional;
107
+    }
108
+}
109
+
110
+/**
111
+ * Represents a PHP requirement in form of a php.ini configuration.
112
+ *
113
+ * @author Tobias Schultze <http://tobion.de>
114
+ */
115
+class PhpIniRequirement extends Requirement
116
+{
117
+    /**
118
+     * Constructor that initializes the requirement.
119
+     *
120
+     * @param string        $cfgName           The configuration name used for ini_get()
121
+     * @param bool|callback $evaluation        Either a boolean indicating whether the configuration should evaluate to true or false,
122
+     *                                         or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
123
+     * @param bool          $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
124
+     *                                         This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
125
+     *                                         Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
126
+     * @param string|null   $testMessage       The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
127
+     * @param string|null   $helpHtml          The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
128
+     * @param string|null   $helpText          The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
129
+     * @param bool          $optional          Whether this is only an optional recommendation not a mandatory requirement
130
+     */
131
+    public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
132
+    {
133
+        $cfgValue = ini_get($cfgName);
134
+
135
+        if (is_callable($evaluation)) {
136
+            if (null === $testMessage || null === $helpHtml) {
137
+                throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
138
+            }
139
+
140
+            $fulfilled = call_user_func($evaluation, $cfgValue);
141
+        } else {
142
+            if (null === $testMessage) {
143
+                $testMessage = sprintf('%s %s be %s in php.ini',
144
+                    $cfgName,
145
+                    $optional ? 'should' : 'must',
146
+                    $evaluation ? 'enabled' : 'disabled'
147
+                );
148
+            }
149
+
150
+            if (null === $helpHtml) {
151
+                $helpHtml = sprintf('Set <strong>%s</strong> to <strong>%s</strong> in php.ini<a href="#phpini">*</a>.',
152
+                    $cfgName,
153
+                    $evaluation ? 'on' : 'off'
154
+                );
155
+            }
156
+
157
+            $fulfilled = $evaluation == $cfgValue;
158
+        }
159
+
160
+        parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
161
+    }
162
+}
163
+
164
+/**
165
+ * A RequirementCollection represents a set of Requirement instances.
166
+ *
167
+ * @author Tobias Schultze <http://tobion.de>
168
+ */
169
+class RequirementCollection implements IteratorAggregate
170
+{
171
+    private $requirements = array();
172
+
173
+    /**
174
+     * Gets the current RequirementCollection as an Iterator.
175
+     *
176
+     * @return Traversable A Traversable interface
177
+     */
178
+    public function getIterator()
179
+    {
180
+        return new ArrayIterator($this->requirements);
181
+    }
182
+
183
+    /**
184
+     * Adds a Requirement.
185
+     *
186
+     * @param Requirement $requirement A Requirement instance
187
+     */
188
+    public function add(Requirement $requirement)
189
+    {
190
+        $this->requirements[] = $requirement;
191
+    }
192
+
193
+    /**
194
+     * Adds a mandatory requirement.
195
+     *
196
+     * @param bool        $fulfilled   Whether the requirement is fulfilled
197
+     * @param string      $testMessage The message for testing the requirement
198
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem
199
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
200
+     */
201
+    public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
202
+    {
203
+        $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
204
+    }
205
+
206
+    /**
207
+     * Adds an optional recommendation.
208
+     *
209
+     * @param bool        $fulfilled   Whether the recommendation is fulfilled
210
+     * @param string      $testMessage The message for testing the recommendation
211
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem
212
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
213
+     */
214
+    public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
215
+    {
216
+        $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
217
+    }
218
+
219
+    /**
220
+     * Adds a mandatory requirement in form of a php.ini configuration.
221
+     *
222
+     * @param string        $cfgName           The configuration name used for ini_get()
223
+     * @param bool|callback $evaluation        Either a boolean indicating whether the configuration should evaluate to true or false,
224
+     *                                         or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
225
+     * @param bool          $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
226
+     *                                         This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
227
+     *                                         Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
228
+     * @param string        $testMessage       The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
229
+     * @param string        $helpHtml          The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
230
+     * @param string|null   $helpText          The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
231
+     */
232
+    public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
233
+    {
234
+        $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
235
+    }
236
+
237
+    /**
238
+     * Adds an optional recommendation in form of a php.ini configuration.
239
+     *
240
+     * @param string        $cfgName           The configuration name used for ini_get()
241
+     * @param bool|callback $evaluation        Either a boolean indicating whether the configuration should evaluate to true or false,
242
+     *                                         or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
243
+     * @param bool          $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
244
+     *                                         This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
245
+     *                                         Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
246
+     * @param string        $testMessage       The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
247
+     * @param string        $helpHtml          The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
248
+     * @param string|null   $helpText          The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
249
+     */
250
+    public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
251
+    {
252
+        $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
253
+    }
254
+
255
+    /**
256
+     * Adds a requirement collection to the current set of requirements.
257
+     *
258
+     * @param RequirementCollection $collection A RequirementCollection instance
259
+     */
260
+    public function addCollection(RequirementCollection $collection)
261
+    {
262
+        $this->requirements = array_merge($this->requirements, $collection->all());
263
+    }
264
+
265
+    /**
266
+     * Returns both requirements and recommendations.
267
+     *
268
+     * @return array Array of Requirement instances
269
+     */
270
+    public function all()
271
+    {
272
+        return $this->requirements;
273
+    }
274
+
275
+    /**
276
+     * Returns all mandatory requirements.
277
+     *
278
+     * @return array Array of Requirement instances
279
+     */
280
+    public function getRequirements()
281
+    {
282
+        $array = array();
283
+        foreach ($this->requirements as $req) {
284
+            if (!$req->isOptional()) {
285
+                $array[] = $req;
286
+            }
287
+        }
288
+
289
+        return $array;
290
+    }
291
+
292
+    /**
293
+     * Returns the mandatory requirements that were not met.
294
+     *
295
+     * @return array Array of Requirement instances
296
+     */
297
+    public function getFailedRequirements()
298
+    {
299
+        $array = array();
300
+        foreach ($this->requirements as $req) {
301
+            if (!$req->isFulfilled() && !$req->isOptional()) {
302
+                $array[] = $req;
303
+            }
304
+        }
305
+
306
+        return $array;
307
+    }
308
+
309
+    /**
310
+     * Returns all optional recommendations.
311
+     *
312
+     * @return array Array of Requirement instances
313
+     */
314
+    public function getRecommendations()
315
+    {
316
+        $array = array();
317
+        foreach ($this->requirements as $req) {
318
+            if ($req->isOptional()) {
319
+                $array[] = $req;
320
+            }
321
+        }
322
+
323
+        return $array;
324
+    }
325
+
326
+    /**
327
+     * Returns the recommendations that were not met.
328
+     *
329
+     * @return array Array of Requirement instances
330
+     */
331
+    public function getFailedRecommendations()
332
+    {
333
+        $array = array();
334
+        foreach ($this->requirements as $req) {
335
+            if (!$req->isFulfilled() && $req->isOptional()) {
336
+                $array[] = $req;
337
+            }
338
+        }
339
+
340
+        return $array;
341
+    }
342
+
343
+    /**
344
+     * Returns whether a php.ini configuration is not correct.
345
+     *
346
+     * @return bool php.ini configuration problem?
347
+     */
348
+    public function hasPhpIniConfigIssue()
349
+    {
350
+        foreach ($this->requirements as $req) {
351
+            if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
352
+                return true;
353
+            }
354
+        }
355
+
356
+        return false;
357
+    }
358
+
359
+    /**
360
+     * Returns the PHP configuration file (php.ini) path.
361
+     *
362
+     * @return string|false php.ini file path
363
+     */
364
+    public function getPhpIniConfigPath()
365
+    {
366
+        return get_cfg_var('cfg_file_path');
367
+    }
368
+}
369
+
370
+/**
371
+ * This class specifies all requirements and optional recommendations that
372
+ * are necessary to run the Symfony Standard Edition.
373
+ *
374
+ * @author Tobias Schultze <http://tobion.de>
375
+ * @author Fabien Potencier <fabien@symfony.com>
376
+ */
377
+class SymfonyRequirements extends RequirementCollection
378
+{
379
+    const REQUIRED_PHP_VERSION = '5.3.3';
380
+
381
+    /**
382
+     * Constructor that initializes the requirements.
383
+     */
384
+    public function __construct()
385
+    {
386
+        /* mandatory requirements follow */
387
+
388
+        $installedPhpVersion = phpversion();
389
+
390
+        $this->addRequirement(
391
+            version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
392
+            sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
393
+            sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run.
394
+                Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
395
+                $installedPhpVersion, self::REQUIRED_PHP_VERSION),
396
+            sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
397
+        );
398
+
399
+        $this->addRequirement(
400
+            version_compare($installedPhpVersion, '5.3.16', '!='),
401
+            'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
402
+            'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
403
+        );
404
+
405
+        $this->addRequirement(
406
+            is_dir(__DIR__.'/../vendor/composer'),
407
+            'Vendor libraries must be installed',
408
+            'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '.
409
+                'Then run "<strong>php composer.phar install</strong>" to install them.'
410
+        );
411
+
412
+        $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache';
413
+
414
+        $this->addRequirement(
415
+            is_writable($cacheDir),
416
+            'app/cache/ or var/cache/ directory must be writable',
417
+            'Change the permissions of either "<strong>app/cache/</strong>" or  "<strong>var/cache/</strong>" directory so that the web server can write into it.'
418
+        );
419
+
420
+        $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs';
421
+
422
+        $this->addRequirement(
423
+            is_writable($logsDir),
424
+            'app/logs/ or var/logs/ directory must be writable',
425
+            'Change the permissions of either "<strong>app/logs/</strong>" or  "<strong>var/logs/</strong>" directory so that the web server can write into it.'
426
+        );
427
+
428
+        $this->addPhpIniRequirement(
429
+            'date.timezone', true, false,
430
+            'date.timezone setting must be set',
431
+            'Set the "<strong>date.timezone</strong>" setting in php.ini<a href="#phpini">*</a> (like Europe/Paris).'
432
+        );
433
+
434
+        if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
435
+            $timezones = array();
436
+            foreach (DateTimeZone::listAbbreviations() as $abbreviations) {
437
+                foreach ($abbreviations as $abbreviation) {
438
+                    $timezones[$abbreviation['timezone_id']] = true;
439
+                }
440
+            }
441
+
442
+            $this->addRequirement(
443
+                isset($timezones[@date_default_timezone_get()]),
444
+                sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()),
445
+                'Your default timezone is not supported by PHP. Check for typos in your <strong>php.ini</strong> file and have a look at the list of deprecated timezones at <a href="http://php.net/manual/en/timezones.others.php">http://php.net/manual/en/timezones.others.php</a>.'
446
+            );
447
+        }
448
+
449
+        $this->addRequirement(
450
+            function_exists('json_encode'),
451
+            'json_encode() must be available',
452
+            'Install and enable the <strong>JSON</strong> extension.'
453
+        );
454
+
455
+        $this->addRequirement(
456
+            function_exists('session_start'),
457
+            'session_start() must be available',
458
+            'Install and enable the <strong>session</strong> extension.'
459
+        );
460
+
461
+        $this->addRequirement(
462
+            function_exists('ctype_alpha'),
463
+            'ctype_alpha() must be available',
464
+            'Install and enable the <strong>ctype</strong> extension.'
465
+        );
466
+
467
+        $this->addRequirement(
468
+            function_exists('token_get_all'),
469
+            'token_get_all() must be available',
470
+            'Install and enable the <strong>Tokenizer</strong> extension.'
471
+        );
472
+
473
+        $this->addRequirement(
474
+            function_exists('simplexml_import_dom'),
475
+            'simplexml_import_dom() must be available',
476
+            'Install and enable the <strong>SimpleXML</strong> extension.'
477
+        );
478
+
479
+        if (function_exists('apc_store') && ini_get('apc.enabled')) {
480
+            if (version_compare($installedPhpVersion, '5.4.0', '>=')) {
481
+                $this->addRequirement(
482
+                    version_compare(phpversion('apc'), '3.1.13', '>='),
483
+                    'APC version must be at least 3.1.13 when using PHP 5.4',
484
+                    'Upgrade your <strong>APC</strong> extension (3.1.13+).'
485
+                );
486
+            } else {
487
+                $this->addRequirement(
488
+                    version_compare(phpversion('apc'), '3.0.17', '>='),
489
+                    'APC version must be at least 3.0.17',
490
+                    'Upgrade your <strong>APC</strong> extension (3.0.17+).'
491
+                );
492
+            }
493
+        }
494
+
495
+        $this->addPhpIniRequirement('detect_unicode', false);
496
+
497
+        if (extension_loaded('suhosin')) {
498
+            $this->addPhpIniRequirement(
499
+                'suhosin.executor.include.whitelist',
500
+                create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
501
+                false,
502
+                'suhosin.executor.include.whitelist must be configured correctly in php.ini',
503
+                'Add "<strong>phar</strong>" to <strong>suhosin.executor.include.whitelist</strong> in php.ini<a href="#phpini">*</a>.'
504
+            );
505
+        }
506
+
507
+        if (extension_loaded('xdebug')) {
508
+            $this->addPhpIniRequirement(
509
+                'xdebug.show_exception_trace', false, true
510
+            );
511
+
512
+            $this->addPhpIniRequirement(
513
+                'xdebug.scream', false, true
514
+            );
515
+
516
+            $this->addPhpIniRecommendation(
517
+                'xdebug.max_nesting_level',
518
+                create_function('$cfgValue', 'return $cfgValue > 100;'),
519
+                true,
520
+                'xdebug.max_nesting_level should be above 100 in php.ini',
521
+                'Set "<strong>xdebug.max_nesting_level</strong>" to e.g. "<strong>250</strong>" in php.ini<a href="#phpini">*</a> to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.'
522
+            );
523
+        }
524
+
525
+        $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
526
+
527
+        $this->addRequirement(
528
+            null !== $pcreVersion,
529
+            'PCRE extension must be available',
530
+            'Install the <strong>PCRE</strong> extension (version 8.0+).'
531
+        );
532
+
533
+        if (extension_loaded('mbstring')) {
534
+            $this->addPhpIniRequirement(
535
+                'mbstring.func_overload',
536
+                create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
537
+                true,
538
+                'string functions should not be overloaded',
539
+                'Set "<strong>mbstring.func_overload</strong>" to <strong>0</strong> in php.ini<a href="#phpini">*</a> to disable function overloading by the mbstring extension.'
540
+            );
541
+        }
542
+
543
+        /* optional recommendations follow */
544
+
545
+        if (file_exists(__DIR__.'/../vendor/composer')) {
546
+            require_once __DIR__.'/../vendor/autoload.php';
547
+
548
+            try {
549
+                $r = new \ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle');
550
+
551
+                $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php');
552
+            } catch (\ReflectionException $e) {
553
+                $contents = '';
554
+            }
555
+            $this->addRecommendation(
556
+                file_get_contents(__FILE__) === $contents,
557
+                'Requirements file should be up-to-date',
558
+                'Your requirements file is outdated. Run composer install and re-check your configuration.'
559
+            );
560
+        }
561
+
562
+        $this->addRecommendation(
563
+            version_compare($installedPhpVersion, '5.3.4', '>='),
564
+            'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
565
+            'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.'
566
+        );
567
+
568
+        $this->addRecommendation(
569
+            version_compare($installedPhpVersion, '5.3.8', '>='),
570
+            'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
571
+            'Install PHP 5.3.8 or newer if your project uses annotations.'
572
+        );
573
+
574
+        $this->addRecommendation(
575
+            version_compare($installedPhpVersion, '5.4.0', '!='),
576
+            'You should not use PHP 5.4.0 due to the PHP bug #61453',
577
+            'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
578
+        );
579
+
580
+        $this->addRecommendation(
581
+            version_compare($installedPhpVersion, '5.4.11', '>='),
582
+            'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)',
583
+            'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'
584
+        );
585
+
586
+        $this->addRecommendation(
587
+            (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))
588
+            ||
589
+            version_compare($installedPhpVersion, '5.4.8', '>='),
590
+            'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909',
591
+            'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'
592
+        );
593
+
594
+        if (null !== $pcreVersion) {
595
+            $this->addRecommendation(
596
+                $pcreVersion >= 8.0,
597
+                sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),
598
+                '<strong>PCRE 8.0+</strong> is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.'
599
+            );
600
+        }
601
+
602
+        $this->addRecommendation(
603
+            class_exists('DomDocument'),
604
+            'PHP-DOM and PHP-XML modules should be installed',
605
+            'Install and enable the <strong>PHP-DOM</strong> and the <strong>PHP-XML</strong> modules.'
606
+        );
607
+
608
+        $this->addRecommendation(
609
+            function_exists('mb_strlen'),
610
+            'mb_strlen() should be available',
611
+            'Install and enable the <strong>mbstring</strong> extension.'
612
+        );
613
+
614
+        $this->addRecommendation(
615
+            function_exists('iconv'),
616
+            'iconv() should be available',
617
+            'Install and enable the <strong>iconv</strong> extension.'
618
+        );
619
+
620
+        $this->addRecommendation(
621
+            function_exists('utf8_decode'),
622
+            'utf8_decode() should be available',
623
+            'Install and enable the <strong>XML</strong> extension.'
624
+        );
625
+
626
+        $this->addRecommendation(
627
+            function_exists('filter_var'),
628
+            'filter_var() should be available',
629
+            'Install and enable the <strong>filter</strong> extension.'
630
+        );
631
+
632
+        if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
633
+            $this->addRecommendation(
634
+                function_exists('posix_isatty'),
635
+                'posix_isatty() should be available',
636
+                'Install and enable the <strong>php_posix</strong> extension (used to colorize the CLI output).'
637
+            );
638
+        }
639
+
640
+        $this->addRecommendation(
641
+            class_exists('Locale'),
642
+            'intl extension should be available',
643
+            'Install and enable the <strong>intl</strong> extension (used for validators).'
644
+        );
645
+
646
+        if (extension_loaded('intl')) {
647
+            // in some WAMP server installations, new Collator() returns null
648
+            $this->addRecommendation(
649
+                null !== new Collator('fr_FR'),
650
+                'intl extension should be correctly configured',
651
+                'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
652
+            );
653
+
654
+            // check for compatible ICU versions (only done when you have the intl extension)
655
+            if (defined('INTL_ICU_VERSION')) {
656
+                $version = INTL_ICU_VERSION;
657
+            } else {
658
+                $reflector = new ReflectionExtension('intl');
659
+
660
+                ob_start();
661
+                $reflector->info();
662
+                $output = strip_tags(ob_get_clean());
663
+
664
+                preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
665
+                $version = $matches[1];
666
+            }
667
+
668
+            $this->addRecommendation(
669
+                version_compare($version, '4.0', '>='),
670
+                'intl ICU version should be at least 4+',
671
+                'Upgrade your <strong>intl</strong> extension with a newer ICU version (4+).'
672
+            );
673
+
674
+            $this->addPhpIniRecommendation(
675
+                'intl.error_level',
676
+                create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
677
+                true,
678
+                'intl.error_level should be 0 in php.ini',
679
+                'Set "<strong>intl.error_level</strong>" to "<strong>0</strong>" in php.ini<a href="#phpini">*</a> to inhibit the messages when an error occurs in ICU functions.'
680
+            );
681
+        }
682
+
683
+        $accelerator =
684
+            (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))
685
+            ||
686
+            (extension_loaded('apc') && ini_get('apc.enabled'))
687
+            ||
688
+            (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable'))
689
+            ||
690
+            (extension_loaded('Zend OPcache') && ini_get('opcache.enable'))
691
+            ||
692
+            (extension_loaded('xcache') && ini_get('xcache.cacher'))
693
+            ||
694
+            (extension_loaded('wincache') && ini_get('wincache.ocenabled'))
695
+        ;
696
+
697
+        $this->addRecommendation(
698
+            $accelerator,
699
+            'a PHP accelerator should be installed',
700
+            'Install and/or enable a <strong>PHP accelerator</strong> (highly recommended).'
701
+        );
702
+
703
+        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
704
+            $this->addRecommendation(
705
+                $this->getRealpathCacheSize() > 1000,
706
+                'realpath_cache_size should be above 1024 in php.ini',
707
+                'Set "<strong>realpath_cache_size</strong>" to e.g. "<strong>1024</strong>" in php.ini<a href="#phpini">*</a> to improve performance on windows.'
708
+            );
709
+        }
710
+
711
+        $this->addPhpIniRecommendation('short_open_tag', false);
712
+
713
+        $this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
714
+
715
+        $this->addPhpIniRecommendation('register_globals', false, true);
716
+
717
+        $this->addPhpIniRecommendation('session.auto_start', false);
718
+
719
+        $this->addRecommendation(
720
+            class_exists('PDO'),
721
+            'PDO should be installed',
722
+            'Install <strong>PDO</strong> (mandatory for Doctrine).'
723
+        );
724
+
725
+        if (class_exists('PDO')) {
726
+            $drivers = PDO::getAvailableDrivers();
727
+            $this->addRecommendation(
728
+                count($drivers) > 0,
729
+                sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
730
+                'Install <strong>PDO drivers</strong> (mandatory for Doctrine).'
731
+            );
732
+        }
733
+    }
734
+
735
+    /**
736
+     * Loads realpath_cache_size from php.ini and converts it to int.
737
+     *
738
+     * (e.g. 16k is converted to 16384 int)
739
+     *
740
+     * @return int
741
+     */
742
+    protected function getRealpathCacheSize()
743
+    {
744
+        $size = ini_get('realpath_cache_size');
745
+        $size = trim($size);
746
+        $unit = strtolower(substr($size, -1, 1));
747
+        switch ($unit) {
748
+            case 'g':
749
+                return $size * 1024 * 1024 * 1024;
750
+            case 'm':
751
+                return $size * 1024 * 1024;
752
+            case 'k':
753
+                return $size * 1024;
754
+            default:
755
+                return (int) $size;
756
+        }
757
+    }
758
+}
0 759
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+<?php
2
+
3
+use Doctrine\Common\Annotations\AnnotationRegistry;
4
+use Composer\Autoload\ClassLoader;
5
+
6
+/**
7
+ * @var ClassLoader $loader
8
+ */
9
+$loader = require __DIR__.'/../vendor/autoload.php';
10
+
11
+AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
12
+
13
+return $loader;
1 15
new file mode 100644
... ...
@@ -0,0 +1,142 @@
1
+<?php
2
+
3
+require_once dirname(__FILE__).'/SymfonyRequirements.php';
4
+
5
+$lineSize = 70;
6
+$symfonyRequirements = new SymfonyRequirements();
7
+$iniPath = $symfonyRequirements->getPhpIniConfigPath();
8
+
9
+echo_title('Symfony2 Requirements Checker');
10
+
11
+echo '> PHP is using the following php.ini file:'.PHP_EOL;
12
+if ($iniPath) {
13
+    echo_style('green', '  '.$iniPath);
14
+} else {
15
+    echo_style('warning', '  WARNING: No configuration file (php.ini) used by PHP!');
16
+}
17
+
18
+echo PHP_EOL.PHP_EOL;
19
+
20
+echo '> Checking Symfony requirements:'.PHP_EOL.'  ';
21
+
22
+$messages = array();
23
+foreach ($symfonyRequirements->getRequirements() as $req) {
24
+    /** @var $req Requirement */
25
+    if ($helpText = get_error_message($req, $lineSize)) {
26
+        echo_style('red', 'E');
27
+        $messages['error'][] = $helpText;
28
+    } else {
29
+        echo_style('green', '.');
30
+    }
31
+}
32
+
33
+$checkPassed = empty($messages['error']);
34
+
35
+foreach ($symfonyRequirements->getRecommendations() as $req) {
36
+    if ($helpText = get_error_message($req, $lineSize)) {
37
+        echo_style('yellow', 'W');
38
+        $messages['warning'][] = $helpText;
39
+    } else {
40
+        echo_style('green', '.');
41
+    }
42
+}
43
+
44
+if ($checkPassed) {
45
+    echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects', true);
46
+} else {
47
+    echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects', true);
48
+
49
+    echo_title('Fix the following mandatory requirements', 'red');
50
+
51
+    foreach ($messages['error'] as $helpText) {
52
+        echo ' * '.$helpText.PHP_EOL;
53
+    }
54
+}
55
+
56
+if (!empty($messages['warning'])) {
57
+    echo_title('Optional recommendations to improve your setup', 'yellow');
58
+
59
+    foreach ($messages['warning'] as $helpText) {
60
+        echo ' * '.$helpText.PHP_EOL;
61
+    }
62
+}
63
+
64
+echo PHP_EOL;
65
+echo_style('title', 'Note');
66
+echo '  The command console could use a different php.ini file'.PHP_EOL;
67
+echo_style('title', '~~~~');
68
+echo '  than the one used with your web server. To be on the'.PHP_EOL;
69
+echo '      safe side, please check the requirements from your web'.PHP_EOL;
70
+echo '      server using the ';
71
+echo_style('yellow', 'web/config.php');
72
+echo ' script.'.PHP_EOL;
73
+echo PHP_EOL;
74
+
75
+exit($checkPassed ? 0 : 1);
76
+
77
+function get_error_message(Requirement $requirement, $lineSize)
78
+{
79
+    if ($requirement->isFulfilled()) {
80
+        return;
81
+    }
82
+
83
+    $errorMessage  = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.'   ').PHP_EOL;
84
+    $errorMessage .= '   > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.'   > ').PHP_EOL;
85
+
86
+    return $errorMessage;
87
+}
88
+
89
+function echo_title($title, $style = null)
90
+{
91
+    $style = $style ?: 'title';
92
+
93
+    echo PHP_EOL;
94
+    echo_style($style, $title.PHP_EOL);
95
+    echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
96
+    echo PHP_EOL;
97
+}
98
+
99
+function echo_style($style, $message)
100
+{
101
+    // ANSI color codes
102
+    $styles = array(
103
+        'reset' => "\033[0m",
104
+        'red' => "\033[31m",
105
+        'green' => "\033[32m",
106
+        'yellow' => "\033[33m",
107
+        'error' => "\033[37;41m",
108
+        'success' => "\033[37;42m",
109
+        'title' => "\033[34m",
110
+    );
111
+    $supports = has_color_support();
112
+
113
+    echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
114
+}
115
+
116
+function echo_block($style, $title, $message)
117
+{
118
+    $message = ' '.trim($message).' ';
119
+    $width = strlen($message);
120
+
121
+    echo PHP_EOL.PHP_EOL;
122
+
123
+    echo_style($style, str_repeat(' ', $width).PHP_EOL);
124
+    echo_style($style, str_pad(' ['.$title.']',  $width, ' ', STR_PAD_RIGHT).PHP_EOL);
125
+    echo_style($style, str_pad($message,  $width, ' ', STR_PAD_RIGHT).PHP_EOL);
126
+    echo_style($style, str_repeat(' ', $width).PHP_EOL);
127
+}
128
+
129
+function has_color_support()
130
+{
131
+    static $support;
132
+
133
+    if (null === $support) {
134
+        if (DIRECTORY_SEPARATOR == '\\') {
135
+            $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
136
+        } else {
137
+            $support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
138
+        }
139
+    }
140
+
141
+    return $support;
142
+}
0 143
new file mode 100644
... ...
@@ -0,0 +1,80 @@
1
+imports:
2
+    - { resource: parameters.yml }
3
+    - { resource: security.yml }
4
+    - { resource: services.yml }
5
+
6
+# Put parameters here that don't need to change on each machine where the app is deployed
7
+# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
8
+parameters:
9
+    locale: en
10
+
11
+framework:
12
+    #esi:             ~
13
+    #translator:      { fallbacks: ["%locale%"] }
14
+    secret:          "%secret%"
15
+    router:
16
+        resource: "%kernel.root_dir%/config/routing.yml"
17
+        strict_requirements: ~
18
+    form:            ~
19
+    csrf_protection: ~
20
+    validation:      { enable_annotations: true }
21
+    #serializer:      { enable_annotations: true }
22
+    templating:
23
+        engines: ['twig']
24
+        #assets_version: SomeVersionScheme
25
+    default_locale:  "%locale%"
26
+    trusted_hosts:   ~
27
+    trusted_proxies: ~
28
+    session:
29
+        # handler_id set to null will use default session handler from php.ini
30
+        handler_id:  ~
31
+    fragments:       ~
32
+    http_method_override: true
33
+
34
+# Twig Configuration
35
+twig:
36
+    debug:            "%kernel.debug%"
37
+    strict_variables: "%kernel.debug%"
38
+
39
+# Assetic Configuration
40
+assetic:
41
+    debug:          "%kernel.debug%"
42
+    use_controller: false
43
+    bundles:        [ ]
44
+    #java: /usr/bin/java
45
+    filters:
46
+        cssrewrite: ~
47
+        #closure:
48
+        #    jar: "%kernel.root_dir%/Resources/java/compiler.jar"
49
+        #yui_css:
50
+        #    jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
51
+
52
+# Doctrine Configuration
53
+doctrine:
54
+    dbal:
55
+        driver:   pdo_mysql
56
+        host:     "%database_host%"
57
+        port:     "%database_port%"
58
+        dbname:   "%database_name%"
59
+        user:     "%database_user%"
60
+        password: "%database_password%"
61
+        charset:  UTF8
62
+        # if using pdo_sqlite as your database driver:
63
+        #   1. add the path in parameters.yml
64
+        #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
65
+        #   2. Uncomment database_path in parameters.yml.dist
66
+        #   3. Uncomment next line:
67
+        #     path:     "%database_path%"
68
+
69
+    orm:
70
+        auto_generate_proxy_classes: "%kernel.debug%"
71
+        naming_strategy: doctrine.orm.naming_strategy.underscore
72
+        auto_mapping: true
73
+
74
+# Swiftmailer Configuration
75
+swiftmailer:
76
+    transport: "%mailer_transport%"
77
+    host:      "%mailer_host%"
78
+    username:  "%mailer_user%"
79
+    password:  "%mailer_password%"
80
+    spool:     { type: memory }
0 81
new file mode 100644
... ...
@@ -0,0 +1,48 @@
1
+imports:
2
+    - { resource: config.yml }
3
+
4
+framework:
5
+    router:
6
+        resource: "%kernel.root_dir%/config/routing_dev.yml"
7
+        strict_requirements: true
8
+    profiler: { only_exceptions: false }
9
+
10
+web_profiler:
11
+    toolbar: true
12
+    intercept_redirects: false
13
+
14
+monolog:
15
+    handlers:
16
+        main:
17
+            type:   stream
18
+            path:   "%kernel.logs_dir%/%kernel.environment%.log"
19
+            level:  debug
20
+        console:
21
+            type:   console
22
+            bubble: false
23
+            verbosity_levels:
24
+                VERBOSITY_VERBOSE: INFO
25
+                VERBOSITY_VERY_VERBOSE: DEBUG
26
+            channels: ["!doctrine"]
27
+        console_very_verbose:
28
+            type:   console
29
+            bubble: false
30
+            verbosity_levels:
31
+                VERBOSITY_VERBOSE: NOTICE
32
+                VERBOSITY_VERY_VERBOSE: NOTICE
33
+                VERBOSITY_DEBUG: DEBUG
34
+            channels: ["doctrine"]
35
+        # uncomment to get logging in your browser
36
+        # you may have to allow bigger header sizes in your Web server configuration
37
+        #firephp:
38
+        #    type:   firephp
39
+        #    level:  info
40
+        #chromephp:
41
+        #    type:   chromephp
42
+        #    level:  info
43
+
44
+assetic:
45
+    use_controller: true
46
+
47
+#swiftmailer:
48
+#    delivery_address: me@example.com
0 49
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+imports:
2
+    - { resource: config.yml }
3
+
4
+#framework:
5
+#    validation:
6
+#        cache: validator.mapping.cache.apc
7
+#    serializer:
8
+#        cache: serializer.mapping.cache.apc
9
+
10
+#doctrine:
11
+#    orm:
12
+#        metadata_cache_driver: apc
13
+#        result_cache_driver: apc
14
+#        query_cache_driver: apc
15
+
16
+monolog:
17
+    handlers:
18
+        main:
19
+            type:         fingers_crossed
20
+            action_level: error
21
+            handler:      nested
22
+        nested:
23
+            type:  stream
24
+            path:  "%kernel.logs_dir%/%kernel.environment%.log"
25
+            level: debug
26
+        console:
27
+            type:  console
0 28
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+imports:
2
+    - { resource: config_dev.yml }
3
+
4
+framework:
5
+    test: ~
6
+    session:
7
+        storage_id: session.storage.mock_file
8
+    profiler:
9
+        collect: false
10
+
11
+web_profiler:
12
+    toolbar: false
13
+    intercept_redirects: false
14
+
15
+swiftmailer:
16
+    disable_delivery: true
0 17
new file mode 100644
... ...
@@ -0,0 +1,19 @@
1
+# This file is a "template" of what your parameters.yml file should look like
2
+# Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production.
3
+# http://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
4
+parameters:
5
+    database_host:     127.0.0.1
6
+    database_port:     ~
7
+    database_name:     symfony
8
+    database_user:     root
9
+    database_password: ~
10
+    # You should uncomment this if you want use pdo_sqlite
11
+    # database_path: "%kernel.root_dir%/data.db3"
12
+
13
+    mailer_transport:  smtp
14
+    mailer_host:       127.0.0.1
15
+    mailer_user:       ~
16
+    mailer_password:   ~
17
+
18
+    # A secret key that's used to generate certain security-related tokens
19
+    secret:            ThisTokenIsNotSoSecretChangeIt
0 20
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+blogger_blog:
2
+    resource: "@BloggerBlogBundle/Resources/config/routing.yml"
3
+    prefix:   /
4
+
5
+app:
6
+    resource: "@AppBundle/Controller/"
7
+    type:     annotation
0 8
new file mode 100644
... ...
@@ -0,0 +1,18 @@
1
+_wdt:
2
+    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
3
+    prefix:   /_wdt
4
+
5
+_profiler:
6
+    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
7
+    prefix:   /_profiler
8
+
9
+_configurator:
10
+    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
11
+    prefix:   /_configurator
12
+
13
+_errors:
14
+    resource: "@TwigBundle/Resources/config/routing/errors.xml"
15
+    prefix:   /_error
16
+
17
+_main:
18
+    resource: routing.yml
0 19
new file mode 100644
... ...
@@ -0,0 +1,24 @@
1
+# To get started with security, check out the documentation:
2
+# http://symfony.com/doc/current/book/security.html
3
+security:
4
+
5
+    # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
6
+    providers:
7
+        in_memory:
8
+            memory: ~
9
+
10
+    firewalls:
11
+        # disables authentication for assets and the profiler, adapt it according to your needs
12
+        dev:
13
+            pattern: ^/(_(profiler|wdt)|css|images|js)/
14
+            security: false
15
+
16
+        main:
17
+            anonymous: ~
18
+            # activate different ways to authenticate
19
+
20
+            # http_basic: ~
21
+            # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate
22
+
23
+            # form_login: ~
24
+            # http://symfony.com/doc/current/cookbook/security/form_login_setup.html
0 25
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+# Learn more about services, parameters and containers at
2
+# http://symfony.com/doc/current/book/service_container.html
3
+parameters:
4
+#    parameter_name: value
5
+
6
+services:
7
+#    service_name:
8
+#        class: AppBundle\Directory\ClassName
9
+#        arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
0 10
new file mode 100755
... ...
@@ -0,0 +1,27 @@
1
+#!/usr/bin/env php
2
+<?php
3
+
4
+// if you don't want to setup permissions the proper way, just uncomment the following PHP line
5
+// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
6
+//umask(0000);
7
+
8
+set_time_limit(0);
9
+
10
+require_once __DIR__.'/bootstrap.php.cache';
11
+require_once __DIR__.'/AppKernel.php';
12
+
13
+use Symfony\Bundle\FrameworkBundle\Console\Application;
14
+use Symfony\Component\Console\Input\ArgvInput;
15
+use Symfony\Component\Debug\Debug;
16
+
17
+$input = new ArgvInput();
18
+$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
19
+$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
20
+
21
+if ($debug) {
22
+    Debug::enable();
23
+}
24
+
25
+$kernel = new AppKernel($env, $debug);
26
+$application = new Application($kernel);
27
+$application->run($input);
1 29
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+
3
+<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
4
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
6
+         backupGlobals="false"
7
+         colors="true"
8
+         bootstrap="bootstrap.php.cache"
9
+>
10
+    <testsuites>
11
+        <testsuite name="Project Test Suite">
12
+            <directory>../src/*/*Bundle/Tests</directory>
13
+            <directory>../src/*/Bundle/*Bundle/Tests</directory>
14
+            <directory>../src/*Bundle/Tests</directory>
15
+        </testsuite>
16
+    </testsuites>
17
+
18
+    <!--
19
+    <php>
20
+        <server name="KERNEL_DIR" value="/path/to/your/app/" />
21
+    </php>
22
+    -->
23
+
24
+    <filter>
25
+        <whitelist>
26
+            <directory>../src</directory>
27
+            <exclude>
28
+                <directory>../src/*Bundle/Resources</directory>
29
+                <directory>../src/*Bundle/Tests</directory>
30
+                <directory>../src/*/*Bundle/Resources</directory>
31
+                <directory>../src/*/*Bundle/Tests</directory>
32
+                <directory>../src/*/Bundle/*Bundle/Resources</directory>
33
+                <directory>../src/*/Bundle/*Bundle/Tests</directory>
34
+            </exclude>
35
+        </whitelist>
36
+    </filter>
37
+</phpunit>
0 38
new file mode 100644
... ...
@@ -0,0 +1,61 @@
1
+{
2
+    "name": "edwlan/blog",
3
+    "license": "proprietary",
4
+    "type": "project",
5
+    "autoload": {
6
+        "psr-4": {
7
+            "": "src/",
8
+            "SymfonyStandard\\": "app/SymfonyStandard/"
9
+        }
10
+    },
11
+    "require": {
12
+        "php": ">=5.3.9",
13
+        "symfony/symfony": "2.7.*",
14
+        "doctrine/orm": "~2.2,>=2.2.3,<2.5",
15
+        "doctrine/dbal": "<2.5",
16
+        "doctrine/doctrine-bundle": "~1.4",
17
+        "symfony/assetic-bundle": "~2.3",
18
+        "symfony/swiftmailer-bundle": "~2.3",
19
+        "symfony/monolog-bundle": "~2.4",
20
+        "sensio/distribution-bundle": "~4.0",
21
+        "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
22
+        "incenteev/composer-parameter-handler": "~2.0"
23
+    },
24
+    "require-dev": {
25
+        "sensio/generator-bundle": "~2.3"
26
+    },
27
+    "scripts": {
28
+        "post-root-package-install": [
29
+            "SymfonyStandard\\Composer::hookRootPackageInstall"
30
+        ],
31
+        "post-install-cmd": [
32
+            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
33
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
34
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
35
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
36
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
37
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
38
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
39
+        ],
40
+        "post-update-cmd": [
41
+            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
42
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
43
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
44
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
45
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
46
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
47
+            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
48
+        ]
49
+    },
50
+    "config": {
51
+        "bin-dir": "bin"
52
+    },
53
+    "extra": {
54
+        "symfony-app-dir": "app",
55
+        "symfony-web-dir": "web",
56
+        "symfony-assets-install": "relative",
57
+        "incenteev-parameters": {
58
+            "file": "app/config/parameters.yml"
59
+        }
60
+    }
61
+}
0 62
new file mode 100644
... ...
@@ -0,0 +1,1627 @@
1
+{
2
+    "_readme": [
3
+        "This file locks the dependencies of your project to a known state",
4
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
+        "This file is @generated automatically"
6
+    ],
7
+    "hash": "b37a6884b9afa9cb54c7be83906c39ef",
8
+    "packages": [
9
+        {
10
+            "name": "doctrine/annotations",
11
+            "version": "v1.2.6",
12
+            "source": {
13
+                "type": "git",
14
+                "url": "https://github.com/doctrine/annotations.git",
15
+                "reference": "f4a91702ca3cd2e568c3736aa031ed00c3752af4"
16
+            },
17
+            "dist": {
18
+                "type": "zip",
19
+                "url": "https://api.github.com/repos/doctrine/annotations/zipball/f4a91702ca3cd2e568c3736aa031ed00c3752af4",
20
+                "reference": "f4a91702ca3cd2e568c3736aa031ed00c3752af4",
21
+                "shasum": ""
22
+            },
23
+            "require": {
24
+                "doctrine/lexer": "1.*",
25
+                "php": ">=5.3.2"
26
+            },
27
+            "require-dev": {
28
+                "doctrine/cache": "1.*",
29
+                "phpunit/phpunit": "4.*"
30
+            },
31
+            "type": "library",
32
+            "extra": {
33
+                "branch-alias": {
34
+                    "dev-master": "1.3.x-dev"
35
+                }
36
+            },
37
+            "autoload": {
38
+                "psr-0": {
39
+                    "Doctrine\\Common\\Annotations\\": "lib/"
40
+                }
41
+            },
42
+            "notification-url": "https://packagist.org/downloads/",
43
+            "license": [
44
+                "MIT"
45
+            ],
46
+            "authors": [
47
+                {
48
+                    "name": "Roman Borschel",
49
+                    "email": "roman@code-factory.org"
50
+                },
51
+                {
52
+                    "name": "Benjamin Eberlei",
53
+                    "email": "kontakt@beberlei.de"
54
+                },
55
+                {
56
+                    "name": "Guilherme Blanco",
57
+                    "email": "guilhermeblanco@gmail.com"
58
+                },
59
+                {
60
+                    "name": "Jonathan Wage",
61
+                    "email": "jonwage@gmail.com"
62
+                },
63
+                {
64
+                    "name": "Johannes Schmitt",
65
+                    "email": "schmittjoh@gmail.com"
66
+                }
67
+            ],
68
+            "description": "Docblock Annotations Parser",
69
+            "homepage": "http://www.doctrine-project.org",
70
+            "keywords": [
71
+                "annotations",
72
+                "docblock",
73
+                "parser"
74
+            ],
75
+            "time": "2015-06-17 12:21:22"
76
+        },
77
+        {
78
+            "name": "doctrine/cache",
79
+            "version": "v1.4.1",
80
+            "source": {
81
+                "type": "git",
82
+                "url": "https://github.com/doctrine/cache.git",
83
+                "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03"
84
+            },
85
+            "dist": {
86
+                "type": "zip",
87
+                "url": "https://api.github.com/repos/doctrine/cache/zipball/c9eadeb743ac6199f7eec423cb9426bc518b7b03",
88
+                "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03",
89
+                "shasum": ""
90
+            },
91
+            "require": {
92
+                "php": ">=5.3.2"
93
+            },
94
+            "conflict": {
95
+                "doctrine/common": ">2.2,<2.4"
96
+            },
97
+            "require-dev": {
98
+                "phpunit/phpunit": ">=3.7",
99
+                "predis/predis": "~1.0",
100
+                "satooshi/php-coveralls": "~0.6"
101
+            },
102
+            "type": "library",
103
+            "extra": {
104
+                "branch-alias": {
105
+                    "dev-master": "1.5.x-dev"
106
+                }
107
+            },
108
+            "autoload": {
109
+                "psr-0": {
110
+                    "Doctrine\\Common\\Cache\\": "lib/"
111
+                }
112
+            },
113
+            "notification-url": "https://packagist.org/downloads/",
114
+            "license": [
115
+                "MIT"
116
+            ],
117
+            "authors": [
118
+                {
119
+                    "name": "Roman Borschel",
120
+                    "email": "roman@code-factory.org"
121
+                },
122
+                {
123
+                    "name": "Benjamin Eberlei",
124
+                    "email": "kontakt@beberlei.de"
125
+                },
126
+                {
127
+                    "name": "Guilherme Blanco",
128
+                    "email": "guilhermeblanco@gmail.com"
129
+                },
130
+                {
131
+                    "name": "Jonathan Wage",
132
+                    "email": "jonwage@gmail.com"
133
+                },
134
+                {
135
+                    "name": "Johannes Schmitt",
136
+                    "email": "schmittjoh@gmail.com"
137
+                }
138
+            ],
139
+            "description": "Caching library offering an object-oriented API for many cache backends",
140
+            "homepage": "http://www.doctrine-project.org",
141
+            "keywords": [
142
+                "cache",
143
+                "caching"
144
+            ],
145
+            "time": "2015-04-15 00:11:59"
146
+        },
147
+        {
148
+            "name": "doctrine/collections",
149
+            "version": "v1.3.0",
150
+            "source": {
151
+                "type": "git",
152
+                "url": "https://github.com/doctrine/collections.git",
153
+                "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
154
+            },
155
+            "dist": {
156
+                "type": "zip",
157
+                "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
158
+                "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
159
+                "shasum": ""
160
+            },
161
+            "require": {
162
+                "php": ">=5.3.2"
163
+            },
164
+            "require-dev": {
165
+                "phpunit/phpunit": "~4.0"
166
+            },
167
+            "type": "library",
168
+            "extra": {
169
+                "branch-alias": {
170
+                    "dev-master": "1.2.x-dev"
171
+                }
172
+            },
173
+            "autoload": {
174
+                "psr-0": {
175
+                    "Doctrine\\Common\\Collections\\": "lib/"
176
+                }
177
+            },
178
+            "notification-url": "https://packagist.org/downloads/",
179
+            "license": [
180
+                "MIT"
181
+            ],
182
+            "authors": [
183
+                {
184
+                    "name": "Roman Borschel",
185
+                    "email": "roman@code-factory.org"
186
+                },
187
+                {
188
+                    "name": "Benjamin Eberlei",
189
+                    "email": "kontakt@beberlei.de"
190
+                },
191
+                {
192
+                    "name": "Guilherme Blanco",
193
+                    "email": "guilhermeblanco@gmail.com"
194
+                },
195
+                {
196
+                    "name": "Jonathan Wage",
197
+                    "email": "jonwage@gmail.com"
198
+                },
199
+                {
200
+                    "name": "Johannes Schmitt",
201
+                    "email": "schmittjoh@gmail.com"
202
+                }
203
+            ],
204
+            "description": "Collections Abstraction library",
205
+            "homepage": "http://www.doctrine-project.org",
206
+            "keywords": [
207
+                "array",
208
+                "collections",
209
+                "iterator"
210
+            ],
211
+            "time": "2015-04-14 22:21:58"
212
+        },
213
+        {
214
+            "name": "doctrine/common",
215
+            "version": "v2.5.0",
216
+            "source": {
217
+                "type": "git",
218
+                "url": "https://github.com/doctrine/common.git",
219
+                "reference": "cd8daf2501e10c63dced7b8b9b905844316ae9d3"
220
+            },
221
+            "dist": {
222
+                "type": "zip",
223
+                "url": "https://api.github.com/repos/doctrine/common/zipball/cd8daf2501e10c63dced7b8b9b905844316ae9d3",
224
+                "reference": "cd8daf2501e10c63dced7b8b9b905844316ae9d3",
225
+                "shasum": ""
226
+            },
227
+            "require": {
228
+                "doctrine/annotations": "1.*",
229
+                "doctrine/cache": "1.*",
230
+                "doctrine/collections": "1.*",
231
+                "doctrine/inflector": "1.*",
232
+                "doctrine/lexer": "1.*",
233
+                "php": ">=5.3.2"
234
+            },
235
+            "require-dev": {
236
+                "phpunit/phpunit": "~3.7"
237
+            },
238
+            "type": "library",
239
+            "extra": {
240
+                "branch-alias": {
241
+                    "dev-master": "2.6.x-dev"
242
+                }
243
+            },
244
+            "autoload": {
245
+                "psr-0": {
246
+                    "Doctrine\\Common\\": "lib/"
247
+                }
248
+            },
249
+            "notification-url": "https://packagist.org/downloads/",
250
+            "license": [
251
+                "MIT"
252
+            ],
253
+            "authors": [
254
+                {
255
+                    "name": "Roman Borschel",
256
+                    "email": "roman@code-factory.org"
257
+                },
258
+                {
259
+                    "name": "Benjamin Eberlei",
260
+                    "email": "kontakt@beberlei.de"
261
+                },
262
+                {
263
+                    "name": "Guilherme Blanco",
264
+                    "email": "guilhermeblanco@gmail.com"
265
+                },
266
+                {
267
+                    "name": "Jonathan Wage",
268
+                    "email": "jonwage@gmail.com"
269
+                },
270
+                {
271
+                    "name": "Johannes Schmitt",
272
+                    "email": "schmittjoh@gmail.com"
273
+                }
274
+            ],
275
+            "description": "Common Library for Doctrine projects",
276
+            "homepage": "http://www.doctrine-project.org",
277
+            "keywords": [
278
+                "annotations",
279
+                "collections",
280
+                "eventmanager",
281
+                "persistence",
282
+                "spl"
283
+            ],
284
+            "time": "2015-04-02 19:55:44"
285
+        },
286
+        {
287
+            "name": "doctrine/dbal",
288
+            "version": "v2.4.4",
289
+            "source": {
290
+                "type": "git",
291
+                "url": "https://github.com/doctrine/dbal.git",
292
+                "reference": "a370e5b95e509a7809d11f3d280acfc9310d464b"
293
+            },
294
+            "dist": {
295
+                "type": "zip",
296
+                "url": "https://api.github.com/repos/doctrine/dbal/zipball/a370e5b95e509a7809d11f3d280acfc9310d464b",
297
+                "reference": "a370e5b95e509a7809d11f3d280acfc9310d464b",
298
+                "shasum": ""
299
+            },
300
+            "require": {
301
+                "doctrine/common": "~2.4",
302
+                "php": ">=5.3.2"
303
+            },
304
+            "require-dev": {
305
+                "phpunit/phpunit": "3.7.*",
306
+                "symfony/console": "~2.0"
307
+            },
308
+            "suggest": {
309
+                "symfony/console": "For helpful console commands such as SQL execution and import of files."
310
+            },
311
+            "type": "library",
312
+            "autoload": {
313
+                "psr-0": {
314
+                    "Doctrine\\DBAL\\": "lib/"
315
+                }
316
+            },
317
+            "notification-url": "https://packagist.org/downloads/",
318
+            "license": [
319
+                "MIT"
320
+            ],
321
+            "authors": [
322
+                {
323
+                    "name": "Roman Borschel",
324
+                    "email": "roman@code-factory.org"
325
+                },
326
+                {
327
+                    "name": "Benjamin Eberlei",
328
+                    "email": "kontakt@beberlei.de"
329
+                },
330
+                {
331
+                    "name": "Guilherme Blanco",
332
+                    "email": "guilhermeblanco@gmail.com"
333
+                },
334
+                {
335
+                    "name": "Jonathan Wage",
336
+                    "email": "jonwage@gmail.com"
337
+                }
338
+            ],
339
+            "description": "Database Abstraction Layer",
340
+            "homepage": "http://www.doctrine-project.org",
341
+            "keywords": [
342
+                "database",
343
+                "dbal",
344
+                "persistence",
345
+                "queryobject"
346
+            ],
347
+            "time": "2015-01-12 21:57:01"
348
+        },
349
+        {
350
+            "name": "doctrine/doctrine-bundle",
351
+            "version": "v1.5.0",
352
+            "source": {
353
+                "type": "git",
354
+                "url": "https://github.com/doctrine/DoctrineBundle.git",
355
+                "reference": "0b9e27037c4fdbad515ee5ec89842e9091a6480f"
356
+            },
357
+            "dist": {
358
+                "type": "zip",
359
+                "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0b9e27037c4fdbad515ee5ec89842e9091a6480f",
360
+                "reference": "0b9e27037c4fdbad515ee5ec89842e9091a6480f",
361
+                "shasum": ""
362
+            },
363
+            "require": {
364
+                "doctrine/dbal": "~2.3",
365
+                "doctrine/doctrine-cache-bundle": "~1.0",
366
+                "jdorn/sql-formatter": "~1.1",
367
+                "php": ">=5.3.2",
368
+                "symfony/console": "~2.3",
369
+                "symfony/doctrine-bridge": "~2.2",
370
+                "symfony/framework-bundle": "~2.3"
371
+            },
372
+            "require-dev": {
373
+                "doctrine/orm": "~2.3",
374
+                "phpunit/phpunit": "~4",
375
+                "satooshi/php-coveralls": "~0.6.1",
376
+                "symfony/validator": "~2.2",
377
+                "symfony/yaml": "~2.2",
378
+                "twig/twig": "~1.10"
379
+            },
380
+            "suggest": {
381
+                "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
382
+                "symfony/web-profiler-bundle": "to use the data collector"
383
+            },
384
+            "type": "symfony-bundle",
385
+            "extra": {
386
+                "branch-alias": {
387
+                    "dev-master": "1.5.x-dev"
388
+                }
389
+            },
390
+            "autoload": {
391
+                "psr-4": {
392
+                    "Doctrine\\Bundle\\DoctrineBundle\\": ""
393
+                }
394
+            },
395
+            "notification-url": "https://packagist.org/downloads/",
396
+            "license": [
397
+                "MIT"
398
+            ],
399
+            "authors": [
400
+                {
401
+                    "name": "Symfony Community",
402
+                    "homepage": "http://symfony.com/contributors"
403
+                },
404
+                {
405
+                    "name": "Benjamin Eberlei",
406
+                    "email": "kontakt@beberlei.de"
407
+                },
408
+                {
409
+                    "name": "Doctrine Project",
410
+                    "homepage": "http://www.doctrine-project.org/"
411
+                },
412
+                {
413
+                    "name": "Fabien Potencier",
414
+                    "email": "fabien@symfony.com"
415
+                }
416
+            ],
417
+            "description": "Symfony DoctrineBundle",
418
+            "homepage": "http://www.doctrine-project.org",
419
+            "keywords": [
420
+                "database",
421
+                "dbal",
422
+                "orm",
423
+                "persistence"
424
+            ],
425
+            "time": "2015-05-28 12:27:15"
426
+        },
427
+        {
428
+            "name": "doctrine/doctrine-cache-bundle",
429
+            "version": "v1.0.1",
430
+            "target-dir": "Doctrine/Bundle/DoctrineCacheBundle",
431
+            "source": {
432
+                "type": "git",
433
+                "url": "https://github.com/doctrine/DoctrineCacheBundle.git",
434
+                "reference": "e4b6f810aa047f9cbfe41c3d6a3d7e83d7477a9d"
435
+            },
436
+            "dist": {
437
+                "type": "zip",
438
+                "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/e4b6f810aa047f9cbfe41c3d6a3d7e83d7477a9d",
439
+                "reference": "e4b6f810aa047f9cbfe41c3d6a3d7e83d7477a9d",
440
+                "shasum": ""
441
+            },
442
+            "require": {
443
+                "doctrine/cache": "~1.3",
444
+                "doctrine/inflector": "~1.0",
445
+                "php": ">=5.3.2",
446
+                "symfony/doctrine-bridge": "~2.2",
447
+                "symfony/framework-bundle": "~2.2",
448
+                "symfony/security": "~2.2"
449
+            },
450
+            "require-dev": {
451
+                "instaclick/coding-standard": "~1.1",
452
+                "instaclick/object-calisthenics-sniffs": "dev-master",
453
+                "instaclick/symfony2-coding-standard": "dev-remaster",
454
+                "phpunit/phpunit": "~3.7",
455
+                "satooshi/php-coveralls": "~0.6.1",
456
+                "squizlabs/php_codesniffer": "dev-master",
457
+                "symfony/console": "~2.2",
458
+                "symfony/finder": "~2.2",
459
+                "symfony/validator": "~2.2",
460
+                "symfony/yaml": "~2.2"
461
+            },
462
+            "type": "symfony-bundle",
463
+            "extra": {
464
+                "branch-alias": {
465
+                    "dev-master": "1.0.x-dev"
466
+                }
467
+            },
468
+            "autoload": {
469
+                "psr-0": {
470
+                    "Doctrine\\Bundle\\DoctrineCacheBundle": ""
471
+                }
472
+            },
473
+            "notification-url": "https://packagist.org/downloads/",
474
+            "license": [
475
+                "MIT"
476
+            ],
477
+            "authors": [
478
+                {
479
+                    "name": "Symfony Community",
480
+                    "homepage": "http://symfony.com/contributors"
481
+                },
482
+                {
483
+                    "name": "Benjamin Eberlei",
484
+                    "email": "kontakt@beberlei.de"
485
+                },
486
+                {
487
+                    "name": "Fabio B. Silva",
488
+                    "email": "fabio.bat.silva@gmail.com"
489
+                },
490
+                {
491
+                    "name": "Guilherme Blanco",
492
+                    "email": "guilhermeblanco@hotmail.com"
493
+                },
494
+                {
495
+                    "name": "Doctrine Project",
496
+                    "homepage": "http://www.doctrine-project.org/"
497
+                },
498
+                {
499
+                    "name": "Fabien Potencier",
500
+                    "email": "fabien@symfony.com"
501
+                }
502
+            ],
503
+            "description": "Symfony2 Bundle for Doctrine Cache",
504
+            "homepage": "http://www.doctrine-project.org",
505
+            "keywords": [
506
+                "cache",
507
+                "caching"
508
+            ],
509
+            "time": "2014-11-28 09:43:36"
510
+        },
511
+        {
512
+            "name": "doctrine/inflector",
513
+            "version": "v1.0.1",
514
+            "source": {
515
+                "type": "git",
516
+                "url": "https://github.com/doctrine/inflector.git",
517
+                "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604"
518
+            },
519
+            "dist": {
520
+                "type": "zip",
521
+                "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604",
522
+                "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604",
523
+                "shasum": ""
524
+            },
525
+            "require": {
526
+                "php": ">=5.3.2"
527
+            },
528
+            "require-dev": {
529
+                "phpunit/phpunit": "4.*"
530
+            },
531
+            "type": "library",
532
+            "extra": {
533
+                "branch-alias": {
534
+                    "dev-master": "1.0.x-dev"
535
+                }
536
+            },
537
+            "autoload": {
538
+                "psr-0": {
539
+                    "Doctrine\\Common\\Inflector\\": "lib/"
540
+                }
541
+            },
542
+            "notification-url": "https://packagist.org/downloads/",
543
+            "license": [
544
+                "MIT"
545
+            ],
546
+            "authors": [
547
+                {
548
+                    "name": "Roman Borschel",
549
+                    "email": "roman@code-factory.org"
550
+                },
551
+                {
552
+                    "name": "Benjamin Eberlei",
553
+                    "email": "kontakt@beberlei.de"
554
+                },
555
+                {
556
+                    "name": "Guilherme Blanco",
557
+                    "email": "guilhermeblanco@gmail.com"
558
+                },
559
+                {
560
+                    "name": "Jonathan Wage",
561
+                    "email": "jonwage@gmail.com"
562
+                },
563
+                {
564
+                    "name": "Johannes Schmitt",
565
+                    "email": "schmittjoh@gmail.com"
566
+                }
567
+            ],
568
+            "description": "Common String Manipulations with regard to casing and singular/plural rules.",
569
+            "homepage": "http://www.doctrine-project.org",
570
+            "keywords": [
571
+                "inflection",
572
+                "pluralize",
573
+                "singularize",
574
+                "string"
575
+            ],
576
+            "time": "2014-12-20 21:24:13"
577
+        },
578
+        {
579
+            "name": "doctrine/lexer",
580
+            "version": "v1.0.1",
581
+            "source": {
582
+                "type": "git",
583
+                "url": "https://github.com/doctrine/lexer.git",
584
+                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
585
+            },
586
+            "dist": {
587
+                "type": "zip",
588
+                "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
589
+                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
590
+                "shasum": ""
591
+            },
592
+            "require": {
593
+                "php": ">=5.3.2"
594
+            },
595
+            "type": "library",
596
+            "extra": {
597
+                "branch-alias": {
598
+                    "dev-master": "1.0.x-dev"
599
+                }
600
+            },
601
+            "autoload": {
602
+                "psr-0": {
603
+                    "Doctrine\\Common\\Lexer\\": "lib/"
604
+                }
605
+            },
606
+            "notification-url": "https://packagist.org/downloads/",
607
+            "license": [
608
+                "MIT"
609
+            ],
610
+            "authors": [
611
+                {
612
+                    "name": "Roman Borschel",
613
+                    "email": "roman@code-factory.org"
614
+                },
615
+                {
616
+                    "name": "Guilherme Blanco",
617
+                    "email": "guilhermeblanco@gmail.com"
618
+                },
619
+                {
620
+                    "name": "Johannes Schmitt",
621
+                    "email": "schmittjoh@gmail.com"
622
+                }
623
+            ],
624
+            "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
625
+            "homepage": "http://www.doctrine-project.org",
626
+            "keywords": [
627
+                "lexer",
628
+                "parser"
629
+            ],
630
+            "time": "2014-09-09 13:34:57"
631
+        },
632
+        {
633
+            "name": "doctrine/orm",
634
+            "version": "v2.4.7",
635
+            "source": {
636
+                "type": "git",
637
+                "url": "https://github.com/doctrine/doctrine2.git",
638
+                "reference": "2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68"
639
+            },
640
+            "dist": {
641
+                "type": "zip",
642
+                "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68",
643
+                "reference": "2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68",
644
+                "shasum": ""
645
+            },
646
+            "require": {
647
+                "doctrine/collections": "~1.1",
648
+                "doctrine/dbal": "~2.4",
649
+                "ext-pdo": "*",
650
+                "php": ">=5.3.2",
651
+                "symfony/console": "~2.0"
652
+            },
653
+            "require-dev": {
654
+                "satooshi/php-coveralls": "dev-master",
655
+                "symfony/yaml": "~2.1"
656
+            },
657
+            "suggest": {
658
+                "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
659
+            },
660
+            "bin": [
661
+                "bin/doctrine",
662
+                "bin/doctrine.php"
663
+            ],
664
+            "type": "library",
665
+            "extra": {
666
+                "branch-alias": {
667
+                    "dev-master": "2.4.x-dev"
668
+                }
669
+            },
670
+            "autoload": {
671
+                "psr-0": {
672
+                    "Doctrine\\ORM\\": "lib/"
673
+                }
674
+            },
675
+            "notification-url": "https://packagist.org/downloads/",
676
+            "license": [
677
+                "MIT"
678
+            ],
679
+            "authors": [
680
+                {
681
+                    "name": "Roman Borschel",
682
+                    "email": "roman@code-factory.org"
683
+                },
684
+                {
685
+                    "name": "Benjamin Eberlei",
686
+                    "email": "kontakt@beberlei.de"
687
+                },
688
+                {
689
+                    "name": "Guilherme Blanco",
690
+                    "email": "guilhermeblanco@gmail.com"
691
+                },
692
+                {
693
+                    "name": "Jonathan Wage",
694
+                    "email": "jonwage@gmail.com"
695
+                }
696
+            ],
697
+            "description": "Object-Relational-Mapper for PHP",
698
+            "homepage": "http://www.doctrine-project.org",
699
+            "keywords": [
700
+                "database",
701
+                "orm"
702
+            ],
703
+            "time": "2014-12-16 13:45:01"
704
+        },
705
+        {
706
+            "name": "incenteev/composer-parameter-handler",
707
+            "version": "v2.1.1",
708
+            "source": {
709
+                "type": "git",
710
+                "url": "https://github.com/Incenteev/ParameterHandler.git",
711
+                "reference": "84a205fe80a46101607bafbc423019527893ddd0"
712
+            },
713
+            "dist": {
714
+                "type": "zip",
715
+                "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/84a205fe80a46101607bafbc423019527893ddd0",
716
+                "reference": "84a205fe80a46101607bafbc423019527893ddd0",
717
+                "shasum": ""
718
+            },
719
+            "require": {
720
+                "php": ">=5.3.3",
721
+                "symfony/yaml": "~2.0"
722
+            },
723
+            "require-dev": {
724
+                "composer/composer": "1.0.*@dev",
725
+                "phpspec/prophecy-phpunit": "~1.0",
726
+                "symfony/filesystem": "~2.2"
727
+            },
728
+            "type": "library",
729
+            "extra": {
730
+                "branch-alias": {
731
+                    "dev-master": "2.1.x-dev"
732
+                }
733
+            },
734
+            "autoload": {
735
+                "psr-4": {
736
+                    "Incenteev\\ParameterHandler\\": ""
737
+                }
738
+            },
739
+            "notification-url": "https://packagist.org/downloads/",
740
+            "license": [
741
+                "MIT"
742
+            ],
743
+            "authors": [
744
+                {
745
+                    "name": "Christophe Coevoet",
746
+                    "email": "stof@notk.org"
747
+                }
748
+            ],
749
+            "description": "Composer script handling your ignored parameter file",
750
+            "homepage": "https://github.com/Incenteev/ParameterHandler",
751
+            "keywords": [
752
+                "parameters management"
753
+            ],
754
+            "time": "2015-06-03 08:27:03"
755
+        },
756
+        {
757
+            "name": "jdorn/sql-formatter",
758
+            "version": "v1.2.17",
759
+            "source": {
760
+                "type": "git",
761
+                "url": "https://github.com/jdorn/sql-formatter.git",
762
+                "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
763
+            },
764
+            "dist": {
765
+                "type": "zip",
766
+                "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
767
+                "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
768
+                "shasum": ""
769
+            },
770
+            "require": {
771
+                "php": ">=5.2.4"
772
+            },
773
+            "require-dev": {
774
+                "phpunit/phpunit": "3.7.*"
775
+            },
776
+            "type": "library",
777
+            "extra": {
778
+                "branch-alias": {
779
+                    "dev-master": "1.3.x-dev"
780
+                }
781
+            },
782
+            "autoload": {
783
+                "classmap": [
784
+                    "lib"
785
+                ]
786
+            },
787
+            "notification-url": "https://packagist.org/downloads/",
788
+            "license": [
789
+                "MIT"
790
+            ],
791
+            "authors": [
792
+                {
793
+                    "name": "Jeremy Dorn",
794
+                    "email": "jeremy@jeremydorn.com",
795
+                    "homepage": "http://jeremydorn.com/"
796
+                }
797
+            ],
798
+            "description": "a PHP SQL highlighting library",
799
+            "homepage": "https://github.com/jdorn/sql-formatter/",
800
+            "keywords": [
801
+                "highlight",
802
+                "sql"
803
+            ],
804
+            "time": "2014-01-12 16:20:24"
805
+        },
806
+        {
807
+            "name": "kriswallsmith/assetic",
808
+            "version": "v1.2.1",
809
+            "source": {
810
+                "type": "git",
811
+                "url": "https://github.com/kriswallsmith/assetic.git",
812
+                "reference": "b20efe38845d20458702f97f3ff625d80805897b"
813
+            },
814
+            "dist": {
815
+                "type": "zip",
816
+                "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/b20efe38845d20458702f97f3ff625d80805897b",
817
+                "reference": "b20efe38845d20458702f97f3ff625d80805897b",
818
+                "shasum": ""
819
+            },
820
+            "require": {
821
+                "php": ">=5.3.1",
822
+                "symfony/process": "~2.1"
823
+            },
824
+            "require-dev": {
825
+                "cssmin/cssmin": "*",
826
+                "joliclic/javascript-packer": "*",
827
+                "kamicane/packager": "*",
828
+                "leafo/lessphp": "*",
829
+                "leafo/scssphp": "*",
830
+                "leafo/scssphp-compass": "*",
831
+                "mrclay/minify": "*",
832
+                "patchwork/jsqueeze": "~1.0",
833
+                "phpunit/phpunit": "~4",
834
+                "psr/log": "~1.0",
835
+                "ptachoire/cssembed": "*",
836
+                "twig/twig": "~1.6"
837
+            },
838
+            "suggest": {
839
+                "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
840
+                "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
841
+                "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
842
+                "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
843
+                "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
844
+                "twig/twig": "Assetic provides the integration with the Twig templating engine"
845
+            },
846
+            "type": "library",
847
+            "extra": {
848
+                "branch-alias": {
849
+                    "dev-master": "1.2-dev"
850
+                }
851
+            },
852
+            "autoload": {
853
+                "psr-0": {
854
+                    "Assetic": "src/"
855
+                },
856
+                "files": [
857
+                    "src/functions.php"
858
+                ]
859
+            },
860
+            "notification-url": "https://packagist.org/downloads/",
861
+            "license": [
862
+                "MIT"
863
+            ],
864
+            "authors": [
865
+                {
866
+                    "name": "Kris Wallsmith",
867
+                    "email": "kris.wallsmith@gmail.com",
868
+                    "homepage": "http://kriswallsmith.net/"
869
+                }
870
+            ],
871
+            "description": "Asset Management for PHP",
872
+            "homepage": "https://github.com/kriswallsmith/assetic",
873
+            "keywords": [
874
+                "assets",
875
+                "compression",
876
+                "minification"
877
+            ],
878
+            "time": "2014-12-12 05:04:05"
879
+        },
880
+        {
881
+            "name": "monolog/monolog",
882
+            "version": "1.15.0",
883
+            "source": {
884
+                "type": "git",
885
+                "url": "https://github.com/Seldaek/monolog.git",
886
+                "reference": "dc5150cc608f2334c72c3b6a553ec9668a4156b0"
887
+            },
888
+            "dist": {
889
+                "type": "zip",
890
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/dc5150cc608f2334c72c3b6a553ec9668a4156b0",
891
+                "reference": "dc5150cc608f2334c72c3b6a553ec9668a4156b0",
892
+                "shasum": ""
893
+            },
894
+            "require": {
895
+                "php": ">=5.3.0",
896
+                "psr/log": "~1.0"
897
+            },
898
+            "provide": {
899
+                "psr/log-implementation": "1.0.0"
900
+            },
901
+            "require-dev": {
902
+                "aws/aws-sdk-php": "^2.4.9",
903
+                "doctrine/couchdb": "~1.0@dev",
904
+                "graylog2/gelf-php": "~1.0",
905
+                "php-console/php-console": "^3.1.3",
906
+                "phpunit/phpunit": "~4.5",
907
+                "phpunit/phpunit-mock-objects": "2.3.0",
908
+                "raven/raven": "~0.8",
909
+                "ruflin/elastica": ">=0.90 <3.0",
910
+                "swiftmailer/swiftmailer": "~5.3",
911
+                "videlalvaro/php-amqplib": "~2.4"
912
+            },
913
+            "suggest": {
914
+                "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
915
+                "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
916
+                "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
917
+                "ext-mongo": "Allow sending log messages to a MongoDB server",
918
+                "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
919
+                "php-console/php-console": "Allow sending log messages to Google Chrome",
920
+                "raven/raven": "Allow sending log messages to a Sentry server",
921
+                "rollbar/rollbar": "Allow sending log messages to Rollbar",
922
+                "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
923
+                "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
924
+            },
925
+            "type": "library",
926
+            "extra": {
927
+                "branch-alias": {
928
+                    "dev-master": "1.15.x-dev"
929
+                }
930
+            },
931
+            "autoload": {
932
+                "psr-4": {
933
+                    "Monolog\\": "src/Monolog"
934
+                }
935
+            },
936
+            "notification-url": "https://packagist.org/downloads/",
937
+            "license": [
938
+                "MIT"
939
+            ],
940
+            "authors": [
941
+                {
942
+                    "name": "Jordi Boggiano",
943
+                    "email": "j.boggiano@seld.be",
944
+                    "homepage": "http://seld.be"
945
+                }
946
+            ],
947
+            "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
948
+            "homepage": "http://github.com/Seldaek/monolog",
949
+            "keywords": [
950
+                "log",
951
+                "logging",
952
+                "psr-3"
953
+            ],
954
+            "time": "2015-07-12 13:54:09"
955
+        },
956
+        {
957
+            "name": "psr/log",
958
+            "version": "1.0.0",
959
+            "source": {
960
+                "type": "git",
961
+                "url": "https://github.com/php-fig/log.git",
962
+                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
963
+            },
964
+            "dist": {
965
+                "type": "zip",
966
+                "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
967
+                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
968
+                "shasum": ""
969
+            },
970
+            "type": "library",
971
+            "autoload": {
972
+                "psr-0": {
973
+                    "Psr\\Log\\": ""
974
+                }
975
+            },
976
+            "notification-url": "https://packagist.org/downloads/",
977
+            "license": [
978
+                "MIT"
979
+            ],
980
+            "authors": [
981
+                {
982
+                    "name": "PHP-FIG",
983
+                    "homepage": "http://www.php-fig.org/"
984
+                }
985
+            ],
986
+            "description": "Common interface for logging libraries",
987
+            "keywords": [
988
+                "log",
989
+                "psr",
990
+                "psr-3"
991
+            ],
992
+            "time": "2012-12-21 11:40:51"
993
+        },
994
+        {
995
+            "name": "sensio/distribution-bundle",
996
+            "version": "v4.0.0",
997
+            "target-dir": "Sensio/Bundle/DistributionBundle",
998
+            "source": {
999
+                "type": "git",
1000
+                "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
1001
+                "reference": "97929c0a642977acead3d911b2c5c1a944739d40"
1002
+            },
1003
+            "dist": {
1004
+                "type": "zip",
1005
+                "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/97929c0a642977acead3d911b2c5c1a944739d40",
1006
+                "reference": "97929c0a642977acead3d911b2c5c1a944739d40",
1007
+                "shasum": ""
1008
+            },
1009
+            "require": {
1010
+                "php": ">=5.3.9",
1011
+                "sensiolabs/security-checker": "~2.0",
1012
+                "symfony/class-loader": "~2.2",
1013
+                "symfony/framework-bundle": "~2.3",
1014
+                "symfony/process": "~2.2"
1015
+            },
1016
+            "require-dev": {
1017
+                "symfony/form": "~2.2",
1018
+                "symfony/validator": "~2.2",
1019
+                "symfony/yaml": "~2.2"
1020
+            },
1021
+            "suggest": {
1022
+                "symfony/form": "If you want to use the configurator",
1023
+                "symfony/validator": "If you want to use the configurator",
1024
+                "symfony/yaml": "If you want to use  the configurator"
1025
+            },
1026
+            "type": "symfony-bundle",
1027
+            "extra": {
1028
+                "branch-alias": {
1029
+                    "dev-master": "4.0.x-dev"
1030
+                }
1031
+            },
1032
+            "autoload": {
1033
+                "psr-0": {
1034
+                    "Sensio\\Bundle\\DistributionBundle": ""
1035
+                }
1036
+            },
1037
+            "notification-url": "https://packagist.org/downloads/",
1038
+            "license": [
1039
+                "MIT"
1040
+            ],
1041
+            "authors": [
1042
+                {
1043
+                    "name": "Fabien Potencier",
1044
+                    "email": "fabien@symfony.com"
1045
+                }
1046
+            ],
1047
+            "description": "Base bundle for Symfony Distributions",
1048
+            "keywords": [
1049
+                "configuration",
1050
+                "distribution"
1051
+            ],
1052
+            "time": "2015-06-11 20:55:01"
1053
+        },
1054
+        {
1055
+            "name": "sensio/framework-extra-bundle",
1056
+            "version": "v3.0.9",
1057
+            "source": {
1058
+                "type": "git",
1059
+                "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
1060
+                "reference": "0616fd568da051adc19ca63006cc808531ba2da4"
1061
+            },
1062
+            "dist": {
1063
+                "type": "zip",
1064
+                "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/0616fd568da051adc19ca63006cc808531ba2da4",
1065
+                "reference": "0616fd568da051adc19ca63006cc808531ba2da4",
1066
+                "shasum": ""
1067
+            },
1068
+            "require": {
1069
+                "doctrine/common": "~2.2",
1070
+                "symfony/framework-bundle": "~2.3"
1071
+            },
1072
+            "require-dev": {
1073
+                "symfony/expression-language": "~2.4",
1074
+                "symfony/security-bundle": "~2.4"
1075
+            },
1076
+            "suggest": {
1077
+                "symfony/expression-language": "",
1078
+                "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
1079
+                "symfony/security-bundle": ""
1080
+            },
1081
+            "type": "symfony-bundle",
1082
+            "extra": {
1083
+                "branch-alias": {
1084
+                    "dev-master": "3.0.x-dev"
1085
+                }
1086
+            },
1087
+            "autoload": {
1088
+                "psr-4": {
1089
+                    "Sensio\\Bundle\\FrameworkExtraBundle\\": ""
1090
+                }
1091
+            },
1092
+            "notification-url": "https://packagist.org/downloads/",
1093
+            "license": [
1094
+                "MIT"
1095
+            ],
1096
+            "authors": [
1097
+                {
1098
+                    "name": "Fabien Potencier",
1099
+                    "email": "fabien@symfony.com"
1100
+                }
1101
+            ],
1102
+            "description": "This bundle provides a way to configure your controllers with annotations",
1103
+            "keywords": [
1104
+                "annotations",
1105
+                "controllers"
1106
+            ],
1107
+            "time": "2015-06-05 13:59:21"
1108
+        },
1109
+        {
1110
+            "name": "sensiolabs/security-checker",
1111
+            "version": "v2.0.5",
1112
+            "source": {
1113
+                "type": "git",
1114
+                "url": "https://github.com/sensiolabs/security-checker.git",
1115
+                "reference": "2c2a71f1c77d9765c12638c4724d9ca23658a810"
1116
+            },
1117
+            "dist": {
1118
+                "type": "zip",
1119
+                "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/2c2a71f1c77d9765c12638c4724d9ca23658a810",
1120
+                "reference": "2c2a71f1c77d9765c12638c4724d9ca23658a810",
1121
+                "shasum": ""
1122
+            },
1123
+            "require": {
1124
+                "ext-curl": "*",
1125
+                "symfony/console": "~2.0"
1126
+            },
1127
+            "bin": [
1128
+                "security-checker"
1129
+            ],
1130
+            "type": "library",
1131
+            "extra": {
1132
+                "branch-alias": {
1133
+                    "dev-master": "2.0-dev"
1134
+                }
1135
+            },
1136
+            "autoload": {
1137
+                "psr-0": {
1138
+                    "SensioLabs\\Security": ""
1139
+                }
1140
+            },
1141
+            "notification-url": "https://packagist.org/downloads/",
1142
+            "license": [
1143
+                "MIT"
1144
+            ],
1145
+            "authors": [
1146
+                {
1147
+                    "name": "Fabien Potencier",
1148
+                    "email": "fabien.potencier@gmail.com"
1149
+                }
1150
+            ],
1151
+            "description": "A security checker for your composer.lock",
1152
+            "time": "2015-05-28 14:22:40"
1153
+        },
1154
+        {
1155
+            "name": "swiftmailer/swiftmailer",
1156
+            "version": "v5.4.1",
1157
+            "source": {
1158
+                "type": "git",
1159
+                "url": "https://github.com/swiftmailer/swiftmailer.git",
1160
+                "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421"
1161
+            },
1162
+            "dist": {
1163
+                "type": "zip",
1164
+                "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421",
1165
+                "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421",
1166
+                "shasum": ""
1167
+            },
1168
+            "require": {
1169
+                "php": ">=5.3.3"
1170
+            },
1171
+            "require-dev": {
1172
+                "mockery/mockery": "~0.9.1,<0.9.4"
1173
+            },
1174
+            "type": "library",
1175
+            "extra": {
1176
+                "branch-alias": {
1177
+                    "dev-master": "5.4-dev"
1178
+                }
1179
+            },
1180
+            "autoload": {
1181
+                "files": [
1182
+                    "lib/swift_required.php"
1183
+                ]
1184
+            },
1185
+            "notification-url": "https://packagist.org/downloads/",
1186
+            "license": [
1187
+                "MIT"
1188
+            ],
1189
+            "authors": [
1190
+                {
1191
+                    "name": "Chris Corbyn"
1192
+                },
1193
+                {
1194
+                    "name": "Fabien Potencier",
1195
+                    "email": "fabien@symfony.com"
1196
+                }
1197
+            ],
1198
+            "description": "Swiftmailer, free feature-rich PHP mailer",
1199
+            "homepage": "http://swiftmailer.org",
1200
+            "keywords": [
1201
+                "email",
1202
+                "mail",
1203
+                "mailer"
1204
+            ],
1205
+            "time": "2015-06-06 14:19:39"
1206
+        },
1207
+        {
1208
+            "name": "symfony/assetic-bundle",
1209
+            "version": "v2.6.1",
1210
+            "source": {
1211
+                "type": "git",
1212
+                "url": "https://github.com/symfony/AsseticBundle.git",
1213
+                "reference": "422b0add2110f0cf9bc7a873a386ea053f4a89f0"
1214
+            },
1215
+            "dist": {
1216
+                "type": "zip",
1217
+                "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/422b0add2110f0cf9bc7a873a386ea053f4a89f0",
1218
+                "reference": "422b0add2110f0cf9bc7a873a386ea053f4a89f0",
1219
+                "shasum": ""
1220
+            },
1221
+            "require": {
1222
+                "kriswallsmith/assetic": "~1.2",
1223
+                "php": ">=5.3.0",
1224
+                "symfony/console": "~2.3",
1225
+                "symfony/dependency-injection": "~2.3",
1226
+                "symfony/framework-bundle": "~2.3",
1227
+                "symfony/yaml": "~2.3"
1228
+            },
1229
+            "require-dev": {
1230
+                "kriswallsmith/spork": "~0.2",
1231
+                "patchwork/jsqueeze": "~1.0",
1232
+                "symfony/class-loader": "~2.3",
1233
+                "symfony/css-selector": "~2.3",
1234
+                "symfony/dom-crawler": "~2.3",
1235
+                "symfony/twig-bundle": "~2.3"
1236
+            },
1237
+            "suggest": {
1238
+                "kriswallsmith/spork": "to be able to dump assets in parallel",
1239
+                "symfony/twig-bundle": "to use the Twig integration"
1240
+            },
1241
+            "type": "symfony-bundle",
1242
+            "extra": {
1243
+                "branch-alias": {
1244
+                    "dev-master": "2.5-dev"
1245
+                }
1246
+            },
1247
+            "autoload": {
1248
+                "psr-4": {
1249
+                    "Symfony\\Bundle\\AsseticBundle\\": ""
1250
+                }
1251
+            },
1252
+            "notification-url": "https://packagist.org/downloads/",
1253
+            "license": [
1254
+                "MIT"
1255
+            ],
1256
+            "authors": [
1257
+                {
1258
+                    "name": "Kris Wallsmith",
1259
+                    "email": "kris.wallsmith@gmail.com",
1260
+                    "homepage": "http://kriswallsmith.net/"
1261
+                }
1262
+            ],
1263
+            "description": "Integrates Assetic into Symfony2",
1264
+            "homepage": "https://github.com/symfony/AsseticBundle",
1265
+            "keywords": [
1266
+                "assets",
1267
+                "compression",
1268
+                "minification"
1269
+            ],
1270
+            "time": "2015-01-27 12:45:16"
1271
+        },
1272
+        {
1273
+            "name": "symfony/monolog-bundle",
1274
+            "version": "v2.7.1",
1275
+            "source": {
1276
+                "type": "git",
1277
+                "url": "https://github.com/symfony/MonologBundle.git",
1278
+                "reference": "9320b6863404c70ebe111e9040dab96f251de7ac"
1279
+            },
1280
+            "dist": {
1281
+                "type": "zip",
1282
+                "url": "https://api.github.com/repos/symfony/MonologBundle/zipball/9320b6863404c70ebe111e9040dab96f251de7ac",
1283
+                "reference": "9320b6863404c70ebe111e9040dab96f251de7ac",
1284
+                "shasum": ""
1285
+            },
1286
+            "require": {
1287
+                "monolog/monolog": "~1.8",
1288
+                "php": ">=5.3.2",
1289
+                "symfony/config": "~2.3",
1290
+                "symfony/dependency-injection": "~2.3",
1291
+                "symfony/http-kernel": "~2.3",
1292
+                "symfony/monolog-bridge": "~2.3"
1293
+            },
1294
+            "require-dev": {
1295
+                "symfony/console": "~2.3",
1296
+                "symfony/yaml": "~2.3"
1297
+            },
1298
+            "type": "symfony-bundle",
1299
+            "extra": {
1300
+                "branch-alias": {
1301
+                    "dev-master": "2.7.x-dev"
1302
+                }
1303
+            },
1304
+            "autoload": {
1305
+                "psr-4": {
1306
+                    "Symfony\\Bundle\\MonologBundle\\": ""
1307
+                }
1308
+            },
1309
+            "notification-url": "https://packagist.org/downloads/",
1310
+            "license": [
1311
+                "MIT"
1312
+            ],
1313
+            "authors": [
1314
+                {
1315
+                    "name": "Symfony Community",
1316
+                    "homepage": "http://symfony.com/contributors"
1317
+                },
1318
+                {
1319
+                    "name": "Fabien Potencier",
1320
+                    "email": "fabien@symfony.com"
1321
+                }
1322
+            ],
1323
+            "description": "Symfony MonologBundle",
1324
+            "homepage": "http://symfony.com",
1325
+            "keywords": [
1326
+                "log",
1327
+                "logging"
1328
+            ],
1329
+            "time": "2015-01-04 20:21:17"
1330
+        },
1331
+        {
1332
+            "name": "symfony/swiftmailer-bundle",
1333
+            "version": "v2.3.8",
1334
+            "source": {
1335
+                "type": "git",
1336
+                "url": "https://github.com/symfony/SwiftmailerBundle.git",
1337
+                "reference": "970b13d01871207e81d17b17ddda025e7e21e797"
1338
+            },
1339
+            "dist": {
1340
+                "type": "zip",
1341
+                "url": "https://api.github.com/repos/symfony/SwiftmailerBundle/zipball/970b13d01871207e81d17b17ddda025e7e21e797",
1342
+                "reference": "970b13d01871207e81d17b17ddda025e7e21e797",
1343
+                "shasum": ""
1344
+            },
1345
+            "require": {
1346
+                "php": ">=5.3.2",
1347
+                "swiftmailer/swiftmailer": ">=4.2.0,~5.0",
1348
+                "symfony/swiftmailer-bridge": "~2.1"
1349
+            },
1350
+            "require-dev": {
1351
+                "symfony/config": "~2.1",
1352
+                "symfony/dependency-injection": "~2.1",
1353
+                "symfony/http-kernel": "~2.1",
1354
+                "symfony/yaml": "~2.1"
1355
+            },
1356
+            "suggest": {
1357
+                "psr/log": "Allows logging"
1358
+            },
1359
+            "type": "symfony-bundle",
1360
+            "extra": {
1361
+                "branch-alias": {
1362
+                    "dev-master": "2.3-dev"
1363
+                }
1364
+            },
1365
+            "autoload": {
1366
+                "psr-4": {
1367
+                    "Symfony\\Bundle\\SwiftmailerBundle\\": ""
1368
+                }
1369
+            },
1370
+            "notification-url": "https://packagist.org/downloads/",
1371
+            "license": [
1372
+                "MIT"
1373
+            ],
1374
+            "authors": [
1375
+                {
1376
+                    "name": "Symfony Community",
1377
+                    "homepage": "http://symfony.com/contributors"
1378
+                },
1379
+                {
1380
+                    "name": "Fabien Potencier",
1381
+                    "email": "fabien@symfony.com"
1382
+                }
1383
+            ],
1384
+            "description": "Symfony SwiftmailerBundle",
1385
+            "homepage": "http://symfony.com",
1386
+            "time": "2014-12-01 17:44:50"
1387
+        },
1388
+        {
1389
+            "name": "symfony/symfony",
1390
+            "version": "v2.7.2",
1391
+            "source": {
1392
+                "type": "git",
1393
+                "url": "https://github.com/symfony/symfony.git",
1394
+                "reference": "969d709ad428076bf1084e386dc26dd904d9fb84"
1395
+            },
1396
+            "dist": {
1397
+                "type": "zip",
1398
+                "url": "https://api.github.com/repos/symfony/symfony/zipball/969d709ad428076bf1084e386dc26dd904d9fb84",
1399
+                "reference": "969d709ad428076bf1084e386dc26dd904d9fb84",
1400
+                "shasum": ""
1401
+            },
1402
+            "require": {
1403
+                "doctrine/common": "~2.3",
1404
+                "php": ">=5.3.9",
1405
+                "psr/log": "~1.0",
1406
+                "twig/twig": "~1.18"
1407
+            },
1408
+            "replace": {
1409
+                "symfony/asset": "self.version",
1410
+                "symfony/browser-kit": "self.version",
1411
+                "symfony/class-loader": "self.version",
1412
+                "symfony/config": "self.version",
1413
+                "symfony/console": "self.version",
1414
+                "symfony/css-selector": "self.version",
1415
+                "symfony/debug": "self.version",
1416
+                "symfony/debug-bundle": "self.version",
1417
+                "symfony/dependency-injection": "self.version",
1418
+                "symfony/doctrine-bridge": "self.version",
1419
+                "symfony/dom-crawler": "self.version",
1420
+                "symfony/event-dispatcher": "self.version",
1421
+                "symfony/expression-language": "self.version",
1422
+                "symfony/filesystem": "self.version",
1423
+                "symfony/finder": "self.version",
1424
+                "symfony/form": "self.version",
1425
+                "symfony/framework-bundle": "self.version",
1426
+                "symfony/http-foundation": "self.version",
1427
+                "symfony/http-kernel": "self.version",
1428
+                "symfony/intl": "self.version",
1429
+                "symfony/locale": "self.version",
1430
+                "symfony/monolog-bridge": "self.version",
1431
+                "symfony/options-resolver": "self.version",
1432
+                "symfony/process": "self.version",
1433
+                "symfony/property-access": "self.version",
1434
+                "symfony/proxy-manager-bridge": "self.version",
1435
+                "symfony/routing": "self.version",
1436
+                "symfony/security": "self.version",
1437
+                "symfony/security-acl": "self.version",
1438
+                "symfony/security-bundle": "self.version",
1439
+                "symfony/security-core": "self.version",
1440
+                "symfony/security-csrf": "self.version",
1441
+                "symfony/security-http": "self.version",
1442
+                "symfony/serializer": "self.version",
1443
+                "symfony/stopwatch": "self.version",
1444
+                "symfony/swiftmailer-bridge": "self.version",
1445
+                "symfony/templating": "self.version",
1446
+                "symfony/translation": "self.version",
1447
+                "symfony/twig-bridge": "self.version",
1448
+                "symfony/twig-bundle": "self.version",
1449
+                "symfony/validator": "self.version",
1450
+                "symfony/var-dumper": "self.version",
1451
+                "symfony/web-profiler-bundle": "self.version",
1452
+                "symfony/yaml": "self.version"
1453
+            },
1454
+            "require-dev": {
1455
+                "doctrine/data-fixtures": "1.0.*",
1456
+                "doctrine/dbal": "~2.2",
1457
+                "doctrine/doctrine-bundle": "~1.2",
1458
+                "doctrine/orm": "~2.2,>=2.2.3",
1459
+                "egulias/email-validator": "~1.2",
1460
+                "ircmaxell/password-compat": "~1.0",
1461
+                "monolog/monolog": "~1.11",
1462
+                "ocramius/proxy-manager": "~0.4|~1.0",
1463
+                "symfony/phpunit-bridge": "self.version"
1464
+            },
1465
+            "type": "library",
1466
+            "extra": {
1467
+                "branch-alias": {
1468
+                    "dev-master": "2.7-dev"
1469
+                }
1470
+            },
1471
+            "autoload": {
1472
+                "psr-4": {
1473
+                    "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
1474
+                    "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
1475
+                    "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
1476
+                    "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/",
1477
+                    "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
1478
+                    "Symfony\\Bundle\\": "src/Symfony/Bundle/",
1479
+                    "Symfony\\Component\\": "src/Symfony/Component/"
1480
+                },
1481
+                "classmap": [
1482
+                    "src/Symfony/Component/HttpFoundation/Resources/stubs",
1483
+                    "src/Symfony/Component/Intl/Resources/stubs"
1484
+                ],
1485
+                "files": [
1486
+                    "src/Symfony/Component/Intl/Resources/stubs/functions.php"
1487
+                ]
1488
+            },
1489
+            "notification-url": "https://packagist.org/downloads/",
1490
+            "license": [
1491
+                "MIT"
1492
+            ],
1493
+            "authors": [
1494
+                {
1495
+                    "name": "Fabien Potencier",
1496
+                    "email": "fabien@symfony.com"
1497
+                },
1498
+                {
1499
+                    "name": "Symfony Community",
1500
+                    "homepage": "https://symfony.com/contributors"
1501
+                }
1502
+            ],
1503
+            "description": "The Symfony PHP framework",
1504
+            "homepage": "https://symfony.com",
1505
+            "keywords": [
1506
+                "framework"
1507
+            ],
1508
+            "time": "2015-07-13 19:27:49"
1509
+        },
1510
+        {
1511
+            "name": "twig/twig",
1512
+            "version": "v1.18.2",
1513
+            "source": {
1514
+                "type": "git",
1515
+                "url": "https://github.com/twigphp/Twig.git",
1516
+                "reference": "e8e6575abf6102af53ec283f7f14b89e304fa602"
1517
+            },
1518
+            "dist": {
1519
+                "type": "zip",
1520
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/e8e6575abf6102af53ec283f7f14b89e304fa602",
1521
+                "reference": "e8e6575abf6102af53ec283f7f14b89e304fa602",
1522
+                "shasum": ""
1523
+            },
1524
+            "require": {
1525
+                "php": ">=5.2.7"
1526
+            },
1527
+            "type": "library",
1528
+            "extra": {
1529
+                "branch-alias": {
1530
+                    "dev-master": "1.18-dev"
1531
+                }
1532
+            },
1533
+            "autoload": {
1534
+                "psr-0": {
1535
+                    "Twig_": "lib/"
1536
+                }
1537
+            },
1538
+            "notification-url": "https://packagist.org/downloads/",
1539
+            "license": [
1540
+                "BSD-3-Clause"
1541
+            ],
1542
+            "authors": [
1543
+                {
1544
+                    "name": "Fabien Potencier",
1545
+                    "email": "fabien@symfony.com",
1546
+                    "homepage": "http://fabien.potencier.org",
1547
+                    "role": "Lead Developer"
1548
+                },
1549
+                {
1550
+                    "name": "Armin Ronacher",
1551
+                    "email": "armin.ronacher@active-4.com",
1552
+                    "role": "Project Founder"
1553
+                },
1554
+                {
1555
+                    "name": "Twig Team",
1556
+                    "homepage": "http://twig.sensiolabs.org/contributors",
1557
+                    "role": "Contributors"
1558
+                }
1559
+            ],
1560
+            "description": "Twig, the flexible, fast, and secure template language for PHP",
1561
+            "homepage": "http://twig.sensiolabs.org",
1562
+            "keywords": [
1563
+                "templating"
1564
+            ],
1565
+            "time": "2015-06-06 23:31:24"
1566
+        }
1567
+    ],
1568
+    "packages-dev": [
1569
+        {
1570
+            "name": "sensio/generator-bundle",
1571
+            "version": "v2.5.3",
1572
+            "target-dir": "Sensio/Bundle/GeneratorBundle",
1573
+            "source": {
1574
+                "type": "git",
1575
+                "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
1576
+                "reference": "e50108c2133ee5c9c484555faed50c17a61221d3"
1577
+            },
1578
+            "dist": {
1579
+                "type": "zip",
1580
+                "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/e50108c2133ee5c9c484555faed50c17a61221d3",
1581
+                "reference": "e50108c2133ee5c9c484555faed50c17a61221d3",
1582
+                "shasum": ""
1583
+            },
1584
+            "require": {
1585
+                "symfony/console": "~2.5",
1586
+                "symfony/framework-bundle": "~2.2"
1587
+            },
1588
+            "require-dev": {
1589
+                "doctrine/orm": "~2.2,>=2.2.3",
1590
+                "symfony/doctrine-bridge": "~2.2",
1591
+                "twig/twig": "~1.11"
1592
+            },
1593
+            "type": "symfony-bundle",
1594
+            "extra": {
1595
+                "branch-alias": {
1596
+                    "dev-master": "2.5.x-dev"
1597
+                }
1598
+            },
1599
+            "autoload": {
1600
+                "psr-0": {
1601
+                    "Sensio\\Bundle\\GeneratorBundle": ""
1602
+                }
1603
+            },
1604
+            "notification-url": "https://packagist.org/downloads/",
1605
+            "license": [
1606
+                "MIT"
1607
+            ],
1608
+            "authors": [
1609
+                {
1610
+                    "name": "Fabien Potencier",
1611
+                    "email": "fabien@symfony.com"
1612
+                }
1613
+            ],
1614
+            "description": "This bundle generates code for you",
1615
+            "time": "2015-03-17 06:36:52"
1616
+        }
1617
+    ],
1618
+    "aliases": [],
1619
+    "minimum-stability": "stable",
1620
+    "stability-flags": [],
1621
+    "prefer-stable": false,
1622
+    "prefer-lowest": false,
1623
+    "platform": {
1624
+        "php": ">=5.3.9"
1625
+    },
1626
+    "platform-dev": []
1627
+}
0 1628
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+<IfModule mod_authz_core.c>
2
+    Require all denied
3
+</IfModule>
4
+<IfModule !mod_authz_core.c>
5
+    Order deny,allow
6
+    Deny from all
7
+</IfModule>
0 8
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+<?php
2
+
3
+namespace AppBundle;
4
+
5
+use Symfony\Component\HttpKernel\Bundle\Bundle;
6
+
7
+class AppBundle extends Bundle
8
+{
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,18 @@
1
+<?php
2
+
3
+namespace AppBundle\Controller;
4
+
5
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
6
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
7
+use Symfony\Component\HttpFoundation\Request;
8
+
9
+class DefaultController extends Controller
10
+{
11
+    /**
12
+     * @Route("/app/example", name="homepage")
13
+     */
14
+    public function indexAction()
15
+    {
16
+        return $this->render('default/index.html.twig');
17
+    }
18
+}
0 19
new file mode 100644
... ...
@@ -0,0 +1,18 @@
1
+<?php
2
+
3
+namespace AppBundle\Tests\Controller;
4
+
5
+use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
6
+
7
+class DefaultControllerTest extends WebTestCase
8
+{
9
+    public function testIndex()
10
+    {
11
+        $client = static::createClient();
12
+
13
+        $crawler = $client->request('GET', '/app/example');
14
+
15
+        $this->assertEquals(200, $client->getResponse()->getStatusCode());
16
+        $this->assertTrue($crawler->filter('html:contains("Homepage")')->count() > 0);
17
+    }
18
+}
0 19
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+<?php
2
+
3
+namespace Blogger\BlogBundle;
4
+
5
+use Symfony\Component\HttpKernel\Bundle\Bundle;
6
+
7
+class BloggerBlogBundle extends Bundle
8
+{
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+<?php
2
+
3
+namespace Blogger\BlogBundle\Controller;
4
+
5
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
6
+
7
+class DefaultController extends Controller
8
+{
9
+    public function indexAction($name)
10
+    {
11
+        return $this->render('BloggerBlogBundle:Default:index.html.twig', array('name' => $name));
12
+    }
13
+}
0 14
new file mode 100644
... ...
@@ -0,0 +1,28 @@
1
+<?php
2
+
3
+namespace Blogger\BlogBundle\DependencyInjection;
4
+
5
+use Symfony\Component\DependencyInjection\ContainerBuilder;
6
+use Symfony\Component\Config\FileLocator;
7
+use Symfony\Component\HttpKernel\DependencyInjection\Extension;
8
+use Symfony\Component\DependencyInjection\Loader;
9
+
10
+/**
11
+ * This is the class that loads and manages your bundle configuration
12
+ *
13
+ * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
14
+ */
15
+class BloggerBlogExtension extends Extension
16
+{
17
+    /**
18
+     * {@inheritdoc}
19
+     */
20
+    public function load(array $configs, ContainerBuilder $container)
21
+    {
22
+        $configuration = new Configuration();
23
+        $config = $this->processConfiguration($configuration, $configs);
24
+
25
+        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
26
+        $loader->load('services.yml');
27
+    }
28
+}
0 29
new file mode 100644
... ...
@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+namespace Blogger\BlogBundle\DependencyInjection;
4
+
5
+use Symfony\Component\Config\Definition\Builder\TreeBuilder;
6
+use Symfony\Component\Config\Definition\ConfigurationInterface;
7
+
8
+/**
9
+ * This is the class that validates and merges configuration from your app/config files
10
+ *
11
+ * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}
12
+ */
13
+class Configuration implements ConfigurationInterface
14
+{
15
+    /**
16
+     * {@inheritdoc}
17
+     */
18
+    public function getConfigTreeBuilder()
19
+    {
20
+        $treeBuilder = new TreeBuilder();
21
+        $rootNode = $treeBuilder->root('blogger_blog');
22
+
23
+        // Here you should define the parameters that are allowed to
24
+        // configure your bundle. See the documentation linked above for
25
+        // more information on that topic.
26
+
27
+        return $treeBuilder;
28
+    }
29
+}
0 30
new file mode 100644
... ...
@@ -0,0 +1,3 @@
1
+blogger_blog_homepage:
2
+    path:     /hello/{name}
3
+    defaults: { _controller: BloggerBlogBundle:Default:index }
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+services:
2
+#    blogger_blog.example:
3
+#        class: Blogger\BlogBundle\Example
4
+#        arguments: [@service_id, "plain_value", %parameter%]
0 2
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+<?php
2
+
3
+namespace Blogger\BlogBundle\Tests\Controller;
4
+
5
+use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
6
+
7
+class DefaultControllerTest extends WebTestCase
8
+{
9
+    public function testIndex()
10
+    {
11
+        $client = static::createClient();
12
+
13
+        $crawler = $client->request('GET', '/hello/Fabien');
14
+
15
+        $this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0);
16
+    }
17
+}
0 18
new file mode 100644
... ...
@@ -0,0 +1,67 @@
1
+# Use the front controller as index file. It serves as a fallback solution when
2
+# every other rewrite/redirect fails (e.g. in an aliased environment without
3
+# mod_rewrite). Additionally, this reduces the matching process for the
4
+# start page (path "/") because otherwise Apache will apply the rewriting rules
5
+# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
6
+DirectoryIndex app.php
7
+
8
+# uncomment the following line if you install assets as symlinks
9
+# or run into problems when compiling LESS/Sass/CoffeScript assets
10
+#
11
+# Options FollowSymlinks
12
+
13
+# Disabling MultiViews prevents unwanted negotiation, e.g. "/app" should not resolve
14
+# to the front controller "/app.php" but be rewritten to "/app.php/app".
15
+<IfModule mod_negotiation.c>
16
+    Options -MultiViews
17
+</IfModule>
18
+
19
+<IfModule mod_rewrite.c>
20
+    RewriteEngine On
21
+
22
+    # Determine the RewriteBase automatically and set it as environment variable.
23
+    # If you are using Apache aliases to do mass virtual hosting or installed the
24
+    # project in a subdirectory, the base path will be prepended to allow proper
25
+    # resolution of the app.php file and to redirect to the correct URI. It will
26
+    # work in environments without path prefix as well, providing a safe, one-size
27
+    # fits all solution. But as you do not need it in this case, you can comment
28
+    # the following 2 lines to eliminate the overhead.
29
+    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
30
+    RewriteRule ^(.*) - [E=BASE:%1]
31
+
32
+    # Sets the HTTP_AUTHORIZATION header removed by apache
33
+    RewriteCond %{HTTP:Authorization} .
34
+    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
35
+
36
+    # Redirect to URI without front controller to prevent duplicate content
37
+    # (with and without `/app.php`). Only do this redirect on the initial
38
+    # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
39
+    # endless redirect loop (request -> rewrite to front controller ->
40
+    # redirect -> request -> ...).
41
+    # So in case you get a "too many redirects" error or you always get redirected
42
+    # to the start page because your Apache does not expose the REDIRECT_STATUS
43
+    # environment variable, you have 2 choices:
44
+    # - disable this feature by commenting the following 2 lines or
45
+    # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
46
+    #   following RewriteCond (best solution)
47
+    RewriteCond %{ENV:REDIRECT_STATUS} ^$
48
+    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
49
+
50
+    # If the requested filename exists, simply serve it.
51
+    # We only want to let Apache serve files and not directories.
52
+    RewriteCond %{REQUEST_FILENAME} -f
53
+    RewriteRule .? - [L]
54
+
55
+    # Rewrite all other queries to the front controller.
56
+    RewriteRule .? %{ENV:BASE}/app.php [L]
57
+</IfModule>
58
+
59
+<IfModule !mod_rewrite.c>
60
+    <IfModule mod_alias.c>
61
+        # When mod_rewrite is not available, we instruct a temporary redirect of
62
+        # the start page to the front controller explicitly so that the website
63
+        # and the generated links can still be used.
64
+        RedirectMatch 302 ^/$ /app.php/
65
+        # RedirectTemp cannot be used instead
66
+    </IfModule>
67
+</IfModule>
0 68
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+<?php
2
+
3
+use Symfony\Component\ClassLoader\ApcClassLoader;
4
+use Symfony\Component\HttpFoundation\Request;
5
+
6
+$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
7
+
8
+// Enable APC for autoloading to improve performance.
9
+// You should change the ApcClassLoader first argument to a unique prefix
10
+// in order to prevent cache key conflicts with other applications
11
+// also using APC.
12
+/*
13
+$apcLoader = new ApcClassLoader(sha1(__FILE__), $loader);
14
+$loader->unregister();
15
+$apcLoader->register(true);
16
+*/
17
+
18
+require_once __DIR__.'/../app/AppKernel.php';
19
+//require_once __DIR__.'/../app/AppCache.php';
20
+
21
+$kernel = new AppKernel('prod', false);
22
+$kernel->loadClassCache();
23
+//$kernel = new AppCache($kernel);
24
+
25
+// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
26
+//Request::enableHttpMethodParameterOverride();
27
+$request = Request::createFromGlobals();
28
+$response = $kernel->handle($request);
29
+$response->send();
30
+$kernel->terminate($request, $response);
0 31
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+<?php
2
+
3
+use Symfony\Component\HttpFoundation\Request;
4
+use Symfony\Component\Debug\Debug;
5
+
6
+// If you don't want to setup permissions the proper way, just uncomment the following PHP line
7
+// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
8
+//umask(0000);
9
+
10
+// This check prevents access to debug front controllers that are deployed by accident to production servers.
11
+// Feel free to remove this, extend it, or make something more sophisticated.
12
+if (isset($_SERVER['HTTP_CLIENT_IP'])
13
+    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
14
+    || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
15
+) {
16
+    header('HTTP/1.0 403 Forbidden');
17
+    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
18
+}
19
+
20
+$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
21
+Debug::enable();
22
+
23
+require_once __DIR__.'/../app/AppKernel.php';
24
+
25
+$kernel = new AppKernel('dev', true);
26
+$kernel->loadClassCache();
27
+$request = Request::createFromGlobals();
28
+$response = $kernel->handle($request);
29
+$response->send();
30
+$kernel->terminate($request, $response);
0 31
new file mode 100644
1 32
Binary files /dev/null and b/web/apple-touch-icon.png differ
2 33
new file mode 100644
... ...
@@ -0,0 +1,124 @@
1
+<?php
2
+
3
+if (!isset($_SERVER['HTTP_HOST'])) {
4
+    exit('This script cannot be run from the CLI. Run it from a browser.');
5
+}
6
+
7
+if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
8
+    '127.0.0.1',
9
+    '::1',
10
+))) {
11
+    header('HTTP/1.0 403 Forbidden');
12
+    exit('This script is only accessible from localhost.');
13
+}
14
+
15
+require_once dirname(__FILE__).'/../app/SymfonyRequirements.php';
16
+
17
+$symfonyRequirements = new SymfonyRequirements();
18
+
19
+$majorProblems = $symfonyRequirements->getFailedRequirements();
20
+$minorProblems = $symfonyRequirements->getFailedRecommendations();
21
+
22
+?>
23
+<!DOCTYPE html>
24
+<html>
25
+    <head>
26
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
27
+        <meta name="robots" content="noindex,nofollow" />
28
+        <title>Symfony Configuration</title>
29
+        <link rel="stylesheet" href="bundles/framework/css/structure.css" media="all" />
30
+        <link rel="stylesheet" href="bundles/framework/css/body.css" media="all" />
31
+        <link rel="stylesheet" href="bundles/sensiodistribution/webconfigurator/css/install.css" media="all" />
32
+    </head>
33
+    <body>
34
+        <div id="content">
35
+            <div class="header clear-fix">
36
+                <div class="header-logo">
37
+                    <img src="bundles/framework/images/logo_symfony.png" alt="Symfony" />
38
+                </div>
39
+
40
+                <div class="search">
41
+                  <form method="get" action="http://symfony.com/search">
42
+                    <div class="form-row">
43
+
44
+                      <label for="search-id">
45
+                          <img src="bundles/framework/images/grey_magnifier.png" alt="Search on Symfony website" />
46
+                      </label>
47
+
48
+                      <input name="q" id="search-id" type="search" placeholder="Search on Symfony website" />
49
+
50
+                      <button type="submit" class="sf-button">
51
+                          <span class="border-l">
52
+                            <span class="border-r">
53
+                                <span class="btn-bg">OK</span>
54
+                            </span>
55
+                        </span>
56
+                      </button>
57
+                    </div>
58
+                   </form>
59
+                </div>
60
+            </div>
61
+
62
+            <div class="sf-reset">
63
+                <div class="block">
64
+                    <div class="symfony-block-content">
65
+                        <h1 class="title">Welcome!</h1>
66
+                        <p>Welcome to your new Symfony project.</p>
67
+                        <p>
68
+                            This script will guide you through the basic configuration of your project.
69
+                            You can also do the same by editing the ‘<strong>app/config/parameters.yml</strong>’ file directly.
70
+                        </p>
71
+
72
+                        <?php if (count($majorProblems)): ?>
73
+                            <h2 class="ko">Major problems</h2>
74
+                            <p>Major problems have been detected and <strong>must</strong> be fixed before continuing:</p>
75
+                            <ol>
76
+                                <?php foreach ($majorProblems as $problem): ?>
77
+                                    <li><?php echo $problem->getHelpHtml() ?></li>
78
+                                <?php endforeach; ?>
79
+                            </ol>
80
+                        <?php endif; ?>
81
+
82
+                        <?php if (count($minorProblems)): ?>
83
+                            <h2>Recommendations</h2>
84
+                            <p>
85
+                                <?php if (count($majorProblems)): ?>Additionally, to<?php else: ?>To<?php endif; ?> enhance your Symfony experience,
86
+                                it’s recommended that you fix the following:
87
+                            </p>
88
+                            <ol>
89
+                                <?php foreach ($minorProblems as $problem): ?>
90
+                                    <li><?php echo $problem->getHelpHtml() ?></li>
91
+                                <?php endforeach; ?>
92
+                            </ol>
93
+                        <?php endif; ?>
94
+
95
+                        <?php if ($symfonyRequirements->hasPhpIniConfigIssue()): ?>
96
+                            <p id="phpini">*
97
+                                <?php if ($symfonyRequirements->getPhpIniConfigPath()): ?>
98
+                                    Changes to the <strong>php.ini</strong> file must be done in "<strong><?php echo $symfonyRequirements->getPhpIniConfigPath() ?></strong>".
99
+                                <?php else: ?>
100
+                                    To change settings, create a "<strong>php.ini</strong>".
101
+                                <?php endif; ?>
102
+                            </p>
103
+                        <?php endif; ?>
104
+
105
+                        <?php if (!count($majorProblems) && !count($minorProblems)): ?>
106
+                            <p class="ok">Your configuration looks good to run Symfony.</p>
107
+                        <?php endif; ?>
108
+
109
+                        <ul class="symfony-install-continue">
110
+                            <?php if (!count($majorProblems)): ?>
111
+                                <li><a href="app_dev.php/_configurator/">Configure your Symfony Application online</a></li>
112
+                                <li><a href="app_dev.php/">Bypass configuration and go to the Welcome page</a></li>
113
+                            <?php endif; ?>
114
+                            <?php if (count($majorProblems) || count($minorProblems)): ?>
115
+                                <li><a href="config.php">Re-check configuration</a></li>
116
+                            <?php endif; ?>
117
+                        </ul>
118
+                    </div>
119
+                </div>
120
+            </div>
121
+            <div class="version">Symfony Standard Edition</div>
122
+        </div>
123
+    </body>
124
+</html>
0 125
new file mode 100644
1 126
Binary files /dev/null and b/web/favicon.ico differ
2 127
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+# www.robotstxt.org/
2
+# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
3
+
4
+User-agent: *