Recent Topics

I cannot select "Main Locale" :(

Started by on Mar 31, 2006 – Contents updated: Mar 31, 2006

Mar 31, 2006 13:58    

In admin panel:
Blog/General/Main Locale i select my new(test) language (Russian_RU)

====================================
Cannot update, please correct these errors:

* Parser error: near <?xml version="1.0"
* Parser error: near <?xml version="1.0"
* Parser error: near <?xml version="1.0"
====================================
:(

b2e 0.9.1 (1.6) ???

Mar 31, 2006 15:01

You can work around this problem, where I'm not sure what it's caused by, by temporarily(!) disabling the xhtml checker in /conf/_formatting.php: Set $use_html_checker = 0 there, change your blog settings and set it to 1 after that again.

About the problem: do you have any content in the "subtitle", "long description" or "notes" fields?

It might be a problem with the PHP xml_parser and the used encoding (while saving).

pvasili Mar 31, 2006 15:27

pvasili [Visitor]

blueyed wrote:

You can work around this problem, where I'm not sure what it's caused by, by temporarily(!) disabling the xhtml checker in /conf/_formatting.php: Set $use_html_checker = 0 there, change your blog settings and set it to 1 after that again.

About the problem: do you have any content in the "subtitle", "long description" or "notes" fields?

It might be a problem with the PHP xml_parser and the used encoding (while saving).

1) Work, thank you :)

2) About: i have first setup b2ev with English locale, and if i create new blog :(

3) may be my PHP or xml_parser?
PHP version 4.1.8

XML Support active
XML Namespace Support active
EXPAT Version 1.95.6

Mar 31, 2006 22:47

You are using 0.9.1, correct?

Could you please try the following?

1. in /admin/blogs.php, search for "format_to_post". It should be there six times.
From, e.g.:

Code

$blog_notes = format_to_post( $blog_notes, 0, 0, $locales[ $blog_locale ][ 'charset' ] );

to

Code

$blog_notes = format_to_post( $blog_notes );

2. in /b2evocore/_functions.php, search for "function format_to_post" and change it from

Code

function format_to_post( $content, $autobr = 0, $is_comment = 0, $encoding = 'ISO-8859-1' )

to

Code

function format_to_post( $content, $autobr = 0, $is_comment = 0, $encoding = '' )

3. In the same function, in the "if( $use_html_checker )" block, add the following:

Code

if( empty($encoding) )
{
  // TODO: use $io_charset
  $encoding = locale_charset(false);
}

so that it looks like this:

Code

if( $use_html_checker )
  { // Check the code:
    if( empty($encoding) )
    {
      // TODO: use $io_charset
      $encoding = locale_charset(false);
    }
    if( ! $is_comment )
    {

4. The last one is /b2evocore/_class_htmlchecker.php:
Replace the constructor with this:

Code

/**
   * SafeHtmlChecker(-)
   */
  function SafeHtmlChecker( & $allowed_tags, & $allowed_attributes, & $uri_attrs, & $allowed_uri_scheme, $encoding = '' )
  {
    $this->tags = & $allowed_tags;
    $this->tagattrs = & $allowed_attributes;
    $this->uri_attrs = & $uri_attrs;
    $this->allowed_uri_scheme = & $allowed_uri_scheme;
 
 
    $encoding = strtoupper($encoding); // we might get 'iso-8859-1' for example
    $this->encoding = $encoding;
    if( ! in_array( $encoding, array( 'ISO-8859-1', 'UTF-8', 'US-ASCII' ) ) )
    { // passed encoding not supported by xml_parser_create()
      $this->xml_parser_encoding = ''; // auto-detect (in PHP4, in PHP5 anyway)
    }
    else
    {
      $this->xml_parser_encoding = $this->encoding;
    }
    $this->parser = xml_parser_create( $this->xml_parser_encoding );
 
    $this->last_checked_pos = 0;
    $this->error = false;
 
    // Creates the parser
    xml_set_object( $this->parser, $this);
 
    // set functions to call when a start or end tag is encountered
    xml_set_element_handler($this->parser, 'tag_open', 'tag_close');
    // set function to call for the actual data
    xml_set_character_data_handler($this->parser, 'cdata');
 
    xml_set_default_handler($this->parser, 'default_handler');
    xml_set_external_entity_ref_handler($this->parser, 'external_entity');
    xml_set_unparsed_entity_decl_handler($this->parser, 'unparsed_entity');
 
    xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
  }

and the "check()" method with this:

Code

/**
   * check(-)
   */
  function check($xhtml)
  {
    // Convert encoding:
    if( empty($this->xml_parser_encoding) || $this->encoding != $this->xml_parser_encoding )
    { // we need to convert encoding:
      if( function_exists( 'mb_convert_encoding' ) )
      { // we can convert encoding
        $supported_encodings = mb_list_encodings();
        foreach( $supported_encodings as $k => $v )
        {
          $supported_encodings[$k] = strtoupper($v);
        }
 
        if( in_array( 'UTF-8', $supported_encodings ) )
        {
          $xhtml = mb_convert_encoding( $xhtml, 'UTF-8' );
          $this->encoding = 'UTF-8';
        }
      }
    }
 
    // Open comments or '<![CDATA[' are dangerous
    $xhtml = str_replace('<!', '', $xhtml);
 
    // Convert isolated & chars
    $xhtml = preg_replace( '#(\s)&(\s)#', '\\1&amp;\\2', $xhtml );
 
    $xhtml_head = '<?xml version="1.0"';
    if( ! empty($this->encoding) )
    {
      $xhtml_head .= ' encoding="'.$this->encoding.'"';
    }
    $xhtml_head .= '?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
 
    $xhtml = $xhtml_head.'<body>'.$xhtml.'</body>';
 
    if (!xml_parse($this->parser, $xhtml))
    {
    $xml_error_code = xml_get_error_code( $this->parser );
    $xml_error_string = xml_error_string( $xml_error_code );
    switch( $xml_error_code )
    {
      case XML_ERROR_TAG_MISMATCH:
      $xml_error_string .= ': <code>'.$this->stack[count($this->stack)-1].'</code>';
      break;
    }
    $pos = xml_get_current_byte_index($this->parser);
    $xml_error_string .= ' near <code>'.htmlspecialchars( substr( $xhtml, $this->last_checked_pos, $pos-$this->last_checked_pos+20 ) ).'</code>';
 
    $this->html_error( T_('Parser error: ').$xml_error_string );
    }
  }

Apr 04, 2006 08:14

Big thank you :)
I try all you recommendation...

------------------------------------------
Strange occurrence: my old nik (pvasili) is down :(

Apr 04, 2006 19:21

In fact, it's not just a recommendation, but a proposed fix.. I hope it works out this way, otherwise you'll need to help me track this down.. :p


Form is loading...

blogtool – This forum is powered by b2evolution CMS, a complete engine for your website.