Эх сурвалжийг харах

Feature #306 and Bug #5277 - HTMLPurifier, the Encoder class, methods for encoding conversion: Giving top-priority to the attached conversion functions from the internationalization library.

Ivan Tcholakov 15 жил өмнө
parent
commit
79849039e1

+ 24 - 22
main/inc/lib/htmlpurifier/library/HTMLPurifier/Encoder.php

@@ -269,7 +269,18 @@ class HTMLPurifier_Encoder
         static $iconv = null;
         if ($iconv === null) $iconv = function_exists('iconv');
         set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
-        if ($iconv && !$config->get('Test', 'ForceNoIconv')) {
+        // Added Ivan Tcholakov, 25-SEP-2009.
+        // First try - encoding conversion related functions from Dokeos LMS,
+        // for some encodings they work even without iconv or mbstring installed.
+        if (function_exists('api_is_encoding_supported')) {
+            if (api_is_encoding_supported($encoding)) {
+                $str = api_utf8_encode($str, $encoding);
+                restore_error_handler();
+                return $str;
+            }
+        }
+        //if ($iconv && !$config->get('Test', 'ForceNoIconv')) {
+        elseif ($iconv && !$config->get('Test', 'ForceNoIconv')) {
             $str = iconv($encoding, 'utf-8//IGNORE', $str);
             if ($str === false) {
                 // $encoding is not a valid encoding
@@ -288,16 +299,6 @@ class HTMLPurifier_Encoder
             restore_error_handler();
             return $str;
         }
-        // Added Ivan Tcholakov, 09-SEP-2009.
-        // Next try - encoding conversion related functions from Dokeos LMS,
-        // for some encodings they work even without iconv or mbstring installed.
-        elseif (function_exists('api_is_encoding_supported')) {
-            if (api_is_encoding_supported($encoding)) {
-                $str = api_utf8_encode($str, $encoding);
-                restore_error_handler();
-                return $str;
-            }
-        }
         trigger_error('Encoding not supported, please install iconv', E_USER_ERROR);
     }
 
@@ -315,7 +316,18 @@ class HTMLPurifier_Encoder
             $str = HTMLPurifier_Encoder::convertToASCIIDumbLossless($str);
         }
         set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
-        if ($iconv && !$config->get('Test', 'ForceNoIconv')) {
+        // Added Ivan Tcholakov, 25-SEP-2009.
+        // First try - encoding conversion related functions from Dokeos LMS,
+        // for some encodings they work even without iconv or mbstring installed.
+        if (function_exists('api_is_encoding_supported')) {
+            if (api_is_encoding_supported($encoding)) {
+                $str = api_utf8_decode($str, $encoding);
+                restore_error_handler();
+                return $str;
+            }
+        }
+        //if ($iconv && !$config->get('Test', 'ForceNoIconv')) {
+        elseif ($iconv && !$config->get('Test', 'ForceNoIconv')) {
             // Undo our previous fix in convertToUTF8, otherwise iconv will barf
             $ascii_fix = HTMLPurifier_Encoder::testEncodingSupportsASCII($encoding);
             if (!$escape && !empty($ascii_fix)) {
@@ -333,16 +345,6 @@ class HTMLPurifier_Encoder
             restore_error_handler();
             return $str;
         }
-        // Added Ivan Tcholakov, 09-SEP-2009.
-        // Next try - encoding conversion related functions from Dokeos LMS,
-        // for some encodings they work even without iconv or mbstring installed.
-        elseif (function_exists('api_is_encoding_supported')) {
-            if (api_is_encoding_supported($encoding)) {
-                $str = api_utf8_decode($str, $encoding);
-                restore_error_handler();
-                return $str;
-            }
-        }
         trigger_error('Encoding not supported', E_USER_ERROR);
     }