svn: /web/doc-editor/trunk/php/ RepositoryManager.php

[email protected] (Yannick Torres)
Newsgroups php.doc.web
Message-ID <[email protected]>
yannick                                  Sun, 26 Dec 2010 22:54:04 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=306712

Log:
Add a new method to allow exec to catch STDERR when we check the build

Changed paths:
    U   web/doc-editor/trunk/php/RepositoryManager.php

Modified: web/doc-editor/trunk/php/RepositoryManager.php
===================================================================
--- web/doc-editor/trunk/php/RepositoryManager.php	2010-12-26 22:48:47 UTC (rev 306711)
+++ web/doc-editor/trunk/php/RepositoryManager.php	2010-12-26 22:54:04 UTC (rev 306712)
@@ -309,6 +309,21 @@
     }

     /**
+     * Personnal exec to allow STDERR catch.
+     * Found in user's note : http://php.net/manual/fr/function.system.php
+     */
+    public function my_exec($cmd, $input='')
+    {
+        $proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=>array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes);
+        fwrite($pipes[0], $input);fclose($pipes[0]);
+        $stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);
+        $stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);
+        $rtn=proc_close($proc);
+
+        return $stdout.$stderr;
+    }
+
+    /**
      * Check the build of the documentation (using configure.php script).
      *
      * @param $lang The lang of the documentation we want to check the build. We must take out $lang to be able to use this method from cron script on multiple language
@@ -326,12 +341,12 @@
             "logContent" => ""
         );

-        $cmd = 'cd '.realpath($appConf[$project]['vcs.configure.script.path']).';'
+        $cmd = 'cd '.realpath($appConf[$project]['vcs.configure.script.path']).' && '
               .$appConf['GLOBAL_CONFIGURATION']['php.bin'].' configure.php --with-php='
               .$appConf['GLOBAL_CONFIGURATION']['php.bin'].' '
               .$appConf[$project]['vcs.configure.script.options'];

-        $cmd = str_replace("{LangCode}", $lang, $cmd).';';
+        $cmd = str_replace("{LangCode}", $lang, $cmd).'';

         if ( $enable_xml_details == "true" ) {
             $cmd = str_replace("{XmlDetails}", "--enable-xml-details", $cmd);
@@ -341,16 +356,16 @@

         $trial_threshold = 3;
         while ($trial_threshold-- > 0) {
-            $output = array();
-            exec($cmd, $output);
-            if (strlen(trim(implode('', $output))) != 0) break;
+            $output ='';
+            $output = $this->my_exec($cmd);
+            if (strlen(trim($output)) != 0) break;
         }

         $return["logContent"] = $output;

         // We save the result of this check only if it failed.
-        if ( strstr(implode(" ", $output), 'Eyh man. No worries. Happ shittens. Try again after fixing the errors above.') ||
-             strstr(implode(" ", $output), 'There were warnings loading the manual') )
+        if ( strstr($output, 'Eyh man. No worries. Happ shittens. Try again after fixing the errors above.') ||
+             strstr($output, 'There were warnings loading the manual') )
         {
             $return["state"] = "ko";
         }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.