Symfony update to 4.2 and Flex. File hierarchy updated according to Flex. Deps reinstall and remaining refactoring are needed.
This commit is contained in:
parent
95c652e4d6
commit
da13c321fe
21
.env.dist
Normal file
21
.env.dist
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# This file is a "template" of which env vars need to be defined for your application
|
||||||
|
# Copy this file to .env file for development, create environment variables when deploying to production
|
||||||
|
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
||||||
|
|
||||||
|
###> symfony/framework-bundle ###
|
||||||
|
APP_ENV=dev
|
||||||
|
APP_SECRET=xxx
|
||||||
|
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
|
||||||
|
#TRUSTED_HOSTS=localhost,example.com
|
||||||
|
###< symfony/framework-bundle ###
|
||||||
|
|
||||||
|
###> doctrine/doctrine-bundle ###
|
||||||
|
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
||||||
|
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
|
||||||
|
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
||||||
|
DATABASE_URL=postgres://$PGUSER:$PGPASSWORD@127.0.0.1:5436/test?application_name=point_tools
|
||||||
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
|
###> sentry/sentry-symfony ###
|
||||||
|
SENTRY_DSN=
|
||||||
|
###< sentry/sentry-symfony ###
|
16
.gitignore
vendored
16
.gitignore
vendored
|
@ -1,13 +1,7 @@
|
||||||
/.idea/
|
/.idea/
|
||||||
/web/bundles/
|
/var/cache/*
|
||||||
/app/bootstrap.php.cache
|
/var/log/*
|
||||||
/app/cache/*
|
!/var/cache/.gitkeep
|
||||||
/app/config/parameters.yml
|
!/var/log/.gitkeep
|
||||||
/app/logs/*
|
|
||||||
!app/cache/.gitkeep
|
|
||||||
!app/logs/.gitkeep
|
|
||||||
/app/phpunit.xml
|
|
||||||
/build/
|
|
||||||
/vendor/
|
/vendor/
|
||||||
/bin/
|
/.env
|
||||||
/composer.phar
|
|
|
@ -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,9 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
require_once __DIR__.'/AppKernel.php';
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
|
|
||||||
|
|
||||||
class AppCache extends HttpCache
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Symfony\Component\HttpKernel\Kernel;
|
|
||||||
use Symfony\Component\Config\Loader\LoaderInterface;
|
|
||||||
|
|
||||||
class AppKernel extends Kernel
|
|
||||||
{
|
|
||||||
public function registerBundles()
|
|
||||||
{
|
|
||||||
$bundles = array(
|
|
||||||
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
|
|
||||||
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
|
|
||||||
new Symfony\Bundle\TwigBundle\TwigBundle(),
|
|
||||||
new Symfony\Bundle\MonologBundle\MonologBundle(),
|
|
||||||
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
|
|
||||||
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
|
|
||||||
new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
|
|
||||||
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
|
|
||||||
new DT\Bundle\GeshiBundle\DTGeshiBundle(),
|
|
||||||
new Sentry\SentryBundle\SentryBundle(),
|
|
||||||
new Skobkin\Bundle\CopyPasteBundle\SkobkinCopyPasteBundle(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
|
|
||||||
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
|
|
||||||
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
|
|
||||||
$bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $bundles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function registerContainerConfiguration(LoaderInterface $loader)
|
|
||||||
{
|
|
||||||
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,810 +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
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var Requirement[]
|
|
||||||
*/
|
|
||||||
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 Requirement[]
|
|
||||||
*/
|
|
||||||
public function all()
|
|
||||||
{
|
|
||||||
return $this->requirements;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns all mandatory requirements.
|
|
||||||
*
|
|
||||||
* @return Requirement[]
|
|
||||||
*/
|
|
||||||
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 Requirement[]
|
|
||||||
*/
|
|
||||||
public function getFailedRequirements()
|
|
||||||
{
|
|
||||||
$array = array();
|
|
||||||
foreach ($this->requirements as $req) {
|
|
||||||
if (!$req->isFulfilled() && !$req->isOptional()) {
|
|
||||||
$array[] = $req;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns all optional recommendations.
|
|
||||||
*
|
|
||||||
* @return Requirement[]
|
|
||||||
*/
|
|
||||||
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 Requirement[]
|
|
||||||
*/
|
|
||||||
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 LEGACY_REQUIRED_PHP_VERSION = '5.3.3';
|
|
||||||
const REQUIRED_PHP_VERSION = '5.5.9';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor that initializes the requirements.
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
/* mandatory requirements follow */
|
|
||||||
|
|
||||||
$installedPhpVersion = PHP_VERSION;
|
|
||||||
$requiredPhpVersion = $this->getPhpRequiredVersion();
|
|
||||||
|
|
||||||
$this->addRecommendation(
|
|
||||||
$requiredPhpVersion,
|
|
||||||
'Vendors should be installed in order to check all requirements.',
|
|
||||||
'Run the <code>composer install</code> command.',
|
|
||||||
'Run the "composer install" command.'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (false !== $requiredPhpVersion) {
|
|
||||||
$this->addRequirement(
|
|
||||||
version_compare($installedPhpVersion, $requiredPhpVersion, '>='),
|
|
||||||
sprintf('PHP version must be at least %s (%s installed)', $requiredPhpVersion, $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, $requiredPhpVersion),
|
|
||||||
sprintf('Install PHP %s or newer (installed version is %s)', $requiredPhpVersion, $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 (false !== $requiredPhpVersion && version_compare($installedPhpVersion, $requiredPhpVersion, '>=')) {
|
|
||||||
$this->addRequirement(
|
|
||||||
in_array(@date_default_timezone_get(), DateTimeZone::listIdentifiers(), true),
|
|
||||||
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('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 is outdated (%s) and does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()),
|
|
||||||
'To get the latest internationalization data upgrade the ICU system package and the intl PHP extension.'
|
|
||||||
);
|
|
||||||
if (\Symfony\Component\Intl\Intl::getIcuDataVersion() <= \Symfony\Component\Intl\Intl::getIcuVersion()) {
|
|
||||||
$this->addRecommendation(
|
|
||||||
\Symfony\Component\Intl\Intl::getIcuDataVersion() === \Symfony\Component\Intl\Intl::getIcuVersion(),
|
|
||||||
sprintf('intl ICU version installed on your system (%s) does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()),
|
|
||||||
'To avoid internationalization data inconsistencies upgrade the symfony/intl component.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$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 ('WIN' === strtoupper(substr(PHP_OS, 0, 3))) {
|
|
||||||
$this->addRecommendation(
|
|
||||||
$this->getRealpathCacheSize() >= 5 * 1024 * 1024,
|
|
||||||
'realpath_cache_size should be at least 5M in php.ini',
|
|
||||||
'Setting "<strong>realpath_cache_size</strong>" to e.g. "<strong>5242880</strong>" or "<strong>5M</strong>" in php.ini<a href="#phpini">*</a> may improve performance on Windows significantly in some cases.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$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 = '';
|
|
||||||
if (!ctype_digit($size)) {
|
|
||||||
$unit = strtolower(substr($size, -1, 1));
|
|
||||||
$size = (int) substr($size, 0, -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Defines PHP required version from Symfony version.
|
|
||||||
*
|
|
||||||
* @return string|false The PHP required version or false if it could not be guessed
|
|
||||||
*/
|
|
||||||
protected function getPhpRequiredVersion()
|
|
||||||
{
|
|
||||||
if (!file_exists($path = __DIR__.'/../composer.lock')) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$composerLock = json_decode(file_get_contents($path), true);
|
|
||||||
foreach ($composerLock['packages'] as $package) {
|
|
||||||
$name = $package['name'];
|
|
||||||
if ('symfony/symfony' !== $name && 'symfony/http-kernel' !== $name) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (int) $package['version'][1] > 2 ? self::REQUIRED_PHP_VERSION : self::LEGACY_REQUIRED_PHP_VERSION;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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;
|
|
145
app/check.php
145
app/check.php
|
@ -1,145 +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('yellow', ' 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) {
|
|
||||||
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));
|
|
||||||
echo PHP_EOL;
|
|
||||||
echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT));
|
|
||||||
echo PHP_EOL;
|
|
||||||
echo_style($style, $message);
|
|
||||||
echo PHP_EOL;
|
|
||||||
echo_style($style, str_repeat(' ', $width));
|
|
||||||
echo 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,63 +0,0 @@
|
||||||
imports:
|
|
||||||
- { resource: parameters.yml }
|
|
||||||
- { resource: security.yml }
|
|
||||||
- { resource: services.yml }
|
|
||||||
|
|
||||||
framework:
|
|
||||||
#esi: ~
|
|
||||||
translator: { fallbacks: ["%locale%"] }
|
|
||||||
secret: "%secret%"
|
|
||||||
router:
|
|
||||||
resource: "%kernel.root_dir%/config/routing.yml"
|
|
||||||
strict_requirements: ~
|
|
||||||
form: ~
|
|
||||||
csrf_protection: ~
|
|
||||||
validation: { enable_annotations: true }
|
|
||||||
#serializer: { enable_annotations: true }
|
|
||||||
default_locale: '%locale%'
|
|
||||||
trusted_hosts: ~
|
|
||||||
session:
|
|
||||||
# handler_id set to null will use default session handler from php.ini
|
|
||||||
handler_id: ~
|
|
||||||
fragments: ~
|
|
||||||
http_method_override: true
|
|
||||||
assets: ~
|
|
||||||
php_errors:
|
|
||||||
log: true
|
|
||||||
|
|
||||||
sensio_framework_extra:
|
|
||||||
router:
|
|
||||||
annotations: false
|
|
||||||
|
|
||||||
sentry:
|
|
||||||
dsn: '%sentry_dsn%'
|
|
||||||
|
|
||||||
# Twig Configuration
|
|
||||||
twig:
|
|
||||||
debug: "%kernel.debug%"
|
|
||||||
strict_variables: "%kernel.debug%"
|
|
||||||
form_themes:
|
|
||||||
- 'bootstrap_3_layout.html.twig'
|
|
||||||
- 'Form/fields.html.twig'
|
|
||||||
|
|
||||||
# Doctrine Configuration
|
|
||||||
doctrine:
|
|
||||||
dbal:
|
|
||||||
driver: "%database_driver%"
|
|
||||||
host: "%database_host%"
|
|
||||||
port: "%database_port%"
|
|
||||||
dbname: "%database_name%"
|
|
||||||
user: "%database_user%"
|
|
||||||
password: "%database_password%"
|
|
||||||
charset: UTF8
|
|
||||||
|
|
||||||
orm:
|
|
||||||
auto_generate_proxy_classes: "%kernel.debug%"
|
|
||||||
auto_mapping: true
|
|
||||||
|
|
||||||
doctrine_migrations:
|
|
||||||
dir_name: "%kernel.root_dir%/DoctrineMigrations"
|
|
||||||
namespace: Application\Migrations
|
|
||||||
table_name: migration_versions
|
|
||||||
name: Application Migrations
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
imports:
|
|
||||||
- { resource: config_dev.yml }
|
|
||||||
|
|
||||||
doctrine:
|
|
||||||
dbal:
|
|
||||||
dbname: "%test_database_name%"
|
|
||||||
port: "%test_database_port%"
|
|
||||||
user: "%test_database_user%"
|
|
||||||
password: "%test_database_password%"
|
|
||||||
|
|
||||||
framework:
|
|
||||||
test: ~
|
|
||||||
session:
|
|
||||||
storage_id: session.storage.mock_file
|
|
||||||
profiler:
|
|
||||||
collect: false
|
|
||||||
|
|
||||||
web_profiler:
|
|
||||||
toolbar: false
|
|
||||||
intercept_redirects: false
|
|
|
@ -1,18 +0,0 @@
|
||||||
# This file is a "template" of what your parameters.yml file should look like
|
|
||||||
parameters:
|
|
||||||
database_driver: pdo_mysql
|
|
||||||
database_host: 127.0.0.1
|
|
||||||
database_port: ~
|
|
||||||
database_name: symfony
|
|
||||||
database_user: root
|
|
||||||
database_password: ~
|
|
||||||
# You should uncomment this if you want use pdo_sqlite
|
|
||||||
# database_path: "%kernel.root_dir%/data.db3"
|
|
||||||
|
|
||||||
locale: en
|
|
||||||
|
|
||||||
# A secret key that's used to generate certain security-related tokens
|
|
||||||
secret: ThisTokenIsNotSoSecretChangeIt
|
|
||||||
|
|
||||||
# Sentry logging
|
|
||||||
sentry_dsn: ~
|
|
|
@ -1,21 +0,0 @@
|
||||||
paste_show_public:
|
|
||||||
path: /{id}
|
|
||||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::showAction', secret: null }
|
|
||||||
requirements:
|
|
||||||
id: \d+
|
|
||||||
|
|
||||||
paste_show_private:
|
|
||||||
path: /{id}/{secret}
|
|
||||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::showAction' }
|
|
||||||
requirements:
|
|
||||||
id: \d+
|
|
||||||
secret: \w{16}
|
|
||||||
|
|
||||||
paste_new:
|
|
||||||
path: /
|
|
||||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::newAction' }
|
|
||||||
|
|
||||||
paste_create:
|
|
||||||
path: /create
|
|
||||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::createAction' }
|
|
||||||
methods: POST
|
|
|
@ -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,30 +0,0 @@
|
||||||
# Learn more about services, parameters and containers at
|
|
||||||
# http://symfony.com/doc/current/book/service_container.html
|
|
||||||
parameters:
|
|
||||||
# parameter_name: value
|
|
||||||
|
|
||||||
services:
|
|
||||||
# default configuration for services in *this* file
|
|
||||||
_defaults:
|
|
||||||
# automatically injects dependencies in your services
|
|
||||||
autowire: true
|
|
||||||
# automatically registers your services as commands, event subscribers, etc.
|
|
||||||
autoconfigure: true
|
|
||||||
# this means you cannot fetch services directly from the container via $container->get()
|
|
||||||
# if you need to do this, you can override this setting on individual services
|
|
||||||
public: false
|
|
||||||
|
|
||||||
# makes classes in src/AppBundle available to be used as services
|
|
||||||
# this creates a service per class whose id is the fully-qualified class name
|
|
||||||
Skobkin\Bundle\CopyPasteBundle\:
|
|
||||||
resource: '../../src/Skobkin/Bundle/CopyPasteBundle/*'
|
|
||||||
# you can exclude directories or files
|
|
||||||
# but if a service is unused, it's removed anyway
|
|
||||||
exclude: '../../src/Skobkin/Bundle/CopyPasteBundle/{DataFixtures,DependencyInjection,Entity,Repository,Tests}'
|
|
||||||
|
|
||||||
# controllers are imported separately to make sure they're public
|
|
||||||
# and have a tag that allows actions to type-hint services
|
|
||||||
Skobkin\Bundle\CopyPasteBundle\Controller\:
|
|
||||||
resource: '../../src/Skobkin/Bundle/CopyPasteBundle/Controller'
|
|
||||||
public: true
|
|
||||||
tags: ['controller.service_arguments']
|
|
20
app/console
20
app/console
|
@ -1,20 +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 https://symfony.com/doc/current/setup.html#checking-symfony-application-configuration-and-setup
|
|
||||||
// for more information
|
|
||||||
umask(0002);
|
|
||||||
set_time_limit(0);
|
|
||||||
require __DIR__.'/../vendor/autoload.php';
|
|
||||||
$input = new ArgvInput();
|
|
||||||
$env = $input->getParameterOption(['--env', '-e'], getenv('SYMFONY_ENV') ?: 'dev', true);
|
|
||||||
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption('--no-debug', true) && $env !== 'prod';
|
|
||||||
if ($debug) {
|
|
||||||
Debug::enable();
|
|
||||||
}
|
|
||||||
$kernel = new AppKernel($env, $debug);
|
|
||||||
$application = new Application($kernel);
|
|
||||||
$application->run($input);
|
|
|
@ -1,37 +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="bootstrap.php.cache"
|
|
||||||
>
|
|
||||||
<testsuites>
|
|
||||||
<testsuite name="Project Test Suite">
|
|
||||||
<directory>../src/*/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*/Bundle/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*Bundle/Tests</directory>
|
|
||||||
</testsuite>
|
|
||||||
</testsuites>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<php>
|
|
||||||
<server name="KERNEL_DIR" value="/path/to/your/app/" />
|
|
||||||
</php>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
<whitelist>
|
|
||||||
<directory>../src</directory>
|
|
||||||
<exclude>
|
|
||||||
<directory>../src/*Bundle/Resources</directory>
|
|
||||||
<directory>../src/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*/*Bundle/Resources</directory>
|
|
||||||
<directory>../src/*/*Bundle/Tests</directory>
|
|
||||||
<directory>../src/*/Bundle/*Bundle/Resources</directory>
|
|
||||||
<directory>../src/*/Bundle/*Bundle/Tests</directory>
|
|
||||||
</exclude>
|
|
||||||
</whitelist>
|
|
||||||
</filter>
|
|
||||||
</phpunit>
|
|
28
bin/console
Executable file
28
bin/console
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
use App\Kernel;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||||
|
use Symfony\Component\Console\Input\ArgvInput;
|
||||||
|
use Symfony\Component\Debug\Debug;
|
||||||
|
set_time_limit(0);
|
||||||
|
require dirname(__DIR__).'/vendor/autoload.php';
|
||||||
|
if (!class_exists(Application::class)) {
|
||||||
|
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
|
||||||
|
}
|
||||||
|
$input = new ArgvInput();
|
||||||
|
if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
|
||||||
|
putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env);
|
||||||
|
}
|
||||||
|
if ($input->hasParameterOption('--no-debug', true)) {
|
||||||
|
putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
|
||||||
|
}
|
||||||
|
require dirname(__DIR__).'/config/bootstrap.php';
|
||||||
|
if ($_SERVER['APP_DEBUG']) {
|
||||||
|
umask(0000);
|
||||||
|
if (class_exists(Debug::class)) {
|
||||||
|
Debug::enable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
|
||||||
|
$application = new Application($kernel);
|
||||||
|
$application->run($input);
|
1
bin/doctrine
Symbolic link
1
bin/doctrine
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../vendor/doctrine/orm/bin/doctrine
|
1
bin/doctrine-dbal
Symbolic link
1
bin/doctrine-dbal
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../vendor/doctrine/dbal/bin/doctrine-dbal
|
1
bin/doctrine-migrations
Symbolic link
1
bin/doctrine-migrations
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../vendor/doctrine/migrations/bin/doctrine-migrations
|
1
bin/sentry
Symbolic link
1
bin/sentry
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../vendor/sentry/sentry/bin/sentry
|
|
@ -4,8 +4,14 @@
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"description": "Online code sharing app",
|
"description": "Online code sharing app",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": { "": "src/" },
|
"psr-4": {
|
||||||
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
|
"App\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload-dev": {
|
||||||
|
"psr-4": {
|
||||||
|
"App\\Tests\\": "tests/"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -18,42 +24,37 @@
|
||||||
"incenteev/composer-parameter-handler": "^2.0",
|
"incenteev/composer-parameter-handler": "^2.0",
|
||||||
"sensio/framework-extra-bundle": "^5",
|
"sensio/framework-extra-bundle": "^5",
|
||||||
"sentry/sentry-symfony": "^2.2",
|
"sentry/sentry-symfony": "^2.2",
|
||||||
|
"symfony/flex": "^1.1",
|
||||||
"symfony/monolog-bundle": "^3.1",
|
"symfony/monolog-bundle": "^3.1",
|
||||||
"symfony/symfony": "^3.4",
|
|
||||||
"theodordiaconu/geshi": "dev-master",
|
"theodordiaconu/geshi": "dev-master",
|
||||||
"theodordiaconu/geshi-bundle": "dev-master"
|
"theodordiaconu/geshi-bundle": "dev-master"
|
||||||
},"require-dev": {
|
},"require-dev": {
|
||||||
"symfony/web-server-bundle": "^3.4"
|
"symfony/web-server-bundle": "^4.2"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"symfony/symfony": "*"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"symfony-scripts": [
|
"auto-scripts": {
|
||||||
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
|
"cache:clear": "symfony-cmd",
|
||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
|
"assets:install %PUBLIC_DIR%": "symfony-cmd"
|
||||||
"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-install-cmd": [
|
"post-install-cmd": [
|
||||||
"@symfony-scripts"
|
"@auto-scripts"
|
||||||
],
|
],
|
||||||
"post-update-cmd": [
|
"post-update-cmd": [
|
||||||
"@symfony-scripts"
|
"@auto-scripts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"bin-dir": "bin",
|
"preferred-install": {
|
||||||
|
"*": "dist"
|
||||||
|
},
|
||||||
"sort-packages": true
|
"sort-packages": true
|
||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"symfony-app-dir": "app",
|
"symfony": {
|
||||||
"symfony-web-dir": "web",
|
"allow-contrib": false
|
||||||
"symfony-assets-install": "relative",
|
|
||||||
"incenteev-parameters": {
|
|
||||||
"file": "app/config/parameters.yml"
|
|
||||||
},
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "3.1-dev"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
432
composer.lock
generated
432
composer.lock
generated
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "0218e8260fd98189a3dccdd39583ddff",
|
"content-hash": "d2f44b3978879aaf95f741728ffc9e5f",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "doctrine/annotations",
|
"name": "doctrine/annotations",
|
||||||
|
@ -1710,51 +1710,6 @@
|
||||||
],
|
],
|
||||||
"time": "2018-09-27T13:45:01+00:00"
|
"time": "2018-09-27T13:45:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "paragonie/random_compat",
|
|
||||||
"version": "v9.99.99",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/paragonie/random_compat.git",
|
|
||||||
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
|
||||||
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"phpunit/phpunit": "4.*|5.*",
|
|
||||||
"vimeo/psalm": "^1"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Paragon Initiative Enterprises",
|
|
||||||
"email": "security@paragonie.com",
|
|
||||||
"homepage": "https://paragonie.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
|
|
||||||
"keywords": [
|
|
||||||
"csprng",
|
|
||||||
"polyfill",
|
|
||||||
"pseudorandom",
|
|
||||||
"random"
|
|
||||||
],
|
|
||||||
"time": "2018-07-02T15:55:56+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "psr/cache",
|
"name": "psr/cache",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
|
@ -2198,6 +2153,121 @@
|
||||||
],
|
],
|
||||||
"time": "2019-01-05T13:33:24+00:00"
|
"time": "2019-01-05T13:33:24+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/contracts",
|
||||||
|
"version": "v1.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/contracts.git",
|
||||||
|
"reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf",
|
||||||
|
"reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"psr/cache": "^1.0",
|
||||||
|
"psr/container": "^1.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"psr/cache": "When using the Cache contracts",
|
||||||
|
"psr/container": "When using the Service contracts",
|
||||||
|
"symfony/cache-contracts-implementation": "",
|
||||||
|
"symfony/service-contracts-implementation": "",
|
||||||
|
"symfony/translation-contracts-implementation": ""
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Contracts\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"**/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nicolas Grekas",
|
||||||
|
"email": "p@tchwork.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A set of abstractions extracted out of the Symfony components",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"abstractions",
|
||||||
|
"contracts",
|
||||||
|
"decoupling",
|
||||||
|
"interfaces",
|
||||||
|
"interoperability",
|
||||||
|
"standards"
|
||||||
|
],
|
||||||
|
"time": "2018-12-05T08:06:11+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/flex",
|
||||||
|
"version": "v1.1.8",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/flex.git",
|
||||||
|
"reference": "955774ecf07b10230bb5b44e150ba078b45f68fa"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/flex/zipball/955774ecf07b10230bb5b44e150ba078b45f68fa",
|
||||||
|
"reference": "955774ecf07b10230bb5b44e150ba078b45f68fa",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"composer-plugin-api": "^1.0",
|
||||||
|
"php": "^7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"composer/composer": "^1.0.2",
|
||||||
|
"symfony/phpunit-bridge": "^3.2.8"
|
||||||
|
},
|
||||||
|
"type": "composer-plugin",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.1-dev"
|
||||||
|
},
|
||||||
|
"class": "Symfony\\Flex\\Flex"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Flex\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien.potencier@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Composer plugin for Symfony",
|
||||||
|
"time": "2018-11-15T06:11:38+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/monolog-bundle",
|
"name": "symfony/monolog-bundle",
|
||||||
"version": "v3.3.1",
|
"version": "v3.3.1",
|
||||||
|
@ -2261,62 +2331,6 @@
|
||||||
],
|
],
|
||||||
"time": "2018-11-04T09:58:13+00:00"
|
"time": "2018-11-04T09:58:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-apcu",
|
|
||||||
"version": "v1.10.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-apcu.git",
|
|
||||||
"reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2",
|
|
||||||
"reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.3"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.9-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Polyfill\\Apcu\\": ""
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Nicolas Grekas",
|
|
||||||
"email": "p@tchwork.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "https://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"apcu",
|
|
||||||
"compatibility",
|
|
||||||
"polyfill",
|
|
||||||
"portable",
|
|
||||||
"shim"
|
|
||||||
],
|
|
||||||
"time": "2018-08-06T14:22:27+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.10.0",
|
"version": "v1.10.0",
|
||||||
|
@ -2493,22 +2507,21 @@
|
||||||
"time": "2018-09-21T13:07:52+00:00"
|
"time": "2018-09-21T13:07:52+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php56",
|
"name": "symfony/polyfill-php72",
|
||||||
"version": "v1.10.0",
|
"version": "v1.10.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php56.git",
|
"url": "https://github.com/symfony/polyfill-php72.git",
|
||||||
"reference": "ff208829fe1aa48ab9af356992bb7199fed551af"
|
"reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af",
|
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
|
||||||
"reference": "ff208829fe1aa48ab9af356992bb7199fed551af",
|
"reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.3.3",
|
"php": ">=5.3.3"
|
||||||
"symfony/polyfill-util": "~1.0"
|
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
|
@ -2518,7 +2531,7 @@
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Symfony\\Polyfill\\Php56\\": ""
|
"Symfony\\Polyfill\\Php72\\": ""
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"bootstrap.php"
|
"bootstrap.php"
|
||||||
|
@ -2538,7 +2551,7 @@
|
||||||
"homepage": "https://symfony.com/contributors"
|
"homepage": "https://symfony.com/contributors"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
|
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"compatibility",
|
"compatibility",
|
||||||
|
@ -2546,167 +2559,59 @@
|
||||||
"portable",
|
"portable",
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"time": "2018-09-21T06:26:08+00:00"
|
"time": "2018-09-21T13:07:52+00:00"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-php70",
|
|
||||||
"version": "v1.10.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-php70.git",
|
|
||||||
"reference": "6b88000cdd431cd2e940caa2cb569201f3f84224"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224",
|
|
||||||
"reference": "6b88000cdd431cd2e940caa2cb569201f3f84224",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"paragonie/random_compat": "~1.0|~2.0|~9.99",
|
|
||||||
"php": ">=5.3.3"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.9-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Polyfill\\Php70\\": ""
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
],
|
|
||||||
"classmap": [
|
|
||||||
"Resources/stubs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Nicolas Grekas",
|
|
||||||
"email": "p@tchwork.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "https://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"compatibility",
|
|
||||||
"polyfill",
|
|
||||||
"portable",
|
|
||||||
"shim"
|
|
||||||
],
|
|
||||||
"time": "2018-09-21T06:26:08+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-util",
|
|
||||||
"version": "v1.10.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-util.git",
|
|
||||||
"reference": "3b58903eae668d348a7126f999b0da0f2f93611c"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c",
|
|
||||||
"reference": "3b58903eae668d348a7126f999b0da0f2f93611c",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.3"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.9-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Polyfill\\Util\\": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Nicolas Grekas",
|
|
||||||
"email": "p@tchwork.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "https://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony utilities for portability of PHP codes",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"compat",
|
|
||||||
"compatibility",
|
|
||||||
"polyfill",
|
|
||||||
"shim"
|
|
||||||
],
|
|
||||||
"time": "2018-09-30T16:36:12+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/symfony",
|
"name": "symfony/symfony",
|
||||||
"version": "v3.4.21",
|
"version": "v4.2.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/symfony.git",
|
"url": "https://github.com/symfony/symfony.git",
|
||||||
"reference": "c7a57e0bcc3c57ae697f072b3e862487b6fd0030"
|
"reference": "4b3e32332fd3559a644a262be53228422e5393d3"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/symfony/zipball/c7a57e0bcc3c57ae697f072b3e862487b6fd0030",
|
"url": "https://api.github.com/repos/symfony/symfony/zipball/4b3e32332fd3559a644a262be53228422e5393d3",
|
||||||
"reference": "c7a57e0bcc3c57ae697f072b3e862487b6fd0030",
|
"reference": "4b3e32332fd3559a644a262be53228422e5393d3",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"doctrine/common": "~2.4",
|
"doctrine/collections": "~1.0",
|
||||||
|
"doctrine/event-manager": "~1.0",
|
||||||
|
"doctrine/persistence": "~1.0",
|
||||||
"ext-xml": "*",
|
"ext-xml": "*",
|
||||||
"fig/link-util": "^1.0",
|
"fig/link-util": "^1.0",
|
||||||
"php": "^5.5.9|>=7.0.8",
|
"php": "^7.1.3",
|
||||||
"psr/cache": "~1.0",
|
"psr/cache": "~1.0",
|
||||||
"psr/container": "^1.0",
|
"psr/container": "^1.0",
|
||||||
"psr/link": "^1.0",
|
"psr/link": "^1.0",
|
||||||
"psr/log": "~1.0",
|
"psr/log": "~1.0",
|
||||||
"psr/simple-cache": "^1.0",
|
"psr/simple-cache": "^1.0",
|
||||||
"symfony/polyfill-apcu": "~1.1",
|
"symfony/contracts": "^1.0.2",
|
||||||
"symfony/polyfill-ctype": "~1.8",
|
"symfony/polyfill-ctype": "~1.8",
|
||||||
"symfony/polyfill-intl-icu": "~1.0",
|
"symfony/polyfill-intl-icu": "~1.0",
|
||||||
"symfony/polyfill-mbstring": "~1.0",
|
"symfony/polyfill-mbstring": "~1.0",
|
||||||
"symfony/polyfill-php56": "~1.0",
|
"symfony/polyfill-php72": "~1.5",
|
||||||
"symfony/polyfill-php70": "~1.6",
|
|
||||||
"twig/twig": "^1.35|^2.4.4"
|
"twig/twig": "^1.35|^2.4.4"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
|
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
|
||||||
"phpdocumentor/type-resolver": "<0.3.0",
|
"phpdocumentor/type-resolver": "<0.3.0",
|
||||||
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
|
"phpunit/phpunit": "<5.4.3"
|
||||||
},
|
},
|
||||||
"provide": {
|
"provide": {
|
||||||
"psr/cache-implementation": "1.0",
|
"psr/cache-implementation": "1.0",
|
||||||
"psr/container-implementation": "1.0",
|
"psr/container-implementation": "1.0",
|
||||||
"psr/log-implementation": "1.0",
|
"psr/log-implementation": "1.0",
|
||||||
"psr/simple-cache-implementation": "1.0"
|
"psr/simple-cache-implementation": "1.0",
|
||||||
|
"symfony/cache-contracts": "1.0",
|
||||||
|
"symfony/service-contracts": "1.0",
|
||||||
|
"symfony/translation-contracts": "1.0"
|
||||||
},
|
},
|
||||||
"replace": {
|
"replace": {
|
||||||
"symfony/asset": "self.version",
|
"symfony/asset": "self.version",
|
||||||
"symfony/browser-kit": "self.version",
|
"symfony/browser-kit": "self.version",
|
||||||
"symfony/cache": "self.version",
|
"symfony/cache": "self.version",
|
||||||
"symfony/class-loader": "self.version",
|
|
||||||
"symfony/config": "self.version",
|
"symfony/config": "self.version",
|
||||||
"symfony/console": "self.version",
|
"symfony/console": "self.version",
|
||||||
"symfony/css-selector": "self.version",
|
"symfony/css-selector": "self.version",
|
||||||
|
@ -2728,6 +2633,7 @@
|
||||||
"symfony/intl": "self.version",
|
"symfony/intl": "self.version",
|
||||||
"symfony/ldap": "self.version",
|
"symfony/ldap": "self.version",
|
||||||
"symfony/lock": "self.version",
|
"symfony/lock": "self.version",
|
||||||
|
"symfony/messenger": "self.version",
|
||||||
"symfony/monolog-bridge": "self.version",
|
"symfony/monolog-bridge": "self.version",
|
||||||
"symfony/options-resolver": "self.version",
|
"symfony/options-resolver": "self.version",
|
||||||
"symfony/process": "self.version",
|
"symfony/process": "self.version",
|
||||||
|
@ -2749,6 +2655,7 @@
|
||||||
"symfony/twig-bundle": "self.version",
|
"symfony/twig-bundle": "self.version",
|
||||||
"symfony/validator": "self.version",
|
"symfony/validator": "self.version",
|
||||||
"symfony/var-dumper": "self.version",
|
"symfony/var-dumper": "self.version",
|
||||||
|
"symfony/var-exporter": "self.version",
|
||||||
"symfony/web-link": "self.version",
|
"symfony/web-link": "self.version",
|
||||||
"symfony/web-profiler-bundle": "self.version",
|
"symfony/web-profiler-bundle": "self.version",
|
||||||
"symfony/web-server-bundle": "self.version",
|
"symfony/web-server-bundle": "self.version",
|
||||||
|
@ -2763,18 +2670,19 @@
|
||||||
"doctrine/dbal": "~2.4",
|
"doctrine/dbal": "~2.4",
|
||||||
"doctrine/doctrine-bundle": "~1.4",
|
"doctrine/doctrine-bundle": "~1.4",
|
||||||
"doctrine/orm": "~2.4,>=2.4.5",
|
"doctrine/orm": "~2.4,>=2.4.5",
|
||||||
|
"doctrine/reflection": "~1.0",
|
||||||
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
|
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
|
||||||
"monolog/monolog": "~1.11",
|
"monolog/monolog": "~1.11",
|
||||||
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
|
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
|
||||||
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
|
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
|
||||||
"predis/predis": "~1.0",
|
"predis/predis": "~1.1",
|
||||||
"symfony/phpunit-bridge": "~3.4|~4.0",
|
"symfony/phpunit-bridge": "~3.4|~4.0",
|
||||||
"symfony/security-acl": "~2.8|~3.0"
|
"symfony/security-acl": "~2.8|~3.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "3.4-dev"
|
"dev-master": "4.2-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -2812,7 +2720,7 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"framework"
|
"framework"
|
||||||
],
|
],
|
||||||
"time": "2019-01-06T15:54:26+00:00"
|
"time": "2019-01-06T16:19:41+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "theodordiaconu/geshi",
|
"name": "theodordiaconu/geshi",
|
||||||
|
@ -3069,7 +2977,53 @@
|
||||||
"time": "2018-04-25T15:33:34+00:00"
|
"time": "2018-04-25T15:33:34+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [],
|
"packages-dev": [
|
||||||
|
{
|
||||||
|
"name": "paragonie/random_compat",
|
||||||
|
"version": "v9.99.99",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/paragonie/random_compat.git",
|
||||||
|
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
||||||
|
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "4.*|5.*",
|
||||||
|
"vimeo/psalm": "^1"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Paragon Initiative Enterprises",
|
||||||
|
"email": "security@paragonie.com",
|
||||||
|
"homepage": "https://paragonie.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
|
||||||
|
"keywords": [
|
||||||
|
"csprng",
|
||||||
|
"polyfill",
|
||||||
|
"pseudorandom",
|
||||||
|
"random"
|
||||||
|
],
|
||||||
|
"time": "2018-07-02T15:55:56+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": {
|
"stability-flags": {
|
||||||
|
|
17
config/bootstrap.php
Normal file
17
config/bootstrap.php
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
use Symfony\Component\Dotenv\Dotenv;
|
||||||
|
require dirname(__DIR__).'/vendor/autoload.php';
|
||||||
|
// Load cached env vars if the .env.local.php file exists
|
||||||
|
// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
|
||||||
|
if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) {
|
||||||
|
$_SERVER += $env;
|
||||||
|
$_ENV += $env;
|
||||||
|
} elseif (!class_exists(Dotenv::class)) {
|
||||||
|
throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
|
||||||
|
} else {
|
||||||
|
// load all the .env files
|
||||||
|
(new Dotenv())->loadEnv(dirname(__DIR__).'/.env');
|
||||||
|
}
|
||||||
|
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
|
||||||
|
$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
|
||||||
|
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
|
17
config/bundles.php
Normal file
17
config/bundles.php
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
|
||||||
|
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
|
||||||
|
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
|
||||||
|
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['all' => true],
|
||||||
|
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
|
||||||
|
DT\Bundle\GeshiBundle\DTGeshiBundle::class => ['all' => true],
|
||||||
|
Sentry\SentryBundle\SentryBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
|
||||||
|
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
|
||||||
|
Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true, 'test' => true],
|
||||||
|
];
|
|
@ -1,16 +1,3 @@
|
||||||
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:
|
monolog:
|
||||||
handlers:
|
handlers:
|
||||||
main:
|
main:
|
3
config/packages/dev/routing.yaml
Normal file
3
config/packages/dev/routing.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
framework:
|
||||||
|
router:
|
||||||
|
strict_requirements: true
|
3
config/packages/dev/web_profiler.yaml
Normal file
3
config/packages/dev/web_profiler.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
web_profiler:
|
||||||
|
toolbar: true
|
||||||
|
intercept_redirects: false
|
14
config/packages/doctrine.yaml
Normal file
14
config/packages/doctrine.yaml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
parameters:
|
||||||
|
env(DATABASE_URL): ''
|
||||||
|
|
||||||
|
doctrine:
|
||||||
|
dbal:
|
||||||
|
default_connection: default
|
||||||
|
connections:
|
||||||
|
default:
|
||||||
|
driver: 'mysqli'
|
||||||
|
url: '%env(resolve:DATABASE_URL)%'
|
||||||
|
charset: UTF8
|
||||||
|
|
||||||
|
orm:
|
||||||
|
auto_generate_proxy_classes: "%kernel.debug%"
|
3
config/packages/doctrine_migrations.yaml
Normal file
3
config/packages/doctrine_migrations.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
doctrine_migrations:
|
||||||
|
dir_name: '%kernel.project_dir%/src/Migrations'
|
||||||
|
namespace: Migrations
|
3
config/packages/form.yaml
Normal file
3
config/packages/form.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
framework:
|
||||||
|
form: ~
|
||||||
|
csrf_protection: ~
|
12
config/packages/framework.yaml
Normal file
12
config/packages/framework.yaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
framework:
|
||||||
|
#esi: ~
|
||||||
|
secret: '%env(APP_SECRET)%'
|
||||||
|
trusted_hosts: ~
|
||||||
|
session:
|
||||||
|
# handler_id set to null will use default session handler from php.ini
|
||||||
|
handler_id: ~
|
||||||
|
fragments: ~
|
||||||
|
http_method_override: true
|
||||||
|
assets: ~
|
||||||
|
php_errors:
|
||||||
|
log: true
|
|
@ -1,16 +1,3 @@
|
||||||
imports:
|
|
||||||
- { resource: config.yml }
|
|
||||||
|
|
||||||
#framework:
|
|
||||||
# validation:
|
|
||||||
# cache: apc
|
|
||||||
|
|
||||||
#doctrine:
|
|
||||||
# orm:
|
|
||||||
# metadata_cache_driver: apc
|
|
||||||
# result_cache_driver: apc
|
|
||||||
# query_cache_driver: apc
|
|
||||||
|
|
||||||
monolog:
|
monolog:
|
||||||
handlers:
|
handlers:
|
||||||
main:
|
main:
|
2
config/packages/prod/sentry.yaml
Normal file
2
config/packages/prod/sentry.yaml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
sentry:
|
||||||
|
dsn: '%sentry_dsn%'
|
3
config/packages/routing.yaml
Normal file
3
config/packages/routing.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
framework:
|
||||||
|
router:
|
||||||
|
strict_requirements: ~
|
3
config/packages/sensio_framework_extra.yaml
Normal file
3
config/packages/sensio_framework_extra.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
sensio_framework_extra:
|
||||||
|
router:
|
||||||
|
annotations: false
|
3
config/packages/sentry.yaml
Normal file
3
config/packages/sentry.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
sentry:
|
||||||
|
options:
|
||||||
|
curl_method: async
|
3
config/packages/serializer.yaml
Normal file
3
config/packages/serializer.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
framework:
|
||||||
|
serializer:
|
||||||
|
enable_annotations: true
|
6
config/packages/test/doctrine.yaml
Normal file
6
config/packages/test/doctrine.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
doctrine:
|
||||||
|
dbal:
|
||||||
|
dbname: "%test_database_name%"
|
||||||
|
port: "%test_database_port%"
|
||||||
|
user: "%test_database_user%"
|
||||||
|
password: "%test_database_password%"
|
6
config/packages/test/framework.yaml
Normal file
6
config/packages/test/framework.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
framework:
|
||||||
|
test: ~
|
||||||
|
session:
|
||||||
|
storage_id: session.storage.mock_file
|
||||||
|
profiler:
|
||||||
|
collect: false
|
3
config/packages/test/web_profiler.yaml
Normal file
3
config/packages/test/web_profiler.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
web_profiler:
|
||||||
|
toolbar: false
|
||||||
|
intercept_redirects: false
|
7
config/packages/translation.yaml
Normal file
7
config/packages/translation.yaml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
framework:
|
||||||
|
default_locale: '%locale%'
|
||||||
|
translator:
|
||||||
|
paths:
|
||||||
|
- '%kernel.project_dir%/translations'
|
||||||
|
fallbacks:
|
||||||
|
- '%locale%'
|
6
config/packages/twig.yaml
Normal file
6
config/packages/twig.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
twig:
|
||||||
|
debug: "%kernel.debug%"
|
||||||
|
strict_variables: "%kernel.debug%"
|
||||||
|
form_themes:
|
||||||
|
- 'bootstrap_3_layout.html.twig'
|
||||||
|
- 'Form/fields.html.twig'
|
3
config/packages/validation.yaml
Normal file
3
config/packages/validation.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
framework:
|
||||||
|
validation:
|
||||||
|
enable_annotations: true
|
21
config/routes.yaml
Normal file
21
config/routes.yaml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
paste_show_public:
|
||||||
|
path: /{id}
|
||||||
|
defaults: { _controller: 'App\Controller\PasteController::showAction', secret: null }
|
||||||
|
requirements:
|
||||||
|
id: \d+
|
||||||
|
|
||||||
|
paste_show_private:
|
||||||
|
path: /{id}/{secret}
|
||||||
|
defaults: { _controller: 'App\Controller\PasteController::showAction' }
|
||||||
|
requirements:
|
||||||
|
id: \d+
|
||||||
|
secret: \w{16}
|
||||||
|
|
||||||
|
paste_new:
|
||||||
|
path: /
|
||||||
|
defaults: { _controller: 'App\Controller\PasteController::newAction' }
|
||||||
|
|
||||||
|
paste_create:
|
||||||
|
path: /create
|
||||||
|
defaults: { _controller: 'App\Controller\PasteController::createAction' }
|
||||||
|
methods: POST
|
3
config/routes/dev/twig.yaml
Normal file
3
config/routes/dev/twig.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
_errors:
|
||||||
|
resource: '@TwigBundle/Resources/config/routing/errors.xml'
|
||||||
|
prefix: /_error
|
7
config/routes/dev/web_profiles.yaml
Normal file
7
config/routes/dev/web_profiles.yaml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
web_profiler_wdt:
|
||||||
|
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
|
||||||
|
prefix: /_wdt
|
||||||
|
|
||||||
|
web_profiler_profiler:
|
||||||
|
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
|
||||||
|
prefix: /_profiler
|
24
config/services.yaml
Normal file
24
config/services.yaml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# Learn more about services, parameters and containers at
|
||||||
|
# http://symfony.com/doc/current/book/service_container.html
|
||||||
|
parameters:
|
||||||
|
locale: 'ru'
|
||||||
|
container.dumper.inline_class_loader: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
# default configuration for services in *this* file
|
||||||
|
_defaults:
|
||||||
|
# automatically injects dependencies in your services
|
||||||
|
autowire: true
|
||||||
|
# automatically registers your services as commands, event subscribers, etc.
|
||||||
|
autoconfigure: true
|
||||||
|
# this means you cannot fetch services directly from the container via $container->get()
|
||||||
|
# if you need to do this, you can override this setting on individual services
|
||||||
|
public: false
|
||||||
|
|
||||||
|
App\:
|
||||||
|
resource: '../src/*'
|
||||||
|
exclude: '../src/{DataFixtures,Entity,Migrations,Tests,Kernel.php}'
|
||||||
|
|
||||||
|
App\Controller\:
|
||||||
|
resource: '../src/Controller'
|
||||||
|
tags: ['controller.service_arguments']
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
17
public/index.php
Normal file
17
public/index.php
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
use Symfony\Component\Dotenv\Dotenv;
|
||||||
|
require dirname(__DIR__).'/vendor/autoload.php';
|
||||||
|
// Load cached env vars if the .env.local.php file exists
|
||||||
|
// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
|
||||||
|
if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) {
|
||||||
|
$_SERVER += $env;
|
||||||
|
$_ENV += $env;
|
||||||
|
} elseif (!class_exists(Dotenv::class)) {
|
||||||
|
throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
|
||||||
|
} else {
|
||||||
|
// load all the .env files
|
||||||
|
(new Dotenv())->loadEnv(dirname(__DIR__).'/.env');
|
||||||
|
}
|
||||||
|
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
|
||||||
|
$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
|
||||||
|
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
|
|
@ -1,21 +1,30 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\Command;
|
namespace App\Command;
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
use App\Entity\Copypaste;
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
use Symfony\Component\Console\Input\InputOption;
|
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
use Doctrine\ORM\EntityManager;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deleting expired copypastes by Cron
|
* Deleting expired copypastes by Cron
|
||||||
*
|
*
|
||||||
* @author Alexey Skobkin
|
* @author Alexey Skobkin
|
||||||
*/
|
*/
|
||||||
class DropExpiredCopypastesCommand extends ContainerAwareCommand
|
class DropExpiredPasteCommand extends Command
|
||||||
{
|
{
|
||||||
|
/** @var EntityManagerInterface */
|
||||||
|
private $em;
|
||||||
|
|
||||||
|
public function __construct(EntityManagerInterface $em)
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
|
$this->em = $em;
|
||||||
|
}
|
||||||
|
|
||||||
protected function configure()
|
protected function configure()
|
||||||
{
|
{
|
||||||
$this
|
$this
|
||||||
|
@ -27,17 +36,14 @@ class DropExpiredCopypastesCommand extends ContainerAwareCommand
|
||||||
protected function execute(InputInterface $input, OutputInterface $output)
|
protected function execute(InputInterface $input, OutputInterface $output)
|
||||||
{
|
{
|
||||||
$output->write('Deleting expired entities...');
|
$output->write('Deleting expired entities...');
|
||||||
|
|
||||||
/* @var $em EntityManager */
|
|
||||||
$em = $this->getContainer()->get('doctrine')->getManager();
|
|
||||||
|
|
||||||
// @todo move to repository
|
// @todo move to repository
|
||||||
$queryBuilder = $em->createQueryBuilder()
|
$qb = $this->em->createQueryBuilder()
|
||||||
->delete('SkobkinCopyPasteBundle:Copypaste c')
|
->delete(Copypaste::class, 'c')
|
||||||
->where('c.dateExpire < :now')
|
->where('c.dateExpire < :now')
|
||||||
->andWhere('c.dateExpire IS NOT NULL')
|
->andWhere('c.dateExpire IS NOT NULL')
|
||||||
->setParameter('now', new \DateTime());
|
->setParameter('now', new \DateTime());
|
||||||
$queryBuilder->getQuery()->execute();
|
$qb->getQuery()->execute();
|
||||||
|
|
||||||
$output->writeln('Done.');
|
$output->writeln('Done.');
|
||||||
}
|
}
|
|
@ -1,26 +1,19 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\Controller;
|
namespace App\Controller;
|
||||||
|
|
||||||
use DT\Bundle\GeshiBundle\Highlighter\HighlighterInterface;
|
use DT\Bundle\GeshiBundle\Highlighter\HighlighterInterface;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\Form\FormInterface;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\{Request, Response};
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
use App\Entity\Copypaste;
|
||||||
use \Symfony\Component\Form\Form;
|
use App\Form\CopypasteType;
|
||||||
use Skobkin\Bundle\CopyPasteBundle\Entity\Copypaste;
|
|
||||||
use Skobkin\Bundle\CopyPasteBundle\Form\CopypasteType;
|
|
||||||
use \GeSHi\GeSHi;
|
use \GeSHi\GeSHi;
|
||||||
|
|
||||||
class PasteController extends Controller
|
class PasteController extends AbstractController
|
||||||
{
|
{
|
||||||
|
public function createAction(Request $request): Response
|
||||||
/**
|
|
||||||
* Creates a new Copypaste entity.
|
|
||||||
*
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function createAction(Request $request)
|
|
||||||
{
|
{
|
||||||
$paste = new Copypaste();
|
$paste = new Copypaste();
|
||||||
$form = $this->createCreateForm($paste);
|
$form = $this->createCreateForm($paste);
|
||||||
|
@ -63,31 +56,7 @@ class PasteController extends Controller
|
||||||
throw $this->createAccessDeniedException('Sorry :(');
|
throw $this->createAccessDeniedException('Sorry :(');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function newAction(): Response
|
||||||
* Creates a form to create a Copypaste entity.
|
|
||||||
*
|
|
||||||
* @param Copypaste $entity The entity
|
|
||||||
*
|
|
||||||
* @return Form The form
|
|
||||||
*/
|
|
||||||
private function createCreateForm(Copypaste $entity)
|
|
||||||
{
|
|
||||||
$form = $this->createForm(CopypasteType::class, $entity, [
|
|
||||||
'action' => $this->generateUrl('paste_create'),
|
|
||||||
'method' => 'POST',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$form->add('submit', SubmitType::class, ['label' => 'Create']);
|
|
||||||
|
|
||||||
return $form;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Displays a form to create a new Copypaste entity.
|
|
||||||
*
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function newAction()
|
|
||||||
{
|
{
|
||||||
$paste = new Copypaste();
|
$paste = new Copypaste();
|
||||||
$createForm = $this->createCreateForm($paste);
|
$createForm = $this->createCreateForm($paste);
|
||||||
|
@ -98,16 +67,11 @@ class PasteController extends Controller
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function showAction(int $id, ?string $secret, HighlighterInterface $highlighter): Response
|
||||||
* Finds and displays a Copypaste entity.
|
|
||||||
*
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function showAction(int $id, ?string $secret, HighlighterInterface $highlighter)
|
|
||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
/* @var $paste Copypaste */
|
/* @var $paste \App\Entity\Copypaste */
|
||||||
$paste = $em->getRepository(Copypaste::class)->findOneBy([
|
$paste = $em->getRepository(Copypaste::class)->findOneBy([
|
||||||
'id' =>$id,
|
'id' =>$id,
|
||||||
'secret' => $secret
|
'secret' => $secret
|
||||||
|
@ -130,13 +94,8 @@ class PasteController extends Controller
|
||||||
'form_create' => $editForm->createView(),
|
'form_create' => $editForm->createView(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function sidebarAction(): Response
|
||||||
* Main page
|
|
||||||
*
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function sidebarAction()
|
|
||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
@ -149,4 +108,16 @@ class PasteController extends Controller
|
||||||
|
|
||||||
return $this->render('sidebar.html.twig', ['pastes' => $pastes]);
|
return $this->render('sidebar.html.twig', ['pastes' => $pastes]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function createCreateForm(Copypaste $entity): FormInterface
|
||||||
|
{
|
||||||
|
$form = $this->createForm(CopypasteType::class, $entity, [
|
||||||
|
'action' => $this->generateUrl('paste_create'),
|
||||||
|
'method' => 'POST',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$form->add('submit', SubmitType::class, ['label' => 'Create']);
|
||||||
|
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\DataFixtures\ORM;
|
namespace App\DataFixtures\ORM;
|
||||||
|
|
||||||
use Doctrine\Common\DataFixtures\FixtureInterface;
|
use Doctrine\Common\DataFixtures\FixtureInterface;
|
||||||
use Doctrine\Common\Persistence\ObjectManager;
|
use Doctrine\Common\Persistence\ObjectManager;
|
||||||
|
@ -10,7 +10,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
use Symfony\Component\Console\Output\ConsoleOutput;
|
use Symfony\Component\Console\Output\ConsoleOutput;
|
||||||
use Symfony\Component\Finder\Finder;
|
use Symfony\Component\Finder\Finder;
|
||||||
use Symfony\Component\Finder\SplFileInfo;
|
use Symfony\Component\Finder\SplFileInfo;
|
||||||
use Skobkin\Bundle\CopyPasteBundle\Entity\Language;
|
use App\Entity\Language;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of LoadLanguages
|
* Description of LoadLanguages
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\Entity;
|
namespace App\Entity;
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
@ -12,7 +12,6 @@ use Symfony\Component\Validator\Constraints as Assert;
|
||||||
* @ORM\Index(name="idx_expire", columns={"date_expire"})
|
* @ORM\Index(name="idx_expire", columns={"date_expire"})
|
||||||
* })
|
* })
|
||||||
* @ORM\Entity
|
* @ORM\Entity
|
||||||
* @ORM\HasLifecycleCallbacks()
|
|
||||||
*/
|
*/
|
||||||
class Copypaste
|
class Copypaste
|
||||||
{
|
{
|
||||||
|
@ -90,20 +89,12 @@ class Copypaste
|
||||||
*/
|
*/
|
||||||
private $secret = null;
|
private $secret = null;
|
||||||
|
|
||||||
/**
|
public function __construct()
|
||||||
* @ORM\PrePersist
|
|
||||||
*/
|
|
||||||
public function prePersist()
|
|
||||||
{
|
{
|
||||||
$this->datePublished = new \DateTime();
|
$this->datePublished = new \DateTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getId(): int
|
||||||
* Get id
|
|
||||||
*
|
|
||||||
* @return integer
|
|
||||||
*/
|
|
||||||
public function getId()
|
|
||||||
{
|
{
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
|
@ -113,219 +104,108 @@ class Copypaste
|
||||||
return (string) $this->id;
|
return (string) $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setText(string $text): self
|
||||||
* Set text
|
|
||||||
*
|
|
||||||
* @param string $text
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setText($text)
|
|
||||||
{
|
{
|
||||||
$this->text = $text;
|
$this->text = $text;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getText(): string
|
||||||
* Get text
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getText()
|
|
||||||
{
|
{
|
||||||
return $this->text;
|
return $this->text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setDescription(string $description): self
|
||||||
* Set description
|
|
||||||
*
|
|
||||||
* @param string $description
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setDescription($description)
|
|
||||||
{
|
{
|
||||||
$this->description = $description;
|
$this->description = $description;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getDescription(): ?string
|
||||||
* Get code description
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getDescription()
|
|
||||||
{
|
{
|
||||||
return $this->description;
|
return $this->description;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setLanguage(Language $language): self
|
||||||
* Set language
|
|
||||||
*
|
|
||||||
* @param integer $language
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setLanguage($language)
|
|
||||||
{
|
{
|
||||||
$this->language = $language;
|
$this->language = $language;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getLanguage(): Language
|
||||||
* Get language
|
|
||||||
*
|
|
||||||
* @return integer
|
|
||||||
*/
|
|
||||||
public function getLanguage()
|
|
||||||
{
|
{
|
||||||
return $this->language;
|
return $this->language;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setFilename(string $filename): self
|
||||||
* Set filename
|
|
||||||
*
|
|
||||||
* @param string $filename
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setFilename($filename)
|
|
||||||
{
|
{
|
||||||
$this->fileName = $filename;
|
$this->fileName = $filename;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getFilename(): ?string
|
||||||
* Get filename
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getFilename()
|
|
||||||
{
|
{
|
||||||
return $this->fileName;
|
return $this->fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setAuthor(string $author): self
|
||||||
* Set author
|
|
||||||
*
|
|
||||||
* @param string $author
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setAuthor($author)
|
|
||||||
{
|
{
|
||||||
$this->author = $author;
|
$this->author = $author;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getAuthor(): ?string
|
||||||
* Get author
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getAuthor()
|
|
||||||
{
|
{
|
||||||
return $this->author;
|
return $this->author;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getDatePublished(): \DateTime
|
||||||
* Set publication date
|
|
||||||
*
|
|
||||||
* @param \DateTime $datePublished
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setDatePublished($datePublished)
|
|
||||||
{
|
|
||||||
$this->datePublished = $datePublished;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get publication date
|
|
||||||
*
|
|
||||||
* @return \DateTime
|
|
||||||
*/
|
|
||||||
public function getDatePublished()
|
|
||||||
{
|
{
|
||||||
return $this->datePublished;
|
return $this->datePublished;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setDateExpire(\DateTime $dateExpire): self
|
||||||
* Set expiration date
|
|
||||||
*
|
|
||||||
* @param \DateTime $dateExpire
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setDateExpire($dateExpire)
|
|
||||||
{
|
{
|
||||||
$this->dateExpire = $dateExpire;
|
$this->dateExpire = $dateExpire;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getDateExpire(): ?\DateTime
|
||||||
* Get expiration date
|
|
||||||
*
|
|
||||||
* @return \DateTime
|
|
||||||
*/
|
|
||||||
public function getDateExpire()
|
|
||||||
{
|
{
|
||||||
return $this->dateExpire;
|
return $this->dateExpire;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setIp(string $ip): self
|
||||||
* Set ip
|
|
||||||
*
|
|
||||||
* @param string $ip
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setIp($ip)
|
|
||||||
{
|
{
|
||||||
$this->ip = $ip;
|
$this->ip = $ip;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getIp(): string
|
||||||
* Get ip
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getIp()
|
|
||||||
{
|
{
|
||||||
return $this->ip;
|
return $this->ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setSecret(?string $secret): self
|
||||||
* Set secret
|
|
||||||
*
|
|
||||||
* @param string $secret
|
|
||||||
* @return Paste
|
|
||||||
*/
|
|
||||||
public function setSecret($secret)
|
|
||||||
{
|
{
|
||||||
$this->secret = $secret;
|
$this->secret = $secret;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getSecret(): ?string
|
||||||
* Get secret
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getSecret()
|
|
||||||
{
|
{
|
||||||
return $this->secret;
|
return $this->secret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function isPrivate(): bool
|
||||||
* Check if copypaste is private
|
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
public function isPrivate()
|
|
||||||
{
|
{
|
||||||
return ($this->secret === null) ? false : true;
|
return ($this->secret === null) ? false : true;
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\Entity;
|
namespace App\Entity;
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
|
use App\Entity\Copypaste;
|
||||||
|
use App\Entity\Language;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
|
@ -10,7 +12,6 @@ use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
use Doctrine\ORM\QueryBuilder;
|
use Doctrine\ORM\QueryBuilder;
|
||||||
|
|
||||||
|
@ -61,7 +62,7 @@ class CopypasteType extends AbstractType
|
||||||
])
|
])
|
||||||
->add('language', EntityType::class, [
|
->add('language', EntityType::class, [
|
||||||
'label' => 'paste_add_form_language',
|
'label' => 'paste_add_form_language',
|
||||||
'class' => 'Skobkin\Bundle\CopyPasteBundle\Entity\Language',
|
'class' => Language::class,
|
||||||
'query_builder' => function (EntityRepository $repo) {
|
'query_builder' => function (EntityRepository $repo) {
|
||||||
/* @var $qb QueryBuilder */
|
/* @var $qb QueryBuilder */
|
||||||
return $repo->createQueryBuilder('lang')
|
return $repo->createQueryBuilder('lang')
|
||||||
|
@ -79,23 +80,10 @@ class CopypasteType extends AbstractType
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param OptionsResolver $resolver
|
|
||||||
*/
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
{
|
{
|
||||||
$resolver->setDefaults([
|
$resolver->setDefaults([
|
||||||
'data_class' => 'Skobkin\Bundle\CopyPasteBundle\Entity\Copypaste'
|
'data_class' => Copypaste::class
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return null|string
|
|
||||||
*/
|
|
||||||
public function getBlockPrefix()
|
|
||||||
{
|
|
||||||
return 'copypaste';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||||
|
@ -25,14 +25,4 @@ class FakeCaptchaType extends AbstractType
|
||||||
{
|
{
|
||||||
return HiddenType::class;
|
return HiddenType::class;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function getBlockPrefix()
|
|
||||||
{
|
|
||||||
return 'copypaste_fake_captcha';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
39
src/Kernel.php
Normal file
39
src/Kernel.php
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
namespace App;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
|
||||||
|
use Symfony\Component\Config\Loader\LoaderInterface;
|
||||||
|
use Symfony\Component\Config\Resource\FileResource;
|
||||||
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
|
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
|
||||||
|
use Symfony\Component\Routing\RouteCollectionBuilder;
|
||||||
|
class Kernel extends BaseKernel
|
||||||
|
{
|
||||||
|
use MicroKernelTrait;
|
||||||
|
const CONFIG_EXTS = '.{php,xml,yaml,yml}';
|
||||||
|
public function registerBundles()
|
||||||
|
{
|
||||||
|
$contents = require $this->getProjectDir().'/config/bundles.php';
|
||||||
|
foreach ($contents as $class => $envs) {
|
||||||
|
if ($envs[$this->environment] ?? $envs['all'] ?? false) {
|
||||||
|
yield new $class();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
|
||||||
|
{
|
||||||
|
$container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
|
||||||
|
$container->setParameter('container.dumper.inline_class_loader', true);
|
||||||
|
$confDir = $this->getProjectDir().'/config';
|
||||||
|
$loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob');
|
||||||
|
$loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
|
||||||
|
$loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob');
|
||||||
|
$loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob');
|
||||||
|
}
|
||||||
|
protected function configureRoutes(RouteCollectionBuilder $routes)
|
||||||
|
{
|
||||||
|
$confDir = $this->getProjectDir().'/config';
|
||||||
|
$routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob');
|
||||||
|
$routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob');
|
||||||
|
$routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob');
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Application\Migrations;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Application\Migrations;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Application\Migrations;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Application\Migrations;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Application\Migrations;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Application\Migrations;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
|
@ -1,29 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\DependencyInjection;
|
|
||||||
|
|
||||||
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
|
||||||
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the class that validates and merges configuration from your app/config files
|
|
||||||
*
|
|
||||||
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}
|
|
||||||
*/
|
|
||||||
class Configuration implements ConfigurationInterface
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function getConfigTreeBuilder()
|
|
||||||
{
|
|
||||||
$treeBuilder = new TreeBuilder();
|
|
||||||
$rootNode = $treeBuilder->root('skobkin_copy_paste');
|
|
||||||
|
|
||||||
// Here you should define the parameters that are allowed to
|
|
||||||
// configure your bundle. See the documentation linked above for
|
|
||||||
// more information on that topic.
|
|
||||||
|
|
||||||
return $treeBuilder;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle\DependencyInjection;
|
|
||||||
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
||||||
use Symfony\Component\Config\FileLocator;
|
|
||||||
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
|
||||||
use Symfony\Component\DependencyInjection\Loader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the class that loads and manages your bundle configuration
|
|
||||||
*
|
|
||||||
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
|
|
||||||
*/
|
|
||||||
class SkobkinCopyPasteExtension extends Extension
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function load(array $configs, ContainerBuilder $container)
|
|
||||||
{
|
|
||||||
$configuration = new Configuration();
|
|
||||||
$config = $this->processConfiguration($configuration, $configs);
|
|
||||||
|
|
||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Skobkin\Bundle\CopyPasteBundle;
|
|
||||||
|
|
||||||
use Symfony\Component\HttpKernel\Bundle\Bundle;
|
|
||||||
|
|
||||||
class SkobkinCopyPasteBundle extends Bundle
|
|
||||||
{
|
|
||||||
}
|
|
11
symfony.lock
Normal file
11
symfony.lock
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"symfony/flex": {
|
||||||
|
"version": "1.0",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "master",
|
||||||
|
"version": "1.0",
|
||||||
|
"ref": "dc3fc2e0334a4137c47cfd5a3ececc601fa61a0b"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
{%- block css -%}
|
{%- block css -%}
|
||||||
{{- parent() -}}
|
{{- parent() -}}
|
||||||
<link href="{{ asset('bundles/skobkincopypaste/css/base.css') }}" rel="stylesheet" media="screen">
|
<link href="{{ asset('/css/base.css') }}" rel="stylesheet" media="screen">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block javascript %}
|
{% block javascript %}
|
||||||
{{- parent() -}}
|
{{- parent() -}}
|
||||||
<script src="{{ asset('bundles/skobkincopypaste/js/copypaste.js') }}"></script>
|
<script src="{{ asset('/js/copypaste.js') }}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{%- block header -%}
|
{%- block header -%}
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
||||||
|
|
||||||
{%- block sidebar -%}
|
{%- block sidebar -%}
|
||||||
{{ render(controller('Skobkin\\Bundle\\CopyPasteBundle\\Controller\\PasteController::sidebarAction')) }}
|
{{ render(controller('App\\Controller\\PasteController::sidebarAction')) }}
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
||||||
|
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
|
@ -4,7 +4,7 @@
|
||||||
{%- block head -%}
|
{%- block head -%}
|
||||||
<title>{% block title %}CopyPaste{% endblock %}</title>
|
<title>{% block title %}CopyPaste{% endblock %}</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="icon" href="{{ asset('bundles/skobkincopypaste/images/favicon.ico') }}">
|
<link rel="icon" href="{{ asset('/images/favicon.ico') }}">
|
||||||
{%- block css -%}
|
{%- block css -%}
|
||||||
<link href="https://yastatic.net/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
<link href="https://yastatic.net/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
0
app/logs/.gitkeep → var/cache/.gitkeep
vendored
0
app/logs/.gitkeep → var/cache/.gitkeep
vendored
0
var/log/.gitkeep
Normal file
0
var/log/.gitkeep
Normal file
|
@ -1,62 +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
|
|
||||||
|
|
||||||
# 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>
|
|
17
web/app.php
17
web/app.php
|
@ -1,17 +0,0 @@
|
||||||
<?php
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
require __DIR__.'/../vendor/autoload.php';
|
|
||||||
if (PHP_VERSION_ID < 70000) {
|
|
||||||
include_once __DIR__.'/../app/bootstrap.php.cache';
|
|
||||||
}
|
|
||||||
$kernel = new AppKernel('prod', false);
|
|
||||||
if (PHP_VERSION_ID < 70000) {
|
|
||||||
$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,26 +0,0 @@
|
||||||
<?php
|
|
||||||
use Symfony\Component\Debug\Debug;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
// If you don't want to setup permissions the proper way, just uncomment the following PHP line
|
|
||||||
// read https://symfony.com/doc/current/setup.html#checking-symfony-application-configuration-and-setup
|
|
||||||
// for more information
|
|
||||||
umask(0002);
|
|
||||||
// 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'], ['127.0.0.1', '::1'], true) || PHP_SAPI === 'cli-server')
|
|
||||||
) {
|
|
||||||
header('HTTP/1.0 403 Forbidden');
|
|
||||||
exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
|
|
||||||
}
|
|
||||||
require __DIR__.'/../vendor/autoload.php';
|
|
||||||
Debug::enable();
|
|
||||||
$kernel = new AppKernel('dev', true);
|
|
||||||
if (PHP_VERSION_ID < 70000) {
|
|
||||||
$kernel->loadClassCache();
|
|
||||||
}
|
|
||||||
$request = Request::createFromGlobals();
|
|
||||||
$response = $kernel->handle($request);
|
|
||||||
$response->send();
|
|
||||||
$kernel->terminate($request, $response);
|
|
Loading…
Reference in a new issue