svn: /pear/pearweb/trunk/cron/ find-documentation.php
[email protected] (Christian Weiske) Thu, 24 Feb 2011 21:20:12 +0000
| Newsgroups | php.pear.cvs,php.pear.core |
|---|---|
| Message-ID | <[email protected]> |
cweiske Thu, 24 Feb 2011 21:20:12 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=308643
Log:
use proper xpaths and namespaces to find docs
Changed paths:
U pear/pearweb/trunk/cron/find-documentation.php
Modified: pear/pearweb/trunk/cron/find-documentation.php
===================================================================
--- pear/pearweb/trunk/cron/find-documentation.php 2011-02-24 21:04:34 UTC (rev 308642)
+++ pear/pearweb/trunk/cron/find-documentation.php 2011-02-24 21:20:12 UTC (rev 308643)
@@ -1,27 +1,13 @@
<?php
-/*
- * +----------------------------------------------------------------------+
- * | PEAR Web site version 1.0 |
- * +----------------------------------------------------------------------+
- * | Copyright (c) 2003-2004 The PEAR Group |
- * +----------------------------------------------------------------------+
- * | This source file is subject to version 2.02 of the PHP license, |
- * | that is bundled with this package in the file LICENSE, and is |
- * | available at through the world-wide-web at |
- * | http://www.php.net/license/2_02.txt. |
- * | If you did not receive a copy of the PHP license and are unable to |
- * | obtain it through the world-wide-web, please send a note to |
- * | [email protected] so we can mail you a copy immediately. |
- * +----------------------------------------------------------------------+
- * | Authors: Martin Jansen <[email protected]> |
- * +----------------------------------------------------------------------+
- *
- * $Id$
- */
-
/**
- * Trying to find documentation URLs for PEAR packages in the peardoc Docbook sources
+ * Trying to find documentation URLs for PEAR packages in the peardoc Docbook sources.
+ * Updates the package doc links in database if they are empty.
*
+ * Paramters:
+ * --debug Display debugging data
+ *
+ * @author Martin Jansen <[email protected]>
+ * @license LGPL
* @version $Revision$
*/
require_once dirname(dirname(__FILE__)) . '/include/pear-config.php';
@@ -37,7 +23,7 @@
exit(2);
}
$basepath = getcwd() . '/en/package/';
-$debug = false;
+$debug = in_array('--debug', $argv);
$vfs = new VFS_file(array('vfsroot' => $basepath));
@@ -62,12 +48,18 @@
function checkDocumentation($path) {
checkDocLog('checkDocumentation of ' . $path);
- $dom = new DOMDocument();
- @$dom->loadHTML(file_get_contents($path)); // I know: @ is evil, but it's either that or load chapters.ent - 422K of DTD
+ //our xml file contains entities that include other files
+ // we need to remove them since loading them would take really really long
+ $xmlstr = preg_replace(
+ '/&[a-zA-Z0-9._-]+;/',
+ '',
+ file_get_contents($path)
+ );
- $document = simplexml_import_dom($dom);
- $titles = $document->xpath("//title");
- $books = $document->xpath("//book");
+ $document = simplexml_load_string($xmlstr);
+ $document->registerXPathNamespace('db', 'http://docbook.org/ns/docbook');
+ $titles = $document->xpath("//db:title");
+ $books = $document->xpath("//db:book");
if (empty($titles)) {
throw new Exception("No //title element");
@@ -77,13 +69,12 @@
throw new Exception("No //book element");
}
- $attributes = $books[0]->attributes();
-
- if (empty($attributes['xml:id'])) {
- throw new Exception("Missing package xml:id attribute");
+ $attributes = $books[0]->attributes('http://www.w3.org/XML/1998/namespace');
+ if (empty($attributes['id'])) {
+ throw new Exception('Missing package xml:id attribute');
}
- return array((string)$titles[0], $attributes['xml:id']);
+ return array((string)$titles[0], $attributes['id']);
}
function checkDocLog($msg)