testPngNativetZtxt requires zlib extension
[lhc/web/wiklou.git] / includes / ZhClient.php
index 6dacdc5..4299841 100644 (file)
@@ -1,12 +1,27 @@
 <?php
 /**
- * @package MediaWiki
+ * Client for querying zhdaemon.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  */
 
 /**
  * Client for querying zhdaemon
- *
- * @package MediaWiki
  */
 class ZhClient {
        var $mHost, $mPort, $mFP, $mConnected;
@@ -14,9 +29,12 @@ class ZhClient {
        /**
         * Constructor
         *
-        * @access private
+        * @param $host
+        * @param $port
+        *
+        * @return ZhClient
         */
-       function ZhClient($host, $port) {
+       function __construct( $host, $port ) {
                $this->mHost = $host;
                $this->mPort = $port;
                $this->mConnected = $this->connect();
@@ -25,7 +43,7 @@ class ZhClient {
        /**
         * Check if connection to zhdaemon is successful
         *
-        * @access public
+        * @return bool
         */
        function isconnected() {
                return $this->mConnected;
@@ -35,115 +53,112 @@ class ZhClient {
         * Establish conncetion
         *
         * @access private
+        *
+        * @return bool
         */
        function connect() {
                wfSuppressWarnings();
-               $this->mFP = fsockopen($this->mHost, $this->mPort, $errno, $errstr, 30);
+               $errno = $errstr = '';
+               $this->mFP = fsockopen( $this->mHost, $this->mPort, $errno, $errstr, 30 );
                wfRestoreWarnings();
-               if(!$this->mFP) {
-                       return false;
-               }
-               return true;
+               return !$this->mFP;
        }
 
        /**
         * Query the daemon and return the result
         *
         * @access private
+        *
+        * @return string
         */
-       function query($request) {
-               if(!$this->mConnected)
+       function query( $request ) {
+               if ( !$this->mConnected ) {
                        return false;
+               }
 
-               fwrite($this->mFP, $request);
+               fwrite( $this->mFP, $request );
 
-               $result=fgets($this->mFP, 1024);
+               $result = fgets( $this->mFP, 1024 );
 
-               list($status, $len) = explode(" ", $result);
-               if($status == 'ERROR') {
-                       //$len is actually the error code...
+               list( $status, $len ) = explode( ' ', $result );
+               if( $status == 'ERROR' ) {
+                       // $len is actually the error code...
                        print "zhdaemon error $len<br />\n";
                        return false;
                }
-               $bytesread=0;
-               $data='';
-               while(!feof($this->mFP) && $bytesread<$len) {
-                       $str= fread($this->mFP, $len-$bytesread);
-                       $bytesread += strlen($str);
+               $bytesread = 0;
+               $data = '';
+               while( !feof( $this->mFP ) && $bytesread < $len ) {
+                       $str = fread( $this->mFP, $len - $bytesread );
+                       $bytesread += strlen( $str );
                        $data .= $str;
                }
-               //data should be of length $len. otherwise something is wrong
-               if(strlen($data) != $len)
-                       return false;
-               return $data;
+               // data should be of length $len. otherwise something is wrong
+               return strlen( $data ) == $len;
        }
 
        /**
         * Convert the input to a different language variant
         *
-        * @param string $text input text
-        * @param string $tolang language variant
+        * @param $text String: input text
+        * @param $tolang String: language variant
         * @return string the converted text
-        * @access public
         */
-       function convert($text, $tolang) {
-               $len = strlen($text);
+       function convert( $text, $tolang ) {
+               $len = strlen( $text );
                $q = "CONV $tolang $len\n$text";
-               $result = $this->query($q);
-               if(!$result)
+               $result = $this->query( $q );
+               if ( !$result ) {
                        $result = $text;
+               }
                return $result;
        }
 
        /**
-        * Convert the input to all possible variants 
+        * Convert the input to all possible variants
         *
-        * @param string $text input text
+        * @param $text String: input text
         * @return array langcode => converted_string
-        * @access public
-        */     
-       function convertToAllVariants($text) {
-               $len = strlen($text);
+        */
+       function convertToAllVariants( $text ) {
+               $len = strlen( $text );
                $q = "CONV ALL $len\n$text";
-               $result = $this->query($q);
-               if(!$result)
+               $result = $this->query( $q );
+               if ( !$result ) {
                        return false;
-               list($infoline, $data) = explode('|', $result, 2);
-               $info = explode(";", $infoline);
+               }
+               list( $infoline, $data ) = explode( '|', $result, 2 );
+               $info = explode( ';', $infoline );
                $ret = array();
-               $i=0;
-               foreach($info as $variant) {
-                       list($code, $len) = explode(' ', $variant);
-                       $ret[strtolower($code)] = substr($data, $i, $len);
-                       $r = $ret[strtolower($code)];
-                       $i+=$len;
+               $i = 0;
+               foreach( $info as $variant ) {
+                       list( $code, $len ) = explode( ' ', $variant );
+                       $ret[strtolower( $code )] = substr( $data, $i, $len );
+                       $i += $len;
                }
                return $ret;
-    }
+       }
+
        /**
         * Perform word segmentation
         *
-        * @param string $text input text
+        * @param $text String: input text
         * @return string segmented text
-        * @access public
         */
-       function segment($text) {
-               $len = strlen($text);
+       function segment( $text ) {
+               $len = strlen( $text );
                $q = "SEG $len\n$text";
-               $result = $this->query($q);
-               if(!$result) {// fallback to character based segmentation
-                       $result = ZhClientFake::segment($text);
+               $result = $this->query( $q );
+               if ( !$result ) { // fallback to character based segmentation
+                       $result = $this->segment( $text );
                }
                return $result;
        }
 
        /**
         * Close the connection
-        *
-        * @access public
         */
        function close() {
-               fclose($this->mFP);
+               fclose( $this->mFP );
        }
 }
-?>
\ No newline at end of file