/** * Return an XML document based on the package info (as returned * by the PEAR_Common::infoFrom* methods). * * @return string XML data */ function toXml($state = PEAR_VALIDATE_NORMAL, $nofilevalidation = false) { $this->_packagefile->setDate(date('Y-m-d')); if (!$this->_packagefile->validate($state, $nofilevalidation)) { return false; } $pkginfo = $this->_packagefile->getArray(); static $maint_map = array( "handle" => "user", "name" => "name", "email" => "email", "role" => "role", ); $ret = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; $ret .= "<!DOCTYPE package SYSTEM \"http://pear.php.net/dtd/package-1.0\">\n"; $ret .= "<package version=\"1.0\" packagerversion=\"1.9.0\">\n" . " <name>$pkginfo[package]</name>"; if (isset($pkginfo['extends'])) { $ret .= "\n<extends>$pkginfo[extends]</extends>"; } $ret .= "\n <summary>".$this->_fixXmlEncoding($pkginfo['summary'])."</summary>\n" . " <description>".trim($this->_fixXmlEncoding($pkginfo['description']))."\n </description>\n" . " <maintainers>\n"; foreach ($pkginfo['maintainers'] as $maint) { $ret .= " <maintainer>\n"; foreach ($maint_map as $idx => $elm) { $ret .= " <$elm>"; $ret .= $this->_fixXmlEncoding($maint[$idx]); $ret .= "</$elm>\n"; } $ret .= " </maintainer>\n"; } $ret .= " </maintainers>\n"; $ret .= $this->_makeReleaseXml($pkginfo, false, $state); if (isset($pkginfo['changelog']) && count($pkginfo['changelog']) > 0) { $ret .= " <changelog>\n"; foreach ($pkginfo['changelog'] as $oldrelease) { $ret .= $this->_makeReleaseXml($oldrelease, true); } $ret .= " </changelog>\n"; } $ret .= "</package>\n"; return $ret; }