PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Internationalization » Translation2 » Bug #3408

XML container : empty data sets badly handled

Details

Submitted2005-02-08 17:12 UTC
Fromylf at xung dot org
Assignedquipo
StatusClosed
PackageTranslation2
PHP Version4.3.4
OSLinux Debian
Roadmaps(Not assigned)

Comments

[2005-02-08 17:12 UTC] ylf at xung dot org

Description:
------------
Hi,

Here's the symptom, for both the current cvs and 2.0.0beta6 :

Warning: array_pop(): The argument should be an array in /var/www/dev/pear_cvs/Translation2/Container/xml.php on line 280

Warning: Invalid argument supplied for foreach() in /var/www/dev/pear_cvs/Translation2/Container/xml.php on line 196

This happens with an empty page, ie :
<page name="myPage">
</page>

The problem comes from XML_Unserializer which sets $this->_data['pages']['myPage'] to an empty string when it should be an empty array.

Similar issues are likely to happen for any of the tags that have an undefined (possibly null) number of sub-tags, as defined in the DTD :

<!ELEMENT languages (lang*)>
<!ELEMENT pages (page*)>
<!ELEMENT page (string*)>
<!ELEMENT string (tr*)>

I believe the DTD is just fine, and that it is a good thing to allow empty pages, empty strings, etc... So that the developer can produce a draft of all needed strings and pages before the translator fills them in.

Here's a fix for the XML container and scripts/t2xmlchk.php, which applies fine against the current cvs version :

http://samalyse.com/ln/0011.php

Cheers