diff --git a/lib/classes/module/console/fileEnsureProductionSetting.class.php b/lib/classes/module/console/fileEnsureProductionSetting.class.php
index 542058ae1f..ce4a1dca6b 100644
--- a/lib/classes/module/console/fileEnsureProductionSetting.class.php
+++ b/lib/classes/module/console/fileEnsureProductionSetting.class.php
@@ -15,6 +15,7 @@ use Symfony\Component\Console\Input\InputArgument,
Symfony\Component\Console\Output\OutputInterface,
Symfony\Component\Console\Command\Command;
use Alchemy\Phrasea\Core;
+use Symfony\Component\Yaml;
/**
* @todo write tests
@@ -55,11 +56,6 @@ class module_console_fileEnsureProductionSetting extends Command
public function execute(InputInterface $input, OutputInterface $output)
{
- $output->writeln("");
- $output->writeln(sprintf("Checking for PROD settings"));
- $output->writeln("=============================");
- $output->writeln("");
-
$this->initTests($output);
$this->prepareTests($output);
@@ -135,13 +131,10 @@ class module_console_fileEnsureProductionSetting extends Command
$output->writeln(sprintf("=== CHECKING %s ===", $display));
$output->writeln("");
-
+
try
{
call_user_func(array($this, $test), $output);
- $output->writeln("");
- $output->writeln("Test successfull");
- $output->writeln("");
}
catch (\Exception $e)
{
@@ -239,6 +232,11 @@ class module_console_fileEnsureProductionSetting extends Command
throw new \Exception(sprintf("CHECK get selected environment from file\n"), null, $e);
}
+
+ $output->writeln("=== ENVIRONMENT ===");
+ $output->writeln("");
+ $output->writeln(sprintf("Current is '%s'", $configuration->getEnvironnement()));
+ $output->writeln("");
return;
}
@@ -248,6 +246,8 @@ class module_console_fileEnsureProductionSetting extends Command
{
$phraseanet = $this->configuration->getPhraseanet();
+ $this->printConf($output, 'phraseanet', $phraseanet->all());
+
$url = $phraseanet->get("servername");
if (empty($url))
@@ -267,8 +267,6 @@ class module_console_fileEnsureProductionSetting extends Command
$output->writeln(sprintf(" /!\ %s url scheme should be https", $url));
}
- $output->writeln("CHECK servername OK");
-
if ($phraseanet->get("debug") !== false)
{
throw new \Exception("phraseanet:debug must be initialized to false");
@@ -279,19 +277,18 @@ class module_console_fileEnsureProductionSetting extends Command
throw new \Exception("phraseanet:debug must be initialized to false");
}
-
if ($phraseanet->get("maintenance") === true)
{
throw new \Exception("phraseanet:warning maintenance is set to false");
}
-
- $output->writeln("CHECK Phraseanet modes OK");
}
catch (\Exception $e)
{
throw new \Exception(sprintf("Check Phraseanet Scope\n"), null, $e);
}
-
+ $output->writeln("");
+ $output->writeln("Phraseanet scope is correctly setted");
+ $output->writeln("");
return;
}
@@ -302,13 +299,18 @@ class module_console_fileEnsureProductionSetting extends Command
$connexionName = $this->configuration->getPhraseanet()->get('database');
$connexion = $this->configuration->getConnexion($connexionName);
+ $output->writeln(sprintf("Current connexion is '%s'", $connexionName));
+ $output->writeln("");
+ foreach ($connexion->all() as $key => $element)
+ {
+ $output->writeln(sprintf("%s: %s", $key, $element));
+ }
+
if ($connexion->get("driver") === "pdo_sqlite")
{
throw new \Exception("A sqlite database is not recommanded for production environment");
}
- $output->writeln("CHECK database driver OK");
-
try
{
$config = new \Doctrine\DBAL\Configuration();
@@ -329,7 +331,9 @@ class module_console_fileEnsureProductionSetting extends Command
);
}
- $output->writeln("CHECK database connexion OK");
+ $output->writeln("");
+ $output->writeln(sprintf("'%s' successfully connect to database", $connexionName));
+ $output->writeln("");
}
catch (\Exception $e)
{
@@ -344,10 +348,12 @@ class module_console_fileEnsureProductionSetting extends Command
try
{
$templateEngineName = $this->configuration->getTemplating();
-
+ $output->writeln(sprintf("Current template engine service is '%s' ", $templateEngineName));
+ $output->writeln("");
try
{
$configuration = $this->configuration->getService($templateEngineName);
+ $this->printConf($output, $templateEngineName, $configuration->all());
}
catch (\Exception $e)
{
@@ -369,8 +375,6 @@ class module_console_fileEnsureProductionSetting extends Command
$service = $serviceBuilder->buildService();
- $output->writeln("CHECK build service OK");
-
if ($service->getType() === 'twig')
{
$twig = $service->getService();
@@ -384,8 +388,6 @@ class module_console_fileEnsureProductionSetting extends Command
{
throw new \Exception(sprintf("%s service should not be set in strict variables mode", $service->getName()));
}
-
- $output->writeln("CHECK service configuration OK");
}
}
catch (\Exception $e)
@@ -413,7 +415,9 @@ class module_console_fileEnsureProductionSetting extends Command
throw new \Exception(sprintf("Check Template Service\n"), null, $e);
}
-
+ $output->writeln("");
+ $output->writeln(sprintf("'%s' template engine service is correctly setted ", $templateEngineName));
+ $output->writeln("");
return;
}
@@ -430,9 +434,12 @@ class module_console_fileEnsureProductionSetting extends Command
{
$ormName = $this->configuration->getOrm();
+ $output->writeln(sprintf("Current ORM service is '%s'", $ormName));
+ $output->writeln("");
try
{
$configuration = $this->configuration->getService($ormName);
+ $this->printConf($output, $ormName, $configuration->all());
}
catch (\Exception $e)
{
@@ -445,7 +452,6 @@ class module_console_fileEnsureProductionSetting extends Command
$e = new \Exception($message);
throw $e;
}
-
$registry = \registry::get_instance();
$serviceBuilder = new Core\ServiceBuilder\Orm(
@@ -456,11 +462,11 @@ class module_console_fileEnsureProductionSetting extends Command
$service = $serviceBuilder->buildService();
- $output->writeln("CHECK build service OK");
-
if ($service->getType() === 'doctrine')
{
- $caches = $service->getCacheServices();
+ $output->writeln("");
+
+ $caches = $service->getCacheServices()->all();
if ($service->isDebug())
{
@@ -471,57 +477,48 @@ class module_console_fileEnsureProductionSetting extends Command
);
}
- $caches = $caches->all();
+ $output->writeln("");
- if (empty($caches))
+ $options = $configuration->get("options");
+
+ if (!isset($options['orm']['cache']))
{
- $cache = $install = "";
-
- $services = $this->configuration->getServices()->all();
-
- if (extension_loaded("memcache"))
- {
- $cache = 'memcache';
- }
- elseif (extension_loaded("apc"))
- {
- $cache = 'apc';
- }
- elseif (extension_loaded("xcache"))
- {
- $cache = 'xcache';
- }
- else
- {
- $install = "cache extension such as APC or memcache or xcache";
- }
-
- $selected = null;
-
- if (!empty($cache))
- {
- foreach ($services as $name => $service)
- {
- if ($service["type"] == $cache)
- {
- $selected = $name;
- }
- }
- }
throw new \Exception(sprintf(
- "%s:doctrine:orm:cache must not be empty as in production environment the cache is highly recommanded.
- We suggest you to %s %s"
+ "%s:doctrine:orm:cache must not be empty. In production environment the cache is highly recommanded."
, $service->getName()
- , (empty($cache) ? "install " . $install : "use " . $cache)
- , ($selected ? "you can use " . $selected . " service which is already defined as a " . $cache . " one" : "")
)
);
}
foreach ($caches as $key => $cache)
{
- if ($cache->getType() === 'array')
+ $originalServiceName = $options['orm']['cache'][$key];
+ $originalConfiguration = $this->configuration->getService($originalServiceName);
+
+ $cacheOptions = $originalConfiguration->all();
+
+ if (!empty($cacheOptions["options"]))
+ {
+ $output->writeln(sprintf(" %s cache service", $originalServiceName));
+ $this->printConf($output, $key . ":" . $originalServiceName, $cacheOptions["options"]);
+ }
+
+ $serviceBuilder = new Core\ServiceBuilder\Cache(
+ $originalServiceName,
+ $originalConfiguration,
+ array("registry" => $registry)
+ );
+ $originalService = $serviceBuilder->buildService();
+
+ if ($originalService->getType() === 'memcache')
+ {
+ if (!memcache_connect($originalService->getHost(), $originalService->getPort()))
+ {
+ throw new \Exception(sprintf("Unable to connect to memcache service %s with host '%s' and port '%s'", $originalService->getName(), $originalService->getHost(), $originalService->getPort()));
+ }
+ }
+ if ($originalService->getType() === 'array')
{
throw new \Exception(sprintf(
"%s:doctrine:orm:%s %s service should not be an array cache type"
@@ -531,20 +528,35 @@ class module_console_fileEnsureProductionSetting extends Command
)
);
}
- elseif ($cache->getType() === 'memcache')
- {
- if (!memcache_connect($cache->getHost(), $cache->getPort()))
- {
- throw new \Exception(sprintf("Unable to connect to memcache service %s with host '%s' and port '%s'", $cache->getName(), $cache->getHost(), $cache->getPort()));
- }
- $output->writeln("CHECK connexion memcache OK");
- }
}
- $output->writeln("CHECK service cache configuration OK");
- }
+ try
+ {
+ $logServiceName = $options['log'];
+ $configuration = $this->configuration->getService($logServiceName);
+ $serviceBuilder = new Core\ServiceBuilder\Log(
+ $logServiceName
+ , $configuration
+ );
- $output->writeln("CHECK service configuration OK");
+ $serviceLog = $serviceBuilder->buildService();
+
+ $exists = true;
+ }
+ catch (\Exception $e)
+ {
+ $exists = false;
+ }
+
+ if($exists)
+ {
+ throw new \Exception(sprintf(
+ "doctrine:orm:log %s service should not be enable"
+ , $serviceLog->getName()
+ )
+ );
+ }
+ }
}
catch (\Exception $e)
{
@@ -573,7 +585,40 @@ class module_console_fileEnsureProductionSetting extends Command
throw new \Exception(sprintf("Check ORM Service\n"), null, $e);
}
+ $output->writeln("");
+ $output->writeln(sprintf("'%s' ORM service is correctly setted ", $ormName));
+ $output->writeln("");
+
return;
}
+ private function printConf($output, $scope, $value, $scopage = false)
+ {
+ if (is_array($value))
+ {
+ foreach ($value as $key => $val)
+ {
+ if ($scopage)
+ $key = $scope . ":" . $key;
+ $this->printConf($output, $key, $val, $scopage);
+ }
+ }
+ elseif (is_bool($value))
+ {
+ if ($value === false)
+ {
+ $value = '0';
+ }
+ elseif ($value === true)
+ {
+ $value = '1';
+ }
+ $output->writeln(sprintf("%s: %s", $scope, $value));
+ }
+ elseif (!empty($value))
+ {
+ $output->writeln(sprintf("%s: %s", $scope, $value));
+ }
+ }
+
}