Compare commits
No commits in common. "RepriseClement" and "master" have entirely different histories.
RepriseCle
...
master
16
.gitignore
vendored
16
.gitignore
vendored
|
@ -1,16 +0,0 @@
|
||||||
/web/bundles/
|
|
||||||
/app/propel/
|
|
||||||
/app/bootstrap.php.cache
|
|
||||||
/app/cache/*
|
|
||||||
/app/config/parameters.yml
|
|
||||||
/app/logs/*
|
|
||||||
!app/cache/.gitkeep
|
|
||||||
!app/logs/.gitkeep
|
|
||||||
/src/CoursEndingBundle/Model/Base/
|
|
||||||
/src/CoursEndingBundle/Model/Map/
|
|
||||||
/app/phpunit.xml
|
|
||||||
/web/components/
|
|
||||||
/build/
|
|
||||||
/vendor/
|
|
||||||
/bin/
|
|
||||||
/composer.phar
|
|
|
@ -1,4 +1,2 @@
|
||||||
cours-ending
|
# cours-ending
|
||||||
============
|
|
||||||
|
|
||||||
A Symfony project created on March 18, 2016, 10:15 pm.
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<IfModule mod_authz_core.c>
|
|
||||||
Require all denied
|
|
||||||
</IfModule>
|
|
||||||
<IfModule !mod_authz_core.c>
|
|
||||||
Order deny,allow
|
|
||||||
Deny from all
|
|
||||||
</IfModule>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
|
|
||||||
|
|
||||||
class AppCache extends HttpCache
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Symfony\Component\HttpKernel\Kernel;
|
|
||||||
use Symfony\Component\Config\Loader\LoaderInterface;
|
|
||||||
|
|
||||||
class AppKernel extends Kernel
|
|
||||||
{
|
|
||||||
public function registerBundles()
|
|
||||||
{
|
|
||||||
$bundles = array(
|
|
||||||
// default bundles
|
|
||||||
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
|
|
||||||
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
|
|
||||||
new Symfony\Bundle\TwigBundle\TwigBundle(),
|
|
||||||
new Symfony\Bundle\MonologBundle\MonologBundle(),
|
|
||||||
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
|
|
||||||
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
|
|
||||||
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
|
|
||||||
|
|
||||||
// dependencies
|
|
||||||
new FOS\RestBundle\FOSRestBundle(),
|
|
||||||
new FOS\JsRoutingBundle\FOSJsRoutingBundle(),
|
|
||||||
new JMS\SerializerBundle\JMSSerializerBundle(),
|
|
||||||
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
|
|
||||||
new Propel\Bundle\PropelBundle\PropelBundle(),
|
|
||||||
|
|
||||||
// app
|
|
||||||
new CoursEndingBundle\CoursEndingBundle(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (in_array($this->getEnvironment(), array('dev', 'test'), true)) {
|
|
||||||
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
|
|
||||||
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
|
|
||||||
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
|
|
||||||
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $bundles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function registerContainerConfiguration(LoaderInterface $loader)
|
|
||||||
{
|
|
||||||
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<title>{% block title %}Welcome!{% endblock %}</title>
|
|
||||||
{% block stylesheets %}{% endblock %}
|
|
||||||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{% block body %}{% endblock %}
|
|
||||||
{% block javascripts %}
|
|
||||||
<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
|
|
||||||
<script src="{{ path('fos_js_routing_js', {'callback': 'fos.Router.setData'}) }}"></script>
|
|
||||||
<script type="text/javascript" src="{{ asset('components/marked/lib/marked.js') }}"></script>
|
|
||||||
<script type="text/javascript" src="{{ asset('components/vue/dist/vue.min.js') }}"></script>
|
|
||||||
<script type="text/javascript" src="{{ asset('components/vue-validator/dist/vue-validator.js') }}"></script>
|
|
||||||
<script type="text/javascript" src="{{ asset('components/vue-resource/dist/vue-resource.js') }}"></script>
|
|
||||||
<script type="text/javascript" src="{{ asset('bundles/coursending/js/app.js') }}"></script>
|
|
||||||
{% endblock %}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,774 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of the Symfony package.
|
|
||||||
*
|
|
||||||
* (c) Fabien Potencier <fabien@symfony.com>
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Users of PHP 5.2 should be able to run the requirements checks.
|
|
||||||
* This is why the file and all classes must be compatible with PHP 5.2+
|
|
||||||
* (e.g. not using namespaces and closures).
|
|
||||||
*
|
|
||||||
* ************** CAUTION **************
|
|
||||||
*
|
|
||||||
* DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
|
|
||||||
* the installation/update process. The original file resides in the
|
|
||||||
* SensioDistributionBundle.
|
|
||||||
*
|
|
||||||
* ************** CAUTION **************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a single PHP requirement, e.g. an installed extension.
|
|
||||||
* It can be a mandatory requirement or an optional recommendation.
|
|
||||||
* There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
|
|
||||||
*
|
|
||||||
* @author Tobias Schultze <http://tobion.de>
|
|
||||||
*/
|
|
||||||
class Requirement
|
|
||||||
{
|
|
||||||
private $fulfilled;
|
|
||||||
private $testMessage;
|
|
||||||
private $helpText;
|
|
||||||
private $helpHtml;
|
|
||||||
private $optional;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor that initializes the requirement.
|
|
||||||
*
|
|
||||||
* @param bool $fulfilled Whether the requirement is fulfilled
|
|
||||||
* @param string $testMessage The message for testing the requirement
|
|
||||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem
|
|
||||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
|
|
||||||
* @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
|
|
||||||
*/
|
|
||||||
public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
|
|
||||||
{
|
|
||||||
$this->fulfilled = (bool) $fulfilled;
|
|
||||||
$this->testMessage = (string) $testMessage;
|
|
||||||
$this->helpHtml = (string) $helpHtml;
|
|
||||||
$this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
|
|
||||||
$this->optional = (bool) $optional;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns whether the requirement is fulfilled.
|
|
||||||
*
|
|
||||||
* @return bool true if fulfilled, otherwise false
|
|
||||||
*/
|
|
||||||
public function isFulfilled()
|
|
||||||
{
|
|
||||||
return $this->fulfilled;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the message for testing the requirement.
|
|
||||||
*
|
|
||||||
* @return string The test message
|
|
||||||
*/
|
|
||||||
public function getTestMessage()
|
|
||||||
{
|
|
||||||
return $this->testMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the help text for resolving the problem.
|
|
||||||
*
|
|
||||||
* @return string The help text
|
|
||||||
*/
|
|
||||||
public function getHelpText()
|
|
||||||
{
|
|
||||||
return $this->helpText;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the help text formatted in HTML.
|
|
||||||
*
|
|
||||||
* @return string The HTML help
|
|
||||||
*/
|
|
||||||
public function getHelpHtml()
|
|
||||||
{
|
|
||||||
return $this->helpHtml;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns whether this is only an optional recommendation and not a mandatory requirement.
|
|
||||||
*
|
|
||||||
* @return bool true if optional, false if mandatory
|
|
||||||
*/
|
|
||||||
public function isOptional()
|
|
||||||
{
|
|
||||||
return $this->optional;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a PHP requirement in form of a php.ini configuration.
|
|
||||||
*
|
|
||||||
* @author Tobias Schultze <http://tobion.de>
|
|
||||||
*/
|
|
||||||
class PhpIniRequirement extends Requirement
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Constructor that initializes the requirement.
|
|
||||||
*
|
|
||||||
* @param string $cfgName The configuration name used for ini_get()
|
|
||||||
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
|
|
||||||
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
|
|
||||||
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
|
|
||||||
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
|
|
||||||
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
|
|
||||||
* @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
|
|
||||||
* @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)
|
|
||||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
|
|
||||||
* @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
|
|
||||||
*/
|
|
||||||
public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
|
|
||||||
{
|
|
||||||
$cfgValue = ini_get($cfgName);
|
|
||||||
|
|
||||||
if (is_callable($evaluation)) {
|
|
||||||
if (null === $testMessage || null === $helpHtml) {
|
|
||||||
throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$fulfilled = call_user_func($evaluation, $cfgValue);
|
|
||||||
} else {
|
|
||||||
if (null === $testMessage) {
|
|
||||||
$testMessage = sprintf('%s %s be %s in php.ini',
|
|
||||||
$cfgName,
|
|
||||||
$optional ? 'should' : 'must',
|
|
||||||
$evaluation ? 'enabled' : 'disabled'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null === $helpHtml) {
|
|
||||||
$helpHtml = sprintf('Set <strong>%s</strong> to <strong>%s</strong> in php.ini<a href="#phpini">*</a>.',
|
|
||||||
$cfgName,
|
|
||||||
$evaluation ? 'on' : 'off'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$fulfilled = $evaluation == $cfgValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A RequirementCollection represents a set of Requirement instances.
|
|
||||||
*
|
|
||||||
* @author Tobias Schultze <http://tobion.de>
|
|
||||||
*/
|
|
||||||
class RequirementCollection implements IteratorAggregate
|
|
||||||
{
|
|
||||||
private $requirements = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the current RequirementCollection as an Iterator.
|
|
||||||
*
|
|
||||||
* @return Traversable A Traversable interface
|
|
||||||
*/
|
|
||||||
public function getIterator()
|
|
||||||
{
|
|
||||||
return new ArrayIterator($this->requirements);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a Requirement.
|
|
||||||
*
|
|
||||||
* @param Requirement $requirement A Requirement instance
|
|
||||||
*/
|
|
||||||
public function add(Requirement $requirement)
|
|
||||||
{
|
|
||||||
$this->requirements[] = $requirement;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a mandatory requirement.
|
|
||||||
*
|
|
||||||
* @param bool $fulfilled Whether the requirement is fulfilled
|
|
||||||
* @param string $testMessage The message for testing the requirement
|
|
||||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem
|
|
||||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
|
|
||||||
*/
|
|
||||||
public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
|
|
||||||
{
|
|
||||||
$this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds an optional recommendation.
|
|
||||||
*
|
|
||||||
* @param bool $fulfilled Whether the recommendation is fulfilled
|
|
||||||
* @param string $testMessage The message for testing the recommendation
|
|
||||||
* @param string $helpHtml The help text formatted in HTML for resolving the problem
|
|
||||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
|
|
||||||
*/
|
|
||||||
public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
|
|
||||||
{
|
|
||||||
$this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a mandatory requirement in form of a php.ini configuration.
|
|
||||||
*
|
|
||||||
* @param string $cfgName The configuration name used for ini_get()
|
|
||||||
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
|
|
||||||
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
|
|
||||||
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
|
|
||||||
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
|
|
||||||
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
|
|
||||||
* @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
|
|
||||||
* @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)
|
|
||||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
|
|
||||||
*/
|
|
||||||
public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
|
|
||||||
{
|
|
||||||
$this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds an optional recommendation in form of a php.ini configuration.
|
|
||||||
*
|
|
||||||
* @param string $cfgName The configuration name used for ini_get()
|
|
||||||
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
|
|
||||||
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
|
|
||||||
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
|
|
||||||
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
|
|
||||||
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
|
|
||||||
* @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
|
|
||||||
* @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)
|
|
||||||
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
|
|
||||||
*/
|
|
||||||
public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
|
|
||||||
{
|
|
||||||
$this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a requirement collection to the current set of requirements.
|
|
||||||
*
|
|
||||||
* @param RequirementCollection $collection A RequirementCollection instance
|
|
||||||
*/
|
|
||||||
public function addCollection(RequirementCollection $collection)
|
|
||||||
{
|
|
||||||
$this->requirements = array_merge($this->requirements, $collection->all());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns both requirements and recommendations.
|
|
||||||
*
|
|
||||||
* @return array Array of Requirement instances
|
|
||||||
*/
|
|
||||||
public function all()
|
|
||||||
{
|
|
||||||
return $this->requirements;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns all mandatory requirements.
|
|
||||||
*
|
|
||||||
* @return array Array of Requirement instances
|
|
||||||
*/
|
|
||||||
public function getRequirements()
|
|
||||||
{
|
|
||||||
$array = array();
|
|
||||||
foreach ($this->requirements as $req) {
|
|
||||||
if (!$req->isOptional()) {
|
|
||||||
$array[] = $req;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the mandatory requirements that were not met.
|
|
||||||
*
|
|
||||||
* @return array Array of Requirement instances
|
|
||||||
*/
|
|
||||||
public function getFailedRequirements()
|
|
||||||
{
|
|
||||||
$array = array();
|
|
||||||
foreach ($this->requirements as $req) {
|
|
||||||
if (!$req->isFulfilled() && !$req->isOptional()) {
|
|
||||||
$array[] = $req;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns all optional recommendations.
|
|
||||||
*
|
|
||||||
* @return array Array of Requirement instances
|
|
||||||
*/
|
|
||||||
public function getRecommendations()
|
|
||||||
{
|
|
||||||
$array = array();
|
|
||||||
foreach ($this->requirements as $req) {
|
|
||||||
if ($req->isOptional()) {
|
|
||||||
$array[] = $req;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the recommendations that were not met.
|
|
||||||
*
|
|
||||||
* @return array Array of Requirement instances
|
|
||||||
*/
|
|
||||||
public function getFailedRecommendations()
|
|
||||||
{
|
|
||||||
$array = array();
|
|
||||||
foreach ($this->requirements as $req) {
|
|
||||||
if (!$req->isFulfilled() && $req->isOptional()) {
|
|
||||||
$array[] = $req;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns whether a php.ini configuration is not correct.
|
|
||||||
*
|
|
||||||
* @return bool php.ini configuration problem?
|
|
||||||
*/
|
|
||||||
public function hasPhpIniConfigIssue()
|
|
||||||
{
|
|
||||||
foreach ($this->requirements as $req) {
|
|
||||||
if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the PHP configuration file (php.ini) path.
|
|
||||||
*
|
|
||||||
* @return string|false php.ini file path
|
|
||||||
*/
|
|
||||||
public function getPhpIniConfigPath()
|
|
||||||
{
|
|
||||||
return get_cfg_var('cfg_file_path');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class specifies all requirements and optional recommendations that
|
|
||||||
* are necessary to run the Symfony Standard Edition.
|
|
||||||
*
|
|
||||||
* @author Tobias Schultze <http://tobion.de>
|
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
|
||||||
*/
|
|
||||||
class SymfonyRequirements extends RequirementCollection
|
|
||||||
{
|
|
||||||
const REQUIRED_PHP_VERSION = '5.3.3';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor that initializes the requirements.
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
/* mandatory requirements follow */
|
|
||||||
|
|
||||||
$installedPhpVersion = phpversion();
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
|
|
||||||
sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
|
|
||||||
sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run.
|
|
||||||
Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
|
|
||||||
$installedPhpVersion, self::REQUIRED_PHP_VERSION),
|
|
||||||
sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
version_compare($installedPhpVersion, '5.3.16', '!='),
|
|
||||||
'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
|
|
||||||
'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
is_dir(__DIR__.'/../vendor/composer'),
|
|
||||||
'Vendor libraries must be installed',
|
|
||||||
'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '.
|
|
||||||
'Then run "<strong>php composer.phar install</strong>" to install them.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache';
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
is_writable($cacheDir),
|
|
||||||
'app/cache/ or var/cache/ directory must be writable',
|
|
||||||
'Change the permissions of either "<strong>app/cache/</strong>" or "<strong>var/cache/</strong>" directory so that the web server can write into it.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs';
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
is_writable($logsDir),
|
|
||||||
'app/logs/ or var/logs/ directory must be writable',
|
|
||||||
'Change the permissions of either "<strong>app/logs/</strong>" or "<strong>var/logs/</strong>" directory so that the web server can write into it.'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (version_compare($installedPhpVersion, '7.0.0', '<')) {
|
|
||||||
$this->addPhpIniRequirement(
|
|
||||||
'date.timezone', true, false,
|
|
||||||
'date.timezone setting must be set',
|
|
||||||
'Set the "<strong>date.timezone</strong>" setting in php.ini<a href="#phpini">*</a> (like Europe/Paris).'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
|
|
||||||
$timezones = array();
|
|
||||||
foreach (DateTimeZone::listAbbreviations() as $abbreviations) {
|
|
||||||
foreach ($abbreviations as $abbreviation) {
|
|
||||||
$timezones[$abbreviation['timezone_id']] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
isset($timezones[@date_default_timezone_get()]),
|
|
||||||
sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()),
|
|
||||||
'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>.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
function_exists('iconv'),
|
|
||||||
'iconv() must be available',
|
|
||||||
'Install and enable the <strong>iconv</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
function_exists('json_encode'),
|
|
||||||
'json_encode() must be available',
|
|
||||||
'Install and enable the <strong>JSON</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
function_exists('session_start'),
|
|
||||||
'session_start() must be available',
|
|
||||||
'Install and enable the <strong>session</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
function_exists('ctype_alpha'),
|
|
||||||
'ctype_alpha() must be available',
|
|
||||||
'Install and enable the <strong>ctype</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
function_exists('token_get_all'),
|
|
||||||
'token_get_all() must be available',
|
|
||||||
'Install and enable the <strong>Tokenizer</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
function_exists('simplexml_import_dom'),
|
|
||||||
'simplexml_import_dom() must be available',
|
|
||||||
'Install and enable the <strong>SimpleXML</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (function_exists('apc_store') && ini_get('apc.enabled')) {
|
|
||||||
if (version_compare($installedPhpVersion, '5.4.0', '>=')) {
|
|
||||||
$this->addRequirement(
|
|
||||||
version_compare(phpversion('apc'), '3.1.13', '>='),
|
|
||||||
'APC version must be at least 3.1.13 when using PHP 5.4',
|
|
||||||
'Upgrade your <strong>APC</strong> extension (3.1.13+).'
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
$this->addRequirement(
|
|
||||||
version_compare(phpversion('apc'), '3.0.17', '>='),
|
|
||||||
'APC version must be at least 3.0.17',
|
|
||||||
'Upgrade your <strong>APC</strong> extension (3.0.17+).'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addPhpIniRequirement('detect_unicode', false);
|
|
||||||
|
|
||||||
if (extension_loaded('suhosin')) {
|
|
||||||
$this->addPhpIniRequirement(
|
|
||||||
'suhosin.executor.include.whitelist',
|
|
||||||
create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
|
|
||||||
false,
|
|
||||||
'suhosin.executor.include.whitelist must be configured correctly in php.ini',
|
|
||||||
'Add "<strong>phar</strong>" to <strong>suhosin.executor.include.whitelist</strong> in php.ini<a href="#phpini">*</a>.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (extension_loaded('xdebug')) {
|
|
||||||
$this->addPhpIniRequirement(
|
|
||||||
'xdebug.show_exception_trace', false, true
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addPhpIniRequirement(
|
|
||||||
'xdebug.scream', false, true
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addPhpIniRecommendation(
|
|
||||||
'xdebug.max_nesting_level',
|
|
||||||
create_function('$cfgValue', 'return $cfgValue > 100;'),
|
|
||||||
true,
|
|
||||||
'xdebug.max_nesting_level should be above 100 in php.ini',
|
|
||||||
'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.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
|
|
||||||
|
|
||||||
$this->addRequirement(
|
|
||||||
null !== $pcreVersion,
|
|
||||||
'PCRE extension must be available',
|
|
||||||
'Install the <strong>PCRE</strong> extension (version 8.0+).'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (extension_loaded('mbstring')) {
|
|
||||||
$this->addPhpIniRequirement(
|
|
||||||
'mbstring.func_overload',
|
|
||||||
create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
|
|
||||||
true,
|
|
||||||
'string functions should not be overloaded',
|
|
||||||
'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.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* optional recommendations follow */
|
|
||||||
|
|
||||||
if (file_exists(__DIR__.'/../vendor/composer')) {
|
|
||||||
require_once __DIR__.'/../vendor/autoload.php';
|
|
||||||
|
|
||||||
try {
|
|
||||||
$r = new ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle');
|
|
||||||
|
|
||||||
$contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php');
|
|
||||||
} catch (ReflectionException $e) {
|
|
||||||
$contents = '';
|
|
||||||
}
|
|
||||||
$this->addRecommendation(
|
|
||||||
file_get_contents(__FILE__) === $contents,
|
|
||||||
'Requirements file should be up-to-date',
|
|
||||||
'Your requirements file is outdated. Run composer install and re-check your configuration.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
version_compare($installedPhpVersion, '5.3.4', '>='),
|
|
||||||
'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
|
|
||||||
'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.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
version_compare($installedPhpVersion, '5.3.8', '>='),
|
|
||||||
'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
|
|
||||||
'Install PHP 5.3.8 or newer if your project uses annotations.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
version_compare($installedPhpVersion, '5.4.0', '!='),
|
|
||||||
'You should not use PHP 5.4.0 due to the PHP bug #61453',
|
|
||||||
'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.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
version_compare($installedPhpVersion, '5.4.11', '>='),
|
|
||||||
'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)',
|
|
||||||
'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
(version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))
|
|
||||||
||
|
|
||||||
version_compare($installedPhpVersion, '5.4.8', '>='),
|
|
||||||
'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',
|
|
||||||
'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (null !== $pcreVersion) {
|
|
||||||
$this->addRecommendation(
|
|
||||||
$pcreVersion >= 8.0,
|
|
||||||
sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),
|
|
||||||
'<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.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
class_exists('DomDocument'),
|
|
||||||
'PHP-DOM and PHP-XML modules should be installed',
|
|
||||||
'Install and enable the <strong>PHP-DOM</strong> and the <strong>PHP-XML</strong> modules.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
function_exists('mb_strlen'),
|
|
||||||
'mb_strlen() should be available',
|
|
||||||
'Install and enable the <strong>mbstring</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
function_exists('iconv'),
|
|
||||||
'iconv() should be available',
|
|
||||||
'Install and enable the <strong>iconv</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
function_exists('utf8_decode'),
|
|
||||||
'utf8_decode() should be available',
|
|
||||||
'Install and enable the <strong>XML</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
function_exists('filter_var'),
|
|
||||||
'filter_var() should be available',
|
|
||||||
'Install and enable the <strong>filter</strong> extension.'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
|
|
||||||
$this->addRecommendation(
|
|
||||||
function_exists('posix_isatty'),
|
|
||||||
'posix_isatty() should be available',
|
|
||||||
'Install and enable the <strong>php_posix</strong> extension (used to colorize the CLI output).'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
extension_loaded('intl'),
|
|
||||||
'intl extension should be available',
|
|
||||||
'Install and enable the <strong>intl</strong> extension (used for validators).'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (extension_loaded('intl')) {
|
|
||||||
// in some WAMP server installations, new Collator() returns null
|
|
||||||
$this->addRecommendation(
|
|
||||||
null !== new Collator('fr_FR'),
|
|
||||||
'intl extension should be correctly configured',
|
|
||||||
'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
|
|
||||||
);
|
|
||||||
|
|
||||||
// check for compatible ICU versions (only done when you have the intl extension)
|
|
||||||
if (defined('INTL_ICU_VERSION')) {
|
|
||||||
$version = INTL_ICU_VERSION;
|
|
||||||
} else {
|
|
||||||
$reflector = new ReflectionExtension('intl');
|
|
||||||
|
|
||||||
ob_start();
|
|
||||||
$reflector->info();
|
|
||||||
$output = strip_tags(ob_get_clean());
|
|
||||||
|
|
||||||
preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
|
|
||||||
$version = $matches[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
version_compare($version, '4.0', '>='),
|
|
||||||
'intl ICU version should be at least 4+',
|
|
||||||
'Upgrade your <strong>intl</strong> extension with a newer ICU version (4+).'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (class_exists('Symfony\Component\Intl\Intl')) {
|
|
||||||
$this->addRecommendation(
|
|
||||||
\Symfony\Component\Intl\Intl::getIcuDataVersion() === \Symfony\Component\Intl\Intl::getIcuVersion(),
|
|
||||||
sprintf('intl ICU version installed on your system (%s) should match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()),
|
|
||||||
'In most cases you should be fine, but please verify there is no inconsistencies between data provided by Symfony and the intl extension. See https://github.com/symfony/symfony/issues/15007 for an example of inconsistencies you might run into.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addPhpIniRecommendation(
|
|
||||||
'intl.error_level',
|
|
||||||
create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
|
|
||||||
true,
|
|
||||||
'intl.error_level should be 0 in php.ini',
|
|
||||||
'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.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$accelerator =
|
|
||||||
(extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))
|
|
||||||
||
|
|
||||||
(extension_loaded('apc') && ini_get('apc.enabled'))
|
|
||||||
||
|
|
||||||
(extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable'))
|
|
||||||
||
|
|
||||||
(extension_loaded('Zend OPcache') && ini_get('opcache.enable'))
|
|
||||||
||
|
|
||||||
(extension_loaded('xcache') && ini_get('xcache.cacher'))
|
|
||||||
||
|
|
||||||
(extension_loaded('wincache') && ini_get('wincache.ocenabled'))
|
|
||||||
;
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
$accelerator,
|
|
||||||
'a PHP accelerator should be installed',
|
|
||||||
'Install and/or enable a <strong>PHP accelerator</strong> (highly recommended).'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
|
||||||
$this->addRecommendation(
|
|
||||||
$this->getRealpathCacheSize() > 1000,
|
|
||||||
'realpath_cache_size should be above 1024 in php.ini',
|
|
||||||
'Set "<strong>realpath_cache_size</strong>" to e.g. "<strong>1024</strong>" in php.ini<a href="#phpini">*</a> to improve performance on windows.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addPhpIniRecommendation('short_open_tag', false);
|
|
||||||
|
|
||||||
$this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
|
|
||||||
|
|
||||||
$this->addPhpIniRecommendation('register_globals', false, true);
|
|
||||||
|
|
||||||
$this->addPhpIniRecommendation('session.auto_start', false);
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
class_exists('PDO'),
|
|
||||||
'PDO should be installed',
|
|
||||||
'Install <strong>PDO</strong> (mandatory for Doctrine).'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (class_exists('PDO')) {
|
|
||||||
$drivers = PDO::getAvailableDrivers();
|
|
||||||
$this->addRecommendation(
|
|
||||||
count($drivers) > 0,
|
|
||||||
sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
|
|
||||||
'Install <strong>PDO drivers</strong> (mandatory for Doctrine).'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads realpath_cache_size from php.ini and converts it to int.
|
|
||||||
*
|
|
||||||
* (e.g. 16k is converted to 16384 int)
|
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
protected function getRealpathCacheSize()
|
|
||||||
{
|
|
||||||
$size = ini_get('realpath_cache_size');
|
|
||||||
$size = trim($size);
|
|
||||||
$unit = strtolower(substr($size, -1, 1));
|
|
||||||
switch ($unit) {
|
|
||||||
case 'g':
|
|
||||||
return $size * 1024 * 1024 * 1024;
|
|
||||||
case 'm':
|
|
||||||
return $size * 1024 * 1024;
|
|
||||||
case 'k':
|
|
||||||
return $size * 1024;
|
|
||||||
default:
|
|
||||||
return (int) $size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Doctrine\Common\Annotations\AnnotationRegistry;
|
|
||||||
use Composer\Autoload\ClassLoader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var ClassLoader $loader
|
|
||||||
*/
|
|
||||||
$loader = require __DIR__.'/../vendor/autoload.php';
|
|
||||||
|
|
||||||
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
|
|
||||||
|
|
||||||
return $loader;
|
|
0
app/cache/.gitkeep
vendored
0
app/cache/.gitkeep
vendored
142
app/check.php
142
app/check.php
|
@ -1,142 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
require_once dirname(__FILE__).'/SymfonyRequirements.php';
|
|
||||||
|
|
||||||
$lineSize = 70;
|
|
||||||
$symfonyRequirements = new SymfonyRequirements();
|
|
||||||
$iniPath = $symfonyRequirements->getPhpIniConfigPath();
|
|
||||||
|
|
||||||
echo_title('Symfony Requirements Checker');
|
|
||||||
|
|
||||||
echo '> PHP is using the following php.ini file:'.PHP_EOL;
|
|
||||||
if ($iniPath) {
|
|
||||||
echo_style('green', ' '.$iniPath);
|
|
||||||
} else {
|
|
||||||
echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!');
|
|
||||||
}
|
|
||||||
|
|
||||||
echo PHP_EOL.PHP_EOL;
|
|
||||||
|
|
||||||
echo '> Checking Symfony requirements:'.PHP_EOL.' ';
|
|
||||||
|
|
||||||
$messages = array();
|
|
||||||
foreach ($symfonyRequirements->getRequirements() as $req) {
|
|
||||||
/** @var $req Requirement */
|
|
||||||
if ($helpText = get_error_message($req, $lineSize)) {
|
|
||||||
echo_style('red', 'E');
|
|
||||||
$messages['error'][] = $helpText;
|
|
||||||
} else {
|
|
||||||
echo_style('green', '.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$checkPassed = empty($messages['error']);
|
|
||||||
|
|
||||||
foreach ($symfonyRequirements->getRecommendations() as $req) {
|
|
||||||
if ($helpText = get_error_message($req, $lineSize)) {
|
|
||||||
echo_style('yellow', 'W');
|
|
||||||
$messages['warning'][] = $helpText;
|
|
||||||
} else {
|
|
||||||
echo_style('green', '.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($checkPassed) {
|
|
||||||
echo_block('success', 'OK', 'Your system is ready to run Symfony projects');
|
|
||||||
} else {
|
|
||||||
echo_block('error', 'ERROR', 'Your system is not ready to run Symfony projects');
|
|
||||||
|
|
||||||
echo_title('Fix the following mandatory requirements', 'red');
|
|
||||||
|
|
||||||
foreach ($messages['error'] as $helpText) {
|
|
||||||
echo ' * '.$helpText.PHP_EOL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($messages['warning'])) {
|
|
||||||
echo_title('Optional recommendations to improve your setup', 'yellow');
|
|
||||||
|
|
||||||
foreach ($messages['warning'] as $helpText) {
|
|
||||||
echo ' * '.$helpText.PHP_EOL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo PHP_EOL;
|
|
||||||
echo_style('title', 'Note');
|
|
||||||
echo ' The command console could use a different php.ini file'.PHP_EOL;
|
|
||||||
echo_style('title', '~~~~');
|
|
||||||
echo ' than the one used with your web server. To be on the'.PHP_EOL;
|
|
||||||
echo ' safe side, please check the requirements from your web'.PHP_EOL;
|
|
||||||
echo ' server using the ';
|
|
||||||
echo_style('yellow', 'web/config.php');
|
|
||||||
echo ' script.'.PHP_EOL;
|
|
||||||
echo PHP_EOL;
|
|
||||||
|
|
||||||
exit($checkPassed ? 0 : 1);
|
|
||||||
|
|
||||||
function get_error_message(Requirement $requirement, $lineSize)
|
|
||||||
{
|
|
||||||
if ($requirement->isFulfilled()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL;
|
|
||||||
$errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL;
|
|
||||||
|
|
||||||
return $errorMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
function echo_title($title, $style = null)
|
|
||||||
{
|
|
||||||
$style = $style ?: 'title';
|
|
||||||
|
|
||||||
echo PHP_EOL;
|
|
||||||
echo_style($style, $title.PHP_EOL);
|
|
||||||
echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
|
|
||||||
echo PHP_EOL;
|
|
||||||
}
|
|
||||||
|
|
||||||
function echo_style($style, $message)
|
|
||||||
{
|
|
||||||
// ANSI color codes
|
|
||||||
$styles = array(
|
|
||||||
'reset' => "\033[0m",
|
|
||||||
'red' => "\033[31m",
|
|
||||||
'green' => "\033[32m",
|
|
||||||
'yellow' => "\033[33m",
|
|
||||||
'error' => "\033[37;41m",
|
|
||||||
'success' => "\033[37;42m",
|
|
||||||
'title' => "\033[34m",
|
|
||||||
);
|
|
||||||
$supports = has_color_support();
|
|
||||||
|
|
||||||
echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
|
|
||||||
}
|
|
||||||
|
|
||||||
function echo_block($style, $title, $message)
|
|
||||||
{
|
|
||||||
$message = ' '.trim($message).' ';
|
|
||||||
$width = strlen($message);
|
|
||||||
|
|
||||||
echo PHP_EOL.PHP_EOL;
|
|
||||||
|
|
||||||
echo_style($style, str_repeat(' ', $width).PHP_EOL);
|
|
||||||
echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);
|
|
||||||
echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);
|
|
||||||
echo_style($style, str_repeat(' ', $width).PHP_EOL);
|
|
||||||
}
|
|
||||||
|
|
||||||
function has_color_support()
|
|
||||||
{
|
|
||||||
static $support;
|
|
||||||
|
|
||||||
if (null === $support) {
|
|
||||||
if (DIRECTORY_SEPARATOR == '\\') {
|
|
||||||
$support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
|
|
||||||
} else {
|
|
||||||
$support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $support;
|
|
||||||
}
|
|
|
@ -1,87 +0,0 @@
|
||||||
imports:
|
|
||||||
- { resource: parameters.yml }
|
|
||||||
- { resource: security.yml }
|
|
||||||
- { resource: services.yml }
|
|
||||||
- { resource: fos_rest.yml }
|
|
||||||
- { resource: "@CoursEndingBundle/Resources/config/services.yml" }
|
|
||||||
|
|
||||||
# Put parameters here that don't need to change on each machine where the app is deployed
|
|
||||||
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
|
|
||||||
parameters:
|
|
||||||
locale: fr
|
|
||||||
|
|
||||||
framework:
|
|
||||||
#esi: ~
|
|
||||||
#translator: { fallbacks: ["%locale%"] }
|
|
||||||
secret: "%secret%"
|
|
||||||
router:
|
|
||||||
resource: "%kernel.root_dir%/config/routing.yml"
|
|
||||||
strict_requirements: ~
|
|
||||||
form: ~
|
|
||||||
csrf_protection: ~
|
|
||||||
validation: { enable_annotations: true }
|
|
||||||
#serializer: { enable_annotations: true }
|
|
||||||
templating:
|
|
||||||
engines: ['twig']
|
|
||||||
default_locale: "%locale%"
|
|
||||||
trusted_hosts: ~
|
|
||||||
trusted_proxies: ~
|
|
||||||
session:
|
|
||||||
# handler_id set to null will use default session handler from php.ini
|
|
||||||
handler_id: ~
|
|
||||||
fragments: ~
|
|
||||||
http_method_override: true
|
|
||||||
|
|
||||||
# Twig Configuration
|
|
||||||
twig:
|
|
||||||
debug: "%kernel.debug%"
|
|
||||||
strict_variables: "%kernel.debug%"
|
|
||||||
|
|
||||||
# Doctrine Configuration
|
|
||||||
doctrine:
|
|
||||||
dbal:
|
|
||||||
driver: pdo_mysql
|
|
||||||
host: "%database_host%"
|
|
||||||
port: "%database_port%"
|
|
||||||
dbname: "%database_name%"
|
|
||||||
user: "%database_user%"
|
|
||||||
password: "%database_password%"
|
|
||||||
charset: UTF8
|
|
||||||
# if using pdo_sqlite as your database driver:
|
|
||||||
# 1. add the path in parameters.yml
|
|
||||||
# e.g. database_path: "%kernel.root_dir%/data/data.db3"
|
|
||||||
# 2. Uncomment database_path in parameters.yml.dist
|
|
||||||
# 3. Uncomment next line:
|
|
||||||
# path: "%database_path%"
|
|
||||||
|
|
||||||
orm:
|
|
||||||
auto_generate_proxy_classes: "%kernel.debug%"
|
|
||||||
naming_strategy: doctrine.orm.naming_strategy.underscore
|
|
||||||
auto_mapping: true
|
|
||||||
|
|
||||||
# Swiftmailer Configuration
|
|
||||||
swiftmailer:
|
|
||||||
transport: "%mailer_transport%"
|
|
||||||
host: "%mailer_host%"
|
|
||||||
username: "%mailer_user%"
|
|
||||||
password: "%mailer_password%"
|
|
||||||
spool: { type: memory }
|
|
||||||
|
|
||||||
nelmio_api_doc: ~
|
|
||||||
|
|
||||||
propel:
|
|
||||||
database:
|
|
||||||
connections:
|
|
||||||
default:
|
|
||||||
adapter: %database_driver%
|
|
||||||
user: %database_user%
|
|
||||||
password: %database_password%
|
|
||||||
dsn: %database_driver%:host=%database_host%;dbname=%database_name%;charset=UTF8
|
|
||||||
options: {}
|
|
||||||
attributes: {}
|
|
||||||
|
|
||||||
fos_js_routing:
|
|
||||||
routes_to_expose:
|
|
||||||
- api_get_forms
|
|
||||||
- api_get_questions
|
|
||||||
- api_post_forms
|
|
|
@ -1,38 +0,0 @@
|
||||||
imports:
|
|
||||||
- { resource: config.yml }
|
|
||||||
|
|
||||||
framework:
|
|
||||||
router:
|
|
||||||
resource: "%kernel.root_dir%/config/routing_dev.yml"
|
|
||||||
strict_requirements: true
|
|
||||||
profiler: { only_exceptions: false }
|
|
||||||
|
|
||||||
web_profiler:
|
|
||||||
toolbar: true
|
|
||||||
intercept_redirects: false
|
|
||||||
|
|
||||||
monolog:
|
|
||||||
handlers:
|
|
||||||
main:
|
|
||||||
type: stream
|
|
||||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
|
||||||
level: debug
|
|
||||||
channels: [!event]
|
|
||||||
console:
|
|
||||||
type: console
|
|
||||||
channels: [!event, !doctrine]
|
|
||||||
# uncomment to get logging in your browser
|
|
||||||
# you may have to allow bigger header sizes in your Web server configuration
|
|
||||||
#firephp:
|
|
||||||
# type: firephp
|
|
||||||
# level: info
|
|
||||||
#chromephp:
|
|
||||||
# type: chromephp
|
|
||||||
# level: info
|
|
||||||
|
|
||||||
parameters:
|
|
||||||
mailer_host: mail.deblan.org
|
|
||||||
mailer_port: 666
|
|
||||||
|
|
||||||
# swiftmailer:
|
|
||||||
# delivery_address: me@example.com
|
|
|
@ -1,27 +0,0 @@
|
||||||
imports:
|
|
||||||
- { resource: config.yml }
|
|
||||||
|
|
||||||
#framework:
|
|
||||||
# validation:
|
|
||||||
# cache: validator.mapping.cache.doctrine.apc
|
|
||||||
# serializer:
|
|
||||||
# cache: serializer.mapping.cache.doctrine.apc
|
|
||||||
|
|
||||||
#doctrine:
|
|
||||||
# orm:
|
|
||||||
# metadata_cache_driver: apc
|
|
||||||
# result_cache_driver: apc
|
|
||||||
# query_cache_driver: apc
|
|
||||||
|
|
||||||
monolog:
|
|
||||||
handlers:
|
|
||||||
main:
|
|
||||||
type: fingers_crossed
|
|
||||||
action_level: error
|
|
||||||
handler: nested
|
|
||||||
nested:
|
|
||||||
type: stream
|
|
||||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
|
||||||
level: debug
|
|
||||||
console:
|
|
||||||
type: console
|
|
|
@ -1,16 +0,0 @@
|
||||||
imports:
|
|
||||||
- { resource: config_dev.yml }
|
|
||||||
|
|
||||||
framework:
|
|
||||||
test: ~
|
|
||||||
session:
|
|
||||||
storage_id: session.storage.mock_file
|
|
||||||
profiler:
|
|
||||||
collect: false
|
|
||||||
|
|
||||||
web_profiler:
|
|
||||||
toolbar: false
|
|
||||||
intercept_redirects: false
|
|
||||||
|
|
||||||
swiftmailer:
|
|
||||||
disable_delivery: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
fos_rest:
|
|
||||||
param_fetcher_listener: true
|
|
||||||
body_listener: true
|
|
||||||
format_listener: true
|
|
||||||
view:
|
|
||||||
view_response_listener: true
|
|
||||||
formats:
|
|
||||||
xml: true
|
|
||||||
json : true
|
|
||||||
templating_formats:
|
|
||||||
html: false
|
|
||||||
force_redirects:
|
|
||||||
html: true
|
|
||||||
failed_validation: HTTP_BAD_REQUEST
|
|
||||||
default_engine: twig
|
|
||||||
routing_loader:
|
|
||||||
default_format: json
|
|
|
@ -1,20 +0,0 @@
|
||||||
# This file is a "template" of what your parameters.yml file should look like
|
|
||||||
# Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production.
|
|
||||||
# http://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
|
||||||
parameters:
|
|
||||||
database_driver: mysql
|
|
||||||
database_host: 127.0.0.1
|
|
||||||
database_port: ~
|
|
||||||
database_name: symfony
|
|
||||||
database_user: root
|
|
||||||
database_password: ~
|
|
||||||
# You should uncomment this if you want use pdo_sqlite
|
|
||||||
# database_path: "%kernel.root_dir%/data.db3"
|
|
||||||
|
|
||||||
mailer_transport: smtp
|
|
||||||
mailer_host: 127.0.0.1
|
|
||||||
mailer_user: ~
|
|
||||||
mailer_password: ~
|
|
||||||
|
|
||||||
# A secret key that's used to generate certain security-related tokens
|
|
||||||
secret: ThisTokenIsNotSoSecretChangeIt
|
|
|
@ -1,15 +0,0 @@
|
||||||
rest:
|
|
||||||
type: rest
|
|
||||||
resource: "routing_rest.yml"
|
|
||||||
prefix: /api
|
|
||||||
|
|
||||||
CoursEndingBundle:
|
|
||||||
resource: "@CoursEndingBundle/Controller/"
|
|
||||||
type: annotation
|
|
||||||
|
|
||||||
NelmioApiDocBundle:
|
|
||||||
resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
|
|
||||||
prefix: /api/doc
|
|
||||||
|
|
||||||
FOSJsRouting:
|
|
||||||
resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
|
|
|
@ -1,14 +0,0 @@
|
||||||
_wdt:
|
|
||||||
resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
|
|
||||||
prefix: /_wdt
|
|
||||||
|
|
||||||
_profiler:
|
|
||||||
resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
|
|
||||||
prefix: /_profiler
|
|
||||||
|
|
||||||
_errors:
|
|
||||||
resource: "@TwigBundle/Resources/config/routing/errors.xml"
|
|
||||||
prefix: /_error
|
|
||||||
|
|
||||||
_main:
|
|
||||||
resource: routing.yml
|
|
|
@ -1,5 +0,0 @@
|
||||||
cours_ending_rest:
|
|
||||||
resource: CoursEndingBundle\Controller\RestController
|
|
||||||
type: rest
|
|
||||||
name_prefix: api_
|
|
||||||
#prefix: foo_
|
|
|
@ -1,24 +0,0 @@
|
||||||
# To get started with security, check out the documentation:
|
|
||||||
# http://symfony.com/doc/current/book/security.html
|
|
||||||
security:
|
|
||||||
|
|
||||||
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
|
|
||||||
providers:
|
|
||||||
in_memory:
|
|
||||||
memory: ~
|
|
||||||
|
|
||||||
firewalls:
|
|
||||||
# disables authentication for assets and the profiler, adapt it according to your needs
|
|
||||||
dev:
|
|
||||||
pattern: ^/(_(profiler|wdt)|css|images|js)/
|
|
||||||
security: false
|
|
||||||
|
|
||||||
main:
|
|
||||||
anonymous: ~
|
|
||||||
# activate different ways to authenticate
|
|
||||||
|
|
||||||
# http_basic: ~
|
|
||||||
# http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate
|
|
||||||
|
|
||||||
# form_login: ~
|
|
||||||
# http://symfony.com/doc/current/cookbook/security/form_login_setup.html
|
|
|
@ -1,9 +0,0 @@
|
||||||
# Learn more about services, parameters and containers at
|
|
||||||
# http://symfony.com/doc/current/book/service_container.html
|
|
||||||
parameters:
|
|
||||||
# parameter_name: value
|
|
||||||
|
|
||||||
services:
|
|
||||||
# service_name:
|
|
||||||
# class: AppBundle\Directory\ClassName
|
|
||||||
# arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
|
|
29
app/console
29
app/console
|
@ -1,29 +0,0 @@
|
||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
|
||||||
use Symfony\Component\Console\Input\ArgvInput;
|
|
||||||
use Symfony\Component\Debug\Debug;
|
|
||||||
|
|
||||||
// if you don't want to setup permissions the proper way, just uncomment the following PHP line
|
|
||||||
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
|
|
||||||
//umask(0000);
|
|
||||||
|
|
||||||
set_time_limit(0);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Composer\Autoload\ClassLoader $loader
|
|
||||||
*/
|
|
||||||
$loader = require __DIR__.'/autoload.php';
|
|
||||||
|
|
||||||
$input = new ArgvInput();
|
|
||||||
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
|
|
||||||
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
|
|
||||||
|
|
||||||
if ($debug) {
|
|
||||||
Debug::enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
$kernel = new AppKernel($env, $debug);
|
|
||||||
$application = new Application($kernel);
|
|
||||||
$application->run($input);
|
|
|
@ -1,38 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
|
|
||||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
|
|
||||||
backupGlobals="false"
|
|
||||||
colors="true"
|
|
||||||
bootstrap="autoload.php"
|
|
||||||
>
|
|
||||||
<php>
|
|
||||||
<ini name="error_reporting" value="-1" />
|
|
||||||
<!--
|
|
||||||
<server name="KERNEL_DIR" value="/path/to/your/app/" />
|
|
||||||
-->
|
|
||||||
</php>
|
|
||||||
|
|
||||||
<testsuites>
|
|
||||||
<testsuite name="Project Test Suite">
|
|
||||||
<directory>../src/*/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*/Bundle/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*Bundle/Tests</directory>
|
|
||||||
</testsuite>
|
|
||||||
</testsuites>
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
<whitelist>
|
|
||||||
<directory>../src</directory>
|
|
||||||
<exclude>
|
|
||||||
<directory>../src/*Bundle/Resources</directory>
|
|
||||||
<directory>../src/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*/*Bundle/Resources</directory>
|
|
||||||
<directory>../src/*/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*/Bundle/*Bundle/Resources</directory>
|
|
||||||
<directory>../src/*/Bundle/*Bundle/Tests</directory>
|
|
||||||
</exclude>
|
|
||||||
</whitelist>
|
|
||||||
</filter>
|
|
||||||
</phpunit>
|
|
21
bower.json
21
bower.json
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
"name": "cours-ending",
|
|
||||||
"version": "0.0.0",
|
|
||||||
"authors": [
|
|
||||||
"Simon Vieille <simon@deblan.fr>"
|
|
||||||
],
|
|
||||||
"license": "BSD-2",
|
|
||||||
"ignore": [
|
|
||||||
"**/.*",
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"test",
|
|
||||||
"tests"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"vue": "~1.0.18",
|
|
||||||
"vue-validator": "~1.4.4",
|
|
||||||
"marked": "~0.3.5",
|
|
||||||
"vue-resource": "~0.7.0"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
{
|
|
||||||
"name": "simon/cours.ending",
|
|
||||||
"license": "proprietary",
|
|
||||||
"type": "project",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"": "src/"
|
|
||||||
},
|
|
||||||
"classmap": [
|
|
||||||
"app/AppKernel.php",
|
|
||||||
"app/AppCache.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.9",
|
|
||||||
"symfony/symfony": "2.8.*",
|
|
||||||
"doctrine/orm": "^2.4.8",
|
|
||||||
"doctrine/doctrine-bundle": "~1.4",
|
|
||||||
"symfony/swiftmailer-bundle": "~2.3",
|
|
||||||
"symfony/monolog-bundle": "~2.4",
|
|
||||||
"sensio/distribution-bundle": "~5.0",
|
|
||||||
"sensio/framework-extra-bundle": "^3.0.2",
|
|
||||||
"incenteev/composer-parameter-handler": "~2.0",
|
|
||||||
"friendsofsymfony/rest-bundle": "^1.7",
|
|
||||||
"jms/serializer-bundle": "dev-master",
|
|
||||||
"nelmio/api-doc-bundle": "^2.11",
|
|
||||||
"propel/propel": "dev-master",
|
|
||||||
"propel/propel-bundle": "2.0.x-dev",
|
|
||||||
"friendsofsymfony/jsrouting-bundle": "^1.6",
|
|
||||||
"deblan/fos-rest-behavior": "dev-master"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"sensio/generator-bundle": "~3.0",
|
|
||||||
"symfony/phpunit-bridge": "~2.7"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"post-install-cmd": [
|
|
||||||
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
|
|
||||||
],
|
|
||||||
"post-update-cmd": [
|
|
||||||
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
|
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"bin-dir": "bin",
|
|
||||||
"platform": {
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extra": {
|
|
||||||
"symfony-app-dir": "app",
|
|
||||||
"symfony-web-dir": "web",
|
|
||||||
"symfony-assets-install": "relative",
|
|
||||||
"incenteev-parameters": {
|
|
||||||
"file": "app/config/parameters.yml"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
<IfModule mod_authz_core.c>
|
|
||||||
Require all denied
|
|
||||||
</IfModule>
|
|
||||||
<IfModule !mod_authz_core.c>
|
|
||||||
Order deny,allow
|
|
||||||
Deny from all
|
|
||||||
</IfModule>
|
|
|
@ -1,61 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Command;
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
|
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
|
||||||
use Symfony\Component\Console\Input\InputOption;
|
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
|
||||||
use CoursEndingBundle\Model\FormQuery;
|
|
||||||
use CoursEndingBundle\Model\Form;
|
|
||||||
use CoursEndingBundle\Model\Question;
|
|
||||||
use CoursEndingBundle\Model\QuestionQuery;
|
|
||||||
|
|
||||||
class TestCommand extends ContainerAwareCommand
|
|
||||||
{
|
|
||||||
protected function configure()
|
|
||||||
{
|
|
||||||
$this
|
|
||||||
->setName('test:init')
|
|
||||||
->setDescription('')
|
|
||||||
->setHelp("The <info>%command.name%</info> ");
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function execute(InputInterface $input, OutputInterface $output)
|
|
||||||
{
|
|
||||||
QuestionQuery::create()->find()->delete();
|
|
||||||
FormQuery::create()->find()->delete();
|
|
||||||
|
|
||||||
$a = new Form();
|
|
||||||
$a
|
|
||||||
->setLabel('Form 1')
|
|
||||||
->setActive(true)
|
|
||||||
->save();
|
|
||||||
|
|
||||||
|
|
||||||
for ($i = 0; $i < 5; $i++) {
|
|
||||||
$q = new Question();
|
|
||||||
$q
|
|
||||||
->setLabel('Question '.($i+1).' ?')
|
|
||||||
->setActive(mt_rand(0, 3) > 2)
|
|
||||||
->setFormId($a->getId())
|
|
||||||
->save();
|
|
||||||
}
|
|
||||||
|
|
||||||
$a = new Form();
|
|
||||||
$a
|
|
||||||
->setLabel('Form 2')
|
|
||||||
->setActive(true)
|
|
||||||
->save();
|
|
||||||
|
|
||||||
$a = new Form();
|
|
||||||
$a
|
|
||||||
->setLabel('Form 3')
|
|
||||||
->setActive(true)
|
|
||||||
->save();
|
|
||||||
|
|
||||||
$a = new Form();
|
|
||||||
$a->setLabel('Form 4')->setActive(false)->save();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Controller;
|
|
||||||
|
|
||||||
use CoursEndingBundle\Form\Type\FormType;
|
|
||||||
use Doctrine\ORM\Query\Expr\From;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
|
||||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
|
|
||||||
use CoursEndingBundle\Form\Type\FormsType;
|
|
||||||
use CoursEndingBundle\Model\FormQuery;
|
|
||||||
use CoursEndingBundle\Model\FCollection;
|
|
||||||
|
|
||||||
class MainController extends Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @Route("/")
|
|
||||||
* @Template("CoursEndingBundle:Main:index.html.twig")
|
|
||||||
*/
|
|
||||||
public function indexAction(Request $request)
|
|
||||||
{
|
|
||||||
|
|
||||||
$forms = ['forms' => FormQuery::create()->find()];
|
|
||||||
|
|
||||||
$form = $this->createForm(FormsType::class, $forms);
|
|
||||||
|
|
||||||
if ($form->isValid()) {
|
|
||||||
//die("ok");
|
|
||||||
}
|
|
||||||
|
|
||||||
return [
|
|
||||||
'form' => $form->createView(),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,88 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Controller;
|
|
||||||
|
|
||||||
use CoursEndingBundle\Model\Form;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
|
||||||
use FOS\RestBundle\Controller\FOSRestController;
|
|
||||||
use FOS\RestBundle\Controller\Annotations as Rest;
|
|
||||||
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
use CoursEndingBundle\Model\FormQuery;
|
|
||||||
use CoursEndingBundle\Model\QuestionQuery;
|
|
||||||
use CoursEndingBundle\DataRestContainer;
|
|
||||||
use CoursEndingBundle\Form\Type\FormsType;
|
|
||||||
use FOS\RestBundle\View\View;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Simon Vieille <simon@deblan.fr>
|
|
||||||
*/
|
|
||||||
class RestController extends FOSRestController
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @Rest\View
|
|
||||||
* @ApiDoc(
|
|
||||||
* description="",
|
|
||||||
* )
|
|
||||||
*/
|
|
||||||
public function getFormsAction(Request $request)
|
|
||||||
{
|
|
||||||
$data = FormQuery::create()->find()->getData();
|
|
||||||
|
|
||||||
$container = new DataRestContainer($data);
|
|
||||||
|
|
||||||
return $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Rest\View
|
|
||||||
* @ApiDoc(
|
|
||||||
* description="",
|
|
||||||
* )
|
|
||||||
*/
|
|
||||||
public function getQuestionsAction(Request $request)
|
|
||||||
{
|
|
||||||
$data = QuestionQuery::create()->find()->getData();
|
|
||||||
|
|
||||||
$container = new DataRestContainer($data);
|
|
||||||
|
|
||||||
return $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Rest\View
|
|
||||||
* @ApiDoc(
|
|
||||||
* description="Je suis une description",
|
|
||||||
* input="CoursEndingBundle\Form\Type\FormsType",
|
|
||||||
* )
|
|
||||||
*/
|
|
||||||
public function postFormsAction(Request $request)
|
|
||||||
{
|
|
||||||
$forms = ['forms' => FormQuery::create()->find()];
|
|
||||||
|
|
||||||
$form = $this->createForm(FormsType::class, $forms);
|
|
||||||
|
|
||||||
$form->handleRequest($request);
|
|
||||||
|
|
||||||
if ($form->isValid()) {
|
|
||||||
$forms['forms']->save();
|
|
||||||
echo "Valid";
|
|
||||||
print_r($form->isValid());
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
return View::create($form, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
// public function postQuestionsAction(Request $request)
|
|
||||||
// {
|
|
||||||
// // $form = $this->createForm(new FooType());
|
|
||||||
|
|
||||||
// // $form->handleRequest($request);
|
|
||||||
|
|
||||||
// //return View::create($form, 400);
|
|
||||||
// return [
|
|
||||||
// 'status' => 'ok',
|
|
||||||
// ];
|
|
||||||
// }
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle;
|
|
||||||
|
|
||||||
use Symfony\Component\HttpKernel\Bundle\Bundle;
|
|
||||||
|
|
||||||
class CoursEndingBundle extends Bundle
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,105 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class DataRestContainer
|
|
||||||
* @author Simon Vieille <simon@deblan.fr>
|
|
||||||
*/
|
|
||||||
class DataRestContainer
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
protected $count;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $type;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $class;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var mixed
|
|
||||||
*/
|
|
||||||
protected $data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param mixed $data
|
|
||||||
*/
|
|
||||||
public function __construct($data)
|
|
||||||
{
|
|
||||||
$this->setData($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
protected function count()
|
|
||||||
{
|
|
||||||
$data = $this->getData();
|
|
||||||
|
|
||||||
if (null === $data) {
|
|
||||||
return $this->count = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_array($data)) {
|
|
||||||
return $this->count = count($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_object($data)) {
|
|
||||||
if ($data instanceof \Traversable) {
|
|
||||||
return $this->count = count($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function type()
|
|
||||||
{
|
|
||||||
$this->type = gettype($this->data);
|
|
||||||
|
|
||||||
if ($this->type === 'object') {
|
|
||||||
$this->class = get_class($this->data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param mixed $data
|
|
||||||
* @return DataRestContainer
|
|
||||||
*/
|
|
||||||
public function setData($data)
|
|
||||||
{
|
|
||||||
$this->data = $data;
|
|
||||||
|
|
||||||
$this->count();
|
|
||||||
$this->type();
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return mixed $data
|
|
||||||
*/
|
|
||||||
public function getData()
|
|
||||||
{
|
|
||||||
return $this->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
public function getCount()
|
|
||||||
{
|
|
||||||
return $this->count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Form\Type;
|
|
||||||
|
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
|
||||||
use Propel\Bundle\PropelBundle\Form\BaseAbstractType;
|
|
||||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
|
||||||
|
|
||||||
class FormType extends BaseAbstractType
|
|
||||||
{
|
|
||||||
protected $options = array(
|
|
||||||
'name' => 'form',
|
|
||||||
'allow_extra_fields' => true,
|
|
||||||
'data_class' => 'CoursEndingBundle\Model\Form',
|
|
||||||
);
|
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
|
||||||
{
|
|
||||||
$builder->add(
|
|
||||||
'id',
|
|
||||||
TextType::class,
|
|
||||||
array(
|
|
||||||
'constraints' => array(
|
|
||||||
new NotBlank(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$builder->add(
|
|
||||||
'label',
|
|
||||||
TextType::class,
|
|
||||||
array(
|
|
||||||
'constraints' => array(
|
|
||||||
new NotBlank(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$builder->add(
|
|
||||||
'active',
|
|
||||||
TextType::class,
|
|
||||||
array(
|
|
||||||
// 'constraints' => array(
|
|
||||||
// new NotBlank(),
|
|
||||||
// ),
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Form\Type;
|
|
||||||
|
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
|
|
||||||
use Propel\Bundle\PropelBundle\Form\BaseAbstractType;
|
|
||||||
use CoursEndingBundle\Form\Type\FormsType;
|
|
||||||
use Propel\Bundle\PropelBundle\Form\Type\ModelType;
|
|
||||||
use CoursEndingBundle\Model\Form;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
|
||||||
use CoursEndingBundle\Form\Type\FormType;
|
|
||||||
|
|
||||||
class FormsType extends BaseAbstractType
|
|
||||||
{
|
|
||||||
protected $options = array(
|
|
||||||
'name' => 'forms',
|
|
||||||
'allow_extra_fields' => true,
|
|
||||||
'csrf_protection' => false,
|
|
||||||
);
|
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
|
||||||
{
|
|
||||||
$builder->add(
|
|
||||||
'forms',
|
|
||||||
CollectionType::class,
|
|
||||||
[
|
|
||||||
'entry_type' => FormType::class,
|
|
||||||
'allow_add' => true,
|
|
||||||
'by_reference' => false,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Model;
|
|
||||||
|
|
||||||
use CoursEndingBundle\Model\Base\Form as BaseForm;
|
|
||||||
use JMS\Serializer\Annotation\VirtualProperty;
|
|
||||||
use Propel\Runtime\ActiveQuery\Criteria;
|
|
||||||
use Propel\Runtime\Connection\ConnectionInterface;
|
|
||||||
use CoursEndingBundle\DataRestContainer;
|
|
||||||
|
|
||||||
class Form extends BaseForm
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
* @JMS\Serializer\Annotation\SerializedName("questions")
|
|
||||||
* @JMS\Serializer\Annotation\VirtualProperty
|
|
||||||
*/
|
|
||||||
public function getQuestionsRest()
|
|
||||||
{
|
|
||||||
return new DataRestContainer(parent::getQuestions()->getData());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Model;
|
|
||||||
|
|
||||||
use CoursEndingBundle\Model\Base\FormQuery as BaseFormQuery;
|
|
||||||
|
|
||||||
class FormQuery extends BaseFormQuery
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Model;
|
|
||||||
|
|
||||||
use CoursEndingBundle\Model\Base\Question as BaseQuestion;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Skeleton subclass for representing a row from the 'form_question' table.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* You should add additional methods to this class to meet the
|
|
||||||
* application requirements. This class will only be generated as
|
|
||||||
* long as it does not already exist in the output directory.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class Question extends BaseQuestion
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Model;
|
|
||||||
|
|
||||||
use CoursEndingBundle\Model\Base\QuestionQuery as BaseQuestionQuery;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Skeleton subclass for performing query and update operations on the 'form_question' table.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* You should add additional methods to this class to meet the
|
|
||||||
* application requirements. This class will only be generated as
|
|
||||||
* long as it does not already exist in the output directory.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class QuestionQuery extends BaseQuestionQuery
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,124 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Propel\Behavior;
|
|
||||||
|
|
||||||
use Propel\Generator\Model\Behavior;
|
|
||||||
use Propel\Generator\Builder\Om\ObjectBuilder;
|
|
||||||
use Propel\Generator\Model\Column;
|
|
||||||
use Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class FOSRestBehavior
|
|
||||||
* @author Simon Vieille <simon@deblan.fr>
|
|
||||||
*/
|
|
||||||
class FOSRestBehavior extends Behavior
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function objectFilter(&$script)
|
|
||||||
{
|
|
||||||
$script = preg_replace(
|
|
||||||
'#(\s+)\*/(\s+)abstract class#',
|
|
||||||
'$1'.$this->getClassAnnotations().'*/$2abstract class',
|
|
||||||
$script
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function objectMethods()
|
|
||||||
{
|
|
||||||
$script = '';
|
|
||||||
|
|
||||||
foreach ($this->getTable()->getColumns() as $column) {
|
|
||||||
$name = ucfirst($column->getName());
|
|
||||||
|
|
||||||
try {
|
|
||||||
$groups = $this->transformGroups($this->getParameter($column->getName()));
|
|
||||||
$getter = $this->getColumnGetter($column);
|
|
||||||
$newGetter = preg_replace('/^get/', 'getRest', $getter);
|
|
||||||
$script.= $this->generateRestMethod($column, $newGetter, $getter, $groups);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $script;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Transform the group list to parameter format of annotation
|
|
||||||
*
|
|
||||||
* @param string $groups
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
protected function transformGroups($groups)
|
|
||||||
{
|
|
||||||
$data = [];
|
|
||||||
|
|
||||||
foreach (explode(',', $groups) as $group) {
|
|
||||||
$group = trim($group);
|
|
||||||
|
|
||||||
if ('' !== $group) {
|
|
||||||
$data[] = '"'.$group.'"';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return implode(', ', $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function generateRestMethod(Column $column, $newGetter, $getter, $groups)
|
|
||||||
{
|
|
||||||
$annotations = [
|
|
||||||
'/**',
|
|
||||||
' * @JMS\Serializer\Annotation\SerializedName("'.$column->getName().'")',
|
|
||||||
];
|
|
||||||
|
|
||||||
if ($groups) {
|
|
||||||
$annotations[] = ' * @JMS\Serializer\Annotation\Groups('.$groups.')';
|
|
||||||
}
|
|
||||||
|
|
||||||
$annotations[] = ' * @JMS\Serializer\Annotation\VirtualProperty';
|
|
||||||
$annotations[] = '*/';
|
|
||||||
|
|
||||||
$annotations = implode("\n", $annotations);
|
|
||||||
|
|
||||||
$method = <<<EOS
|
|
||||||
$annotations
|
|
||||||
public function $newGetter()
|
|
||||||
{
|
|
||||||
return \$this->$getter();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
EOS;
|
|
||||||
|
|
||||||
return $method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the getter of one of the columns of the behavior
|
|
||||||
*
|
|
||||||
* @param string $column One of the behavior columns, 'create_column' or 'update_column'
|
|
||||||
* @return string The related getter, 'getCreatedOn' or 'getUpdatedOn'
|
|
||||||
*/
|
|
||||||
protected function getColumnGetter($column)
|
|
||||||
{
|
|
||||||
return 'get' . $column->getPhpName();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates code for annotations
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
protected function getClassAnnotations()
|
|
||||||
{
|
|
||||||
$annotations = [];
|
|
||||||
|
|
||||||
foreach (['@JMS\Serializer\Annotation\ExclusionPolicy("all")'] as $annotation) {
|
|
||||||
$annotations[] = ' * '.$annotation;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sprintf("%s\n", implode("\n", $annotations));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<database defaultIdMethod="native" name="default" namespace="CoursEndingBundle\Model">
|
|
||||||
<table name="form" phpName="Form">
|
|
||||||
<column name="id" type="integer" primaryKey="true" required="true" autoIncrement="true"/>
|
|
||||||
<column name="label" type="varchar" size="255" required="true" />
|
|
||||||
<column name="active" type="boolean" required="true" />
|
|
||||||
|
|
||||||
<behavior name="timestampable"/>
|
|
||||||
|
|
||||||
<behavior name="CoursEndingBundle\Propel\Behavior\FOSRestBehavior">
|
|
||||||
<parameter name="id" value="" />
|
|
||||||
<parameter name="label" value="" />
|
|
||||||
<parameter name="active" value="" />
|
|
||||||
</behavior>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<foreign-key foreignTable="foo" onDelete="none" onUpdate="cascade">
|
|
||||||
<reference local="foo_id" foreign="id"/>
|
|
||||||
</foreign-key>
|
|
||||||
|
|
||||||
<behavior name="sortable"/>
|
|
||||||
<behavior name="uploadable">
|
|
||||||
<parameter name="fields" value="picture"/>
|
|
||||||
<parameter name="paths" value="uploads/post/"/>
|
|
||||||
</behavior>
|
|
||||||
-->
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table name="form_question" phpName="Question">
|
|
||||||
<column name="id" type="integer" primaryKey="true" required="true" autoIncrement="true"/>
|
|
||||||
<column name="label" type="varchar" size="255" required="true" />
|
|
||||||
<column name="content" type="longvarchar" required="false" />
|
|
||||||
<column name="active" type="boolean" required="true" defaultValue="true" />
|
|
||||||
<column name="form_id" type="integer" required="true"/>
|
|
||||||
|
|
||||||
<foreign-key foreignTable="form" onDelete="cascade" onUpdate="cascade">
|
|
||||||
<reference local="form_id" foreign="id"/>
|
|
||||||
</foreign-key>
|
|
||||||
|
|
||||||
<behavior name="timestampable"/>
|
|
||||||
|
|
||||||
<behavior name="CoursEndingBundle\Propel\Behavior\FOSRestBehavior">
|
|
||||||
<parameter name="id" value="" />
|
|
||||||
<parameter name="label" value="" />
|
|
||||||
<parameter name="active" value="" />
|
|
||||||
</behavior>
|
|
||||||
</table>
|
|
||||||
</database>
|
|
|
@ -1,2 +0,0 @@
|
||||||
services:
|
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
Vue.config.debug = true;
|
|
||||||
Vue.config.devtools = true;
|
|
||||||
var x = new Vue({
|
|
||||||
el: '#forms-render',
|
|
||||||
|
|
||||||
data: {
|
|
||||||
forms: []
|
|
||||||
},
|
|
||||||
|
|
||||||
ready: function() {
|
|
||||||
this.fetchForms();
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
fetchForms: function() {
|
|
||||||
this.$http.get(Routing.generate('api_get_forms'), function(forms) {
|
|
||||||
for (var i = 0; i < forms.data.length; i++) {
|
|
||||||
forms.data[i].errors = {};
|
|
||||||
}
|
|
||||||
this.$set('forms', forms.data);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
save: function() {
|
|
||||||
var that = this;
|
|
||||||
var data = {
|
|
||||||
forms: {
|
|
||||||
forms: this.forms
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$http.post(Routing.generate('api_post_forms'), data)
|
|
||||||
.success(function (data) {
|
|
||||||
console.log(data);
|
|
||||||
})
|
|
||||||
.error(function (data) {
|
|
||||||
console.log(data);
|
|
||||||
if (data.hasOwnProperty("code") && data.code === 400
|
|
||||||
&& data.hasOwnProperty('message') && data.message === "Validation Failed" ) {
|
|
||||||
var k = 0;
|
|
||||||
for (var i = 0; i < data.errors.children.forms.children.length; i++) {
|
|
||||||
var form = data.errors.children.forms.children[i];
|
|
||||||
//console.log(form);
|
|
||||||
for ( var j in form ) {
|
|
||||||
var errorsInputs = form[j];
|
|
||||||
//console.log(errorsInputs);
|
|
||||||
that.forms[k].errors = errorsInputs;
|
|
||||||
//that.forms[k].label = 'toto';
|
|
||||||
|
|
||||||
k++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.log(that.forms);
|
|
||||||
//that.$set('forms', that.forms); //change rien avec ou sans
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
|
@ -1,40 +0,0 @@
|
||||||
{% extends '::base.html.twig' %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
|
|
||||||
{#{{ form_row(form.forms) }}#}
|
|
||||||
{##}
|
|
||||||
{#{{ form_rest(form) }}#}
|
|
||||||
|
|
||||||
<div id="foo">
|
|
||||||
<br><hr><br>
|
|
||||||
</div>
|
|
||||||
<div id="forms-render" class="collection">
|
|
||||||
<div class="collection-item" v-for="form in forms">
|
|
||||||
{% raw %}
|
|
||||||
<div class="collection-item-title">
|
|
||||||
<input type="text" v-model="form.label" />
|
|
||||||
{{ form.label }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="collection-item-content">
|
|
||||||
<input type="checkbox" v-model="form.active">
|
|
||||||
</div>
|
|
||||||
<div class="collection-item-errors">
|
|
||||||
<div v-for="errors in form.errors">
|
|
||||||
<p>{{ errors.errors }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--<div class="collection-item-questions">
|
|
||||||
<div v-for="questions in form.questions.data">
|
|
||||||
{{ questions | json }}
|
|
||||||
</div>
|
|
||||||
</div>-->
|
|
||||||
<hr />
|
|
||||||
{% endraw %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input v-on:click="save" type="button" value="Enregistrer" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,17 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Tests\Controller;
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
|
||||||
|
|
||||||
class DefaultControllerTest extends WebTestCase
|
|
||||||
{
|
|
||||||
public function testIndex()
|
|
||||||
{
|
|
||||||
$client = static::createClient();
|
|
||||||
|
|
||||||
$crawler = $client->request('GET', '/');
|
|
||||||
|
|
||||||
$this->assertContains('Hello World', $client->getResponse()->getContent());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Tests\Controller;
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
|
||||||
|
|
||||||
class MainControllerTest extends WebTestCase
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace CoursEndingBundle\Tests\Controller;
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
|
||||||
|
|
||||||
class RestControllerTest extends WebTestCase
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,68 +0,0 @@
|
||||||
# Use the front controller as index file. It serves as a fallback solution when
|
|
||||||
# every other rewrite/redirect fails (e.g. in an aliased environment without
|
|
||||||
# mod_rewrite). Additionally, this reduces the matching process for the
|
|
||||||
# start page (path "/") because otherwise Apache will apply the rewriting rules
|
|
||||||
# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
|
|
||||||
DirectoryIndex app.php
|
|
||||||
|
|
||||||
# By default, Apache does not evaluate symbolic links if you did not enable this
|
|
||||||
# feature in your server configuration. Uncomment the following line if you
|
|
||||||
# install assets as symlinks or if you experience problems related to symlinks
|
|
||||||
# when compiling LESS/Sass/CoffeScript assets.
|
|
||||||
# Options FollowSymlinks
|
|
||||||
|
|
||||||
# Disabling MultiViews prevents unwanted negotiation, e.g. "/app" should not resolve
|
|
||||||
# to the front controller "/app.php" but be rewritten to "/app.php/app".
|
|
||||||
<IfModule mod_negotiation.c>
|
|
||||||
Options -MultiViews
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
<IfModule mod_rewrite.c>
|
|
||||||
RewriteEngine On
|
|
||||||
|
|
||||||
# Determine the RewriteBase automatically and set it as environment variable.
|
|
||||||
# If you are using Apache aliases to do mass virtual hosting or installed the
|
|
||||||
# project in a subdirectory, the base path will be prepended to allow proper
|
|
||||||
# resolution of the app.php file and to redirect to the correct URI. It will
|
|
||||||
# work in environments without path prefix as well, providing a safe, one-size
|
|
||||||
# fits all solution. But as you do not need it in this case, you can comment
|
|
||||||
# the following 2 lines to eliminate the overhead.
|
|
||||||
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
|
|
||||||
RewriteRule ^(.*) - [E=BASE:%1]
|
|
||||||
|
|
||||||
# Sets the HTTP_AUTHORIZATION header removed by apache
|
|
||||||
RewriteCond %{HTTP:Authorization} .
|
|
||||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
|
||||||
|
|
||||||
# Redirect to URI without front controller to prevent duplicate content
|
|
||||||
# (with and without `/app.php`). Only do this redirect on the initial
|
|
||||||
# rewrite by Apache and not on subsequent cycles. Otherwise we would get an
|
|
||||||
# endless redirect loop (request -> rewrite to front controller ->
|
|
||||||
# redirect -> request -> ...).
|
|
||||||
# So in case you get a "too many redirects" error or you always get redirected
|
|
||||||
# to the start page because your Apache does not expose the REDIRECT_STATUS
|
|
||||||
# environment variable, you have 2 choices:
|
|
||||||
# - disable this feature by commenting the following 2 lines or
|
|
||||||
# - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
|
|
||||||
# following RewriteCond (best solution)
|
|
||||||
RewriteCond %{ENV:REDIRECT_STATUS} ^$
|
|
||||||
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
|
|
||||||
|
|
||||||
# If the requested filename exists, simply serve it.
|
|
||||||
# We only want to let Apache serve files and not directories.
|
|
||||||
RewriteCond %{REQUEST_FILENAME} -f
|
|
||||||
RewriteRule .? - [L]
|
|
||||||
|
|
||||||
# Rewrite all other queries to the front controller.
|
|
||||||
RewriteRule .? %{ENV:BASE}/app.php [L]
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
<IfModule !mod_rewrite.c>
|
|
||||||
<IfModule mod_alias.c>
|
|
||||||
# When mod_rewrite is not available, we instruct a temporary redirect of
|
|
||||||
# the start page to the front controller explicitly so that the website
|
|
||||||
# and the generated links can still be used.
|
|
||||||
RedirectMatch 302 ^/$ /app.php/
|
|
||||||
# RedirectTemp cannot be used instead
|
|
||||||
</IfModule>
|
|
||||||
</IfModule>
|
|
30
web/app.php
30
web/app.php
|
@ -1,30 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Composer\Autoload\ClassLoader
|
|
||||||
*/
|
|
||||||
$loader = require __DIR__.'/../app/autoload.php';
|
|
||||||
include_once __DIR__.'/../app/bootstrap.php.cache';
|
|
||||||
|
|
||||||
// Enable APC for autoloading to improve performance.
|
|
||||||
// You should change the ApcClassLoader first argument to a unique prefix
|
|
||||||
// in order to prevent cache key conflicts with other applications
|
|
||||||
// also using APC.
|
|
||||||
/*
|
|
||||||
$apcLoader = new Symfony\Component\ClassLoader\ApcClassLoader(sha1(__FILE__), $loader);
|
|
||||||
$loader->unregister();
|
|
||||||
$apcLoader->register(true);
|
|
||||||
*/
|
|
||||||
|
|
||||||
$kernel = new AppKernel('prod', false);
|
|
||||||
$kernel->loadClassCache();
|
|
||||||
//$kernel = new AppCache($kernel);
|
|
||||||
|
|
||||||
// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
|
|
||||||
//Request::enableHttpMethodParameterOverride();
|
|
||||||
$request = Request::createFromGlobals();
|
|
||||||
$response = $kernel->handle($request);
|
|
||||||
$response->send();
|
|
||||||
$kernel->terminate($request, $response);
|
|
|
@ -1,32 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
use Symfony\Component\Debug\Debug;
|
|
||||||
|
|
||||||
// If you don't want to setup permissions the proper way, just uncomment the following PHP line
|
|
||||||
// read http://symfony.com/doc/current/book/installation.html#checking-symfony-application-configuration-and-setup
|
|
||||||
// for more information
|
|
||||||
//umask(0000);
|
|
||||||
|
|
||||||
// This check prevents access to debug front controllers that are deployed by accident to production servers.
|
|
||||||
// Feel free to remove this, extend it, or make something more sophisticated.
|
|
||||||
if (isset($_SERVER['HTTP_CLIENT_IP'])
|
|
||||||
|| isset($_SERVER['HTTP_X_FORWARDED_FOR'])
|
|
||||||
|| !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1','192.168.33.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
|
|
||||||
) {
|
|
||||||
header('HTTP/1.0 403 Forbidden');
|
|
||||||
exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Composer\Autoload\ClassLoader $loader
|
|
||||||
*/
|
|
||||||
$loader = require __DIR__.'/../app/autoload.php';
|
|
||||||
Debug::enable();
|
|
||||||
|
|
||||||
$kernel = new AppKernel('dev', true);
|
|
||||||
$kernel->loadClassCache();
|
|
||||||
$request = Request::createFromGlobals();
|
|
||||||
$response = $kernel->handle($request);
|
|
||||||
$response->send();
|
|
||||||
$kernel->terminate($request, $response);
|
|
Binary file not shown.
Before Width: | Height: | Size: 10 KiB |
205
web/config.php
205
web/config.php
|
@ -1,205 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ************** CAUTION **************
|
|
||||||
*
|
|
||||||
* DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
|
|
||||||
* the installation/update process. The original file resides in the
|
|
||||||
* SensioDistributionBundle.
|
|
||||||
*
|
|
||||||
* ************** CAUTION **************
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!isset($_SERVER['HTTP_HOST'])) {
|
|
||||||
exit('This script cannot be run from the CLI. Run it from a browser.');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
|
|
||||||
'127.0.0.1',
|
|
||||||
'::1',
|
|
||||||
))) {
|
|
||||||
header('HTTP/1.0 403 Forbidden');
|
|
||||||
exit('This script is only accessible from localhost.');
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once dirname(__FILE__).'/../app/SymfonyRequirements.php';
|
|
||||||
|
|
||||||
$symfonyRequirements = new SymfonyRequirements();
|
|
||||||
|
|
||||||
$majorProblems = $symfonyRequirements->getFailedRequirements();
|
|
||||||
$minorProblems = $symfonyRequirements->getFailedRecommendations();
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="robots" content="noindex,nofollow" />
|
|
||||||
<title>Symfony Configuration Checker</title>
|
|
||||||
<link rel="stylesheet" href="bundles/framework/css/structure.css" media="all" />
|
|
||||||
<link rel="stylesheet" href="bundles/framework/css/body.css" media="all" />
|
|
||||||
<style type="text/css">
|
|
||||||
/* styles copied from bundles/sensiodistribution/webconfigurator/css/install.css */
|
|
||||||
body {
|
|
||||||
font-size: 14px;
|
|
||||||
font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
|
|
||||||
}
|
|
||||||
.sf-reset h1.title {
|
|
||||||
font-size: 45px;
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
.sf-reset h2 {
|
|
||||||
font-weight: bold;
|
|
||||||
color: #FFFFFF;
|
|
||||||
/* Font is reset to sans-serif (like body) */
|
|
||||||
font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
background-color: #aacd4e;
|
|
||||||
padding: 2px 4px;
|
|
||||||
display: inline-block;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
.sf-reset ul a,
|
|
||||||
.sf-reset ul a:hover {
|
|
||||||
background: url(../images/blue-arrow.png) no-repeat right 6px;
|
|
||||||
padding-right: 10px;
|
|
||||||
}
|
|
||||||
.sf-reset ul, ol {
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
.sf-reset li {
|
|
||||||
padding-bottom: 18px;
|
|
||||||
}
|
|
||||||
.sf-reset ol li {
|
|
||||||
list-style-type: decimal;
|
|
||||||
}
|
|
||||||
.sf-reset ul li {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
.sf-reset .symfony-blocks-install {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.sf-reset .symfony-install-continue {
|
|
||||||
font-size: 0.95em;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
.sf-reset .symfony-install-continue li {
|
|
||||||
padding-bottom: 10px;
|
|
||||||
}
|
|
||||||
.sf-reset .ok {
|
|
||||||
color: #fff;
|
|
||||||
font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
|
|
||||||
background-color: #6d6;
|
|
||||||
padding: 10px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.sf-reset .ko {
|
|
||||||
background-color: #d66;
|
|
||||||
}
|
|
||||||
.version {
|
|
||||||
text-align: right;
|
|
||||||
font-size: 10px;
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
.sf-reset a,
|
|
||||||
.sf-reset li a {
|
|
||||||
color: #08C;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.sf-reset a:hover,
|
|
||||||
.sf-reset li a:hover {
|
|
||||||
color: #08C;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
.sf-reset textarea {
|
|
||||||
padding: 7px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="content">
|
|
||||||
<div class="header clear-fix">
|
|
||||||
<div class="header-logo">
|
|
||||||
<img src="bundles/framework/images/logo_symfony.png" alt="Symfony" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="search">
|
|
||||||
<form method="get" action="http://symfony.com/search">
|
|
||||||
<div class="form-row">
|
|
||||||
|
|
||||||
<label for="search-id">
|
|
||||||
<img src="bundles/framework/images/grey_magnifier.png" alt="Search on Symfony website" />
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<input name="q" id="search-id" type="search" placeholder="Search on Symfony website" />
|
|
||||||
|
|
||||||
<button type="submit" class="sf-button">
|
|
||||||
<span class="border-l">
|
|
||||||
<span class="border-r">
|
|
||||||
<span class="btn-bg">OK</span>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sf-reset">
|
|
||||||
<div class="block">
|
|
||||||
<div class="symfony-block-content">
|
|
||||||
<h1 class="title">Configuration Checker</h1>
|
|
||||||
<p>
|
|
||||||
This script analyzes your system to check whether is
|
|
||||||
ready to run Symfony applications.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<?php if (count($majorProblems)): ?>
|
|
||||||
<h2 class="ko">Major problems</h2>
|
|
||||||
<p>Major problems have been detected and <strong>must</strong> be fixed before continuing:</p>
|
|
||||||
<ol>
|
|
||||||
<?php foreach ($majorProblems as $problem): ?>
|
|
||||||
<li><?php echo $problem->getHelpHtml() ?></li>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</ol>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<?php if (count($minorProblems)): ?>
|
|
||||||
<h2>Recommendations</h2>
|
|
||||||
<p>
|
|
||||||
<?php if (count($majorProblems)): ?>Additionally, to<?php else: ?>To<?php endif; ?> enhance your Symfony experience,
|
|
||||||
it’s recommended that you fix the following:
|
|
||||||
</p>
|
|
||||||
<ol>
|
|
||||||
<?php foreach ($minorProblems as $problem): ?>
|
|
||||||
<li><?php echo $problem->getHelpHtml() ?></li>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</ol>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<?php if ($symfonyRequirements->hasPhpIniConfigIssue()): ?>
|
|
||||||
<p id="phpini">*
|
|
||||||
<?php if ($symfonyRequirements->getPhpIniConfigPath()): ?>
|
|
||||||
Changes to the <strong>php.ini</strong> file must be done in "<strong><?php echo $symfonyRequirements->getPhpIniConfigPath() ?></strong>".
|
|
||||||
<?php else: ?>
|
|
||||||
To change settings, create a "<strong>php.ini</strong>".
|
|
||||||
<?php endif; ?>
|
|
||||||
</p>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<?php if (!count($majorProblems) && !count($minorProblems)): ?>
|
|
||||||
<p class="ok">All checks passed successfully. Your system is ready to run Symfony applications.</p>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<ul class="symfony-install-continue">
|
|
||||||
<?php if (count($majorProblems) || count($minorProblems)): ?>
|
|
||||||
<li><a href="config.php">Re-check configuration</a></li>
|
|
||||||
<?php endif; ?>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="version">Symfony Standard Edition</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
BIN
web/favicon.ico
BIN
web/favicon.ico
Binary file not shown.
Before Width: | Height: | Size: 6.4 KiB |
|
@ -1,5 +0,0 @@
|
||||||
# www.robotstxt.org/
|
|
||||||
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
|
|
||||||
|
|
||||||
User-agent: *
|
|
||||||
Disallow:
|
|
Loading…
Reference in a new issue