]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Command/InstallCommand.php
Merge pull request #2616 from mathieui/doc-https-links
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Command / InstallCommand.php
index 6f9aff60ae3e860ac409b99d6101e0763c304f39..f0738b9172a8f5cbda8bea7bb8be553dd2d54fd4 100644 (file)
@@ -40,7 +40,7 @@ class InstallCommand extends ContainerAwareCommand
     {
         $this
             ->setName('wallabag:install')
-            ->setDescription('Wallabag installer.')
+            ->setDescription('wallabag installer.')
             ->addOption(
                'reset',
                null,
@@ -55,7 +55,7 @@ class InstallCommand extends ContainerAwareCommand
         $this->defaultInput = $input;
         $this->defaultOutput = $output;
 
-        $output->writeln('<info>Installing Wallabag...</info>');
+        $output->writeln('<info>Installing wallabag...</info>');
         $output->writeln('');
 
         $this
@@ -65,13 +65,14 @@ class InstallCommand extends ContainerAwareCommand
             ->setupConfig()
         ;
 
-        $output->writeln('<info>Wallabag has been successfully installed.</info>');
+        $output->writeln('<info>wallabag has been successfully installed.</info>');
         $output->writeln('<comment>Just execute `php bin/console server:run --env=prod` for using wallabag: http://localhost:8000</comment>');
     }
 
     protected function checkRequirements()
     {
         $this->defaultOutput->writeln('<info><comment>Step 1 of 4.</comment> Checking system requirements.</info>');
+        $doctrineManager = $this->getContainer()->get('doctrine')->getManager();
 
         $rows = [];
 
@@ -108,21 +109,39 @@ class InstallCommand extends ContainerAwareCommand
 
         $rows[] = [$label, $status, $help];
 
+        // check MySQL & PostgreSQL version
+        $label = '<comment>Database version</comment>';
+        $status = '<info>OK!</info>';
+        $help = '';
+
         // now check if MySQL isn't too old to handle utf8mb4
-        if ($conn->isConnected() && $conn->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\MySqlPlatform) {
+        if ($conn->isConnected() && 'mysql' === $conn->getDatabasePlatform()->getName()) {
             $version = $conn->query('select version()')->fetchColumn();
             $minimalVersion = '5.5.4';
 
             if (false === version_compare($version, $minimalVersion, '>')) {
                 $fulfilled = false;
-                $rows[] = [
-                    '<comment>Database version</comment>',
-                    '<error>ERROR!</error>',
-                    'Your MySQL version ('.$version.') is too old, consider upgrading ('.$minimalVersion.'+).'
-                ];
+                $status = '<error>ERROR!</error>';
+                $help = 'Your MySQL version ('.$version.') is too old, consider upgrading ('.$minimalVersion.'+).';
+            }
+        }
+
+        // testing if PostgreSQL > 9.1
+        if ($conn->isConnected() && 'postgresql' === $conn->getDatabasePlatform()->getName()) {
+            // return version should be like "PostgreSQL 9.5.4 on x86_64-apple-darwin15.6.0, compiled by Apple LLVM version 8.0.0 (clang-800.0.38), 64-bit"
+            $version = $doctrineManager->getConnection()->query('SELECT version();')->fetchColumn();
+
+            preg_match('/PostgreSQL ([0-9\.]+)/i', $version, $matches);
+
+            if (isset($matches[1]) & version_compare($matches[1], '9.2.0', '<')) {
+                $fulfilled = false;
+                $status = '<error>ERROR!</error>';
+                $help = 'PostgreSQL should be greater than 9.1 (actual version: '.$matches[1].')';
             }
         }
 
+        $rows[] = [$label, $status, $help];
+
         foreach ($this->functionExists as $functionRequired) {
             $label = '<comment>'.$functionRequired.'</comment>';
             $status = '<info>OK!</info>';
@@ -147,7 +166,7 @@ class InstallCommand extends ContainerAwareCommand
             throw new \RuntimeException('Some system requirements are not fulfilled. Please check output messages and fix them.');
         }
 
-        $this->defaultOutput->writeln('<info>Success! Your system can run Wallabag properly.</info>');
+        $this->defaultOutput->writeln('<info>Success! Your system can run wallabag properly.</info>');
 
         $this->defaultOutput->writeln('');
 
@@ -293,6 +312,16 @@ class InstallCommand extends ContainerAwareCommand
                 'value' => 'http://diasporapod.com',
                 'section' => 'entry',
             ],
+            [
+                'name' => 'share_unmark',
+                'value' => '1',
+                'section' => 'entry',
+            ],
+            [
+                'name' => 'unmark_url',
+                'value' => 'https://unmark.it',
+                'section' => 'entry',
+            ],
             [
                 'name' => 'share_shaarli',
                 'value' => '1',
@@ -370,7 +399,7 @@ class InstallCommand extends ContainerAwareCommand
             ],
             [
                 'name' => 'wallabag_url',
-                'value' => 'http://v2.wallabag.org',
+                'value' => '',
                 'section' => 'misc',
             ],
             [
@@ -380,7 +409,7 @@ class InstallCommand extends ContainerAwareCommand
             ],
             [
                 'name' => 'piwik_host',
-                'value' => 'http://v2.wallabag.org',
+                'value' => 'v2.wallabag.org',
                 'section' => 'analytics',
             ],
             [
@@ -398,6 +427,16 @@ class InstallCommand extends ContainerAwareCommand
                 'value' => 'wallabag',
                 'section' => 'misc',
             ],
+            [
+                'name' => 'download_images_enabled',
+                'value' => '0',
+                'section' => 'misc',
+            ],
+            [
+                'name' => 'restricted_access',
+                'value' => '0',
+                'section' => 'entry',
+            ],
         ];
 
         foreach ($settings as $setting) {