fix pear2_services_linkback name
[phorkie.git] / src / phorkie / SetupCheck.php
index f1fbc0f519e69d63d773e88db52b4713c8867a6d..3762457214a603a08c391e624ac0839776c83b15 100644 (file)
@@ -8,8 +8,10 @@ class SetupCheck
         'pear.twig-project.org/Twig'       => 'Twig_Autoloader',
         'pear.php.net/Date_HumanDiff'      => 'Date_HumanDiff',
         'pear.php.net/HTTP_Request2'       => 'HTTP_Request2',
+        'pear.php.net/OpenID'              => 'OpenID',
         'pear.php.net/Pager'               => 'Pager',
         'pear.php.net/Services_Libravatar' => 'Services_Libravatar',
+        'pear2.php.net/PEAR2_Services_Linkback'  => '\\PEAR2\\Services\\Linkback\\Client',
         'zustellzentrum.cweiske.de/MIME_Type_PlainDetect' => 'MIME_Type_PlainDetect',
     );
 
@@ -32,9 +34,8 @@ class SetupCheck
         $sc->checkDeps();
         $sc->checkDirs();
         $sc->checkGit();
-        if ($this->elasticsearch != '') {
-            $sc->checkDatabase();
-        }
+        $sc->checkDatabase();
+        $sc->checkMimeTypeDetection();
     }
 
     public function checkDeps()
@@ -44,6 +45,18 @@ class SetupCheck
                 $this->fail('PEAR package not installed: ' . $package);
             }
         }
+
+        $geshi = stream_resolve_include_path(
+            $GLOBALS['phorkie']['cfg']['geshi']
+        );
+        if ($geshi === false) {
+            $this->fail('GeSHi not available');
+        }
+
+        $markdown = stream_resolve_include_path('markdown.php');
+        if ($markdown === false) {
+            $this->fail('Markdown renderer not available');
+        }
     }
 
     public function checkDirs()
@@ -64,7 +77,7 @@ class SetupCheck
         if ($retval !== 0) {
             $this->fail('Running git executable failed.');
         }
-        if (!preg_match('#^git version ([0-9.]+)$#', $line, $matches)) {
+        if (!preg_match('#^git version ([0-9.]+(rc[0-9]+)?)$#', $line, $matches)) {
             $this->fail('git version output format unexpected: ' . $line);
         }
         if (version_compare($matches[1], '1.7.5') < 0) {
@@ -76,15 +89,30 @@ class SetupCheck
 
     public function checkDatabase()
     {
+        if ($this->elasticsearch == '') {
+            return;
+        }
+
         $es = parse_url($this->elasticsearch);
         if (!preg_match("#/.+/#", $es['path'], $matches)) {
-            $this->fail('Improper elasticsearch url.  Elasticsearch requires a'
-                       . ' search domain to store your data. (e.g. http://localhost:9200/phorkie/)');
+            $this->fail(
+                'Improper elasticsearch url.  Elasticsearch requires a'
+                . ' search domain to store your data.'
+                . ' (e.g. http://localhost:9200/phorkie/)'
+            );
         }
         $dbs = new Database();
         $dbs->getSetup()->setup();
     }
 
+    public function checkMimeTypeDetection()
+    {
+        $rp = new Repository_Post();
+        if ($rp->getType('<?php echo "foo"; ?>') != 'php') {
+            $this->fail('MIME type detection fails');
+        }
+    }
+
     public function fail($msg)
     {
         throw new Exception($msg);