]> xenbits.xensource.com Git - libvirt.git/commitdiff
docs: autogenerate search.php
authorMartin Kletzander <mkletzan@redhat.com>
Wed, 1 Aug 2012 13:29:27 +0000 (15:29 +0200)
committerMartin Kletzander <mkletzan@redhat.com>
Fri, 10 Aug 2012 08:58:38 +0000 (10:58 +0200)
This patch makes search.php autogenerated from search.php.in, thus
removing hardcoded menus, footer etc. and the search.php is added to
.gitignore.

There is new rule added for *.php files (to make it bit less
hardcoded) that takes *.php.code.in and injects it inside the
generated *.php (xslt was not happy about php code in the source xml).

.gitignore
docs/Makefile.am
docs/search.php [deleted file]
docs/search.php.code.in [new file with mode: 0644]
docs/search.php.in [new file with mode: 0644]

index cd8a85ccded67e7eb5e535d9c121a441371282f6..17dcae4d72e7b1b610ee698a204e020f36895462 100644 (file)
@@ -61,6 +61,7 @@
 /docs/libvirt-api.xml
 /docs/libvirt-qemu-*.xml
 /docs/libvirt-refs.xml
+/docs/search.php
 /docs/todo.html.in
 /examples/domain-events/events-c/event-test
 /examples/dominfo/info1
index 88407b1b9a43fe4421465d5949185d298c7e737d..fad8979bac23ce38784f56a86e9b73dde8ed985d 100644 (file)
@@ -75,6 +75,10 @@ dot_html_in = $(notdir $(wildcard $(srcdir)/*.html.in)) todo.html.in hvsupport.h
       $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/internals/*.html.in))
 dot_html = $(dot_html_in:%.html.in=%.html)
 
+dot_php_in = $(notdir $(wildcard $(srcdir)/*.php.in))
+dot_php_code_in = $(dot_php_in:%.php.in=%.php.code.in)
+dot_php = $(dot_php_in:%.php.in=%.php)
+
 patches = $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/api_extension/*.patch))
 
 xml = \
@@ -107,21 +111,22 @@ EXTRA_DIST=                                       \
   $(dot_html) $(dot_html_in) $(gif) $(apihtml) $(apipng) \
   $(devhelphtml) $(devhelppng) $(devhelpcss) $(devhelpxsl) \
   $(xml) $(qemu_xml) $(fig) $(png) $(css) \
-  $(patches) \
+  $(patches) $(dot_php_in) $(dot_php_code_in) $(dot_php)\
   sitemap.html.in \
   todo.pl hvsupport.pl todo.cfg-example
 
 MAINTAINERCLEANFILES = \
   $(addprefix $(srcdir)/,$(dot_html)) \
   $(addprefix $(srcdir)/,$(apihtml)) \
-  $(addprefix $(srcdir)/,$(devhelphtml))
+  $(addprefix $(srcdir)/,$(devhelphtml)) \
+  $(addprefix $(srcdir)/,$(dot_php))
 
 all-am: web
 
 api: $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml
 qemu_api: $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
 
-web: $(dot_html) html/index.html devhelp/index.html
+web: $(dot_html) html/index.html devhelp/index.html $(dot_php)
 
 todo.html.in: todo.pl
        if [ -f  todo.cfg ]; then \
@@ -173,6 +178,18 @@ internals/%.html.tmp: internals/%.html.in subsite.xsl page.xsl sitemap.html.in
          || { rm $(srcdir)/$@ && exit 1; }; \
          else echo "missing XHTML1 DTD" ; fi ; fi
 
+%.php.tmp: %.php.in site.xsl page.xsl sitemap.html.in
+       @if [ -x $(XSLTPROC) ] ; then \
+         echo "Generating $@"; \
+         $(XSLTPROC) --stringparam pagename $(@:.tmp=) --nonet --html \
+           $(top_srcdir)/docs/site.xsl $< > $@ \
+           || { rm $@ && exit 1; }; fi
+
+%.php: %.php.tmp %.php.code.in
+       @echo "Scripting $@"; \
+         sed -e '/<a id="php_placeholder"><\/a>/r '"$(srcdir)/$@.code.in" \
+         -e /php_placeholder/d < $@.tmp > $(srcdir)/$@ \
+         || { rm $(srcdir)/$@ && exit 1; }
 
 html/index.html: libvirt-api.xml newapi.xsl page.xsl sitemap.html.in
        $(AM_V_GEN)if [ -x $(XSLTPROC) ] ; then \
diff --git a/docs/search.php b/docs/search.php
deleted file mode 100644 (file)
index 768e06f..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<!--
-        This file is autogenerated from the PHP output
-        Do not edit this file. Changes will be lost.
-      -->
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-    <link rel="stylesheet" type="text/css" href="main.css" />
-    <link rel="SHORTCUT ICON" href="32favicon.png" />
-    <title>Search the documentation on Libvir.org</title>
-    <meta name="description" content="libvirt, virtualization, virtualization API" />
-  </head>
-  <body>
-    <div id="header">
-      <div id="headerLogo"></div>
-    </div>
-    <div id="body">
-      <div id="content">
-<?php
-    $query = $_GET['query'];
-    // We handle only the first argument so far
-    $query = ltrim ($query);
-    if (! $query) {
-        echo "<h1 align='center'>Search the documentation on Libvir.org</h1>";
-    }
-    $scope = $_GET['scope'];
-    if ($scope == NULL)
-        $scope = "any";
-    $scope = ltrim ($scope);
-    if ($scope == "")
-        $scope = "any";
-
-?>
-<p> The search service indexes the libvirt APIs and documentation as well as the libvir-list@redhat.com mailing-list archives. To use it simply provide a set of keywords:</p>
-<form action="<?php echo $_SERVER['PHP_SELF'], "?query=", rawurlencode($query) ?>"
-      enctype="application/x-www-form-urlencoded" method="get">
-  <input name="query" type="text" size="50" value="<?php echo $query?>"/>
-  <select name="scope">
-    <option value="any">Search All</option>
-    <option value="API" <?php if ($scope == 'API') print "selected='selected'"?>>Only the APIs</option>
-    <option value="DOCS" <?php if ($scope == 'DOCS') print "selected"?>>Only the Documentation</option>
-    <option value="LISTS" <?php if ($scope == 'LISTS') print "selected"?>>Only the lists archives</option>
-  </select>
-  <input name="submit" type="submit" value="Search ..."/>
-</form>
-<?php
-    function logQueryWord($word) {
-        $result = mysql_query ("SELECT ID,Count FROM Queries WHERE Value='$word'");
-       if ($result) {
-           $i = mysql_num_rows($result);
-           if ($i == 0) {
-               mysql_free_result($result);
-               mysql_query ("INSERT INTO Queries (Value,Count) VALUES ('$word',1)");
-           } else {
-               $id = mysql_result($result, 0, 0);
-               $count = mysql_result($result, 0, 1);
-               $count ++;
-               mysql_query ("UPDATE Queries SET Count=$count WHERE ID=$id");
-           }
-       } else {
-           mysql_query ("INSERT INTO Queries (Value,Count) VALUES ('$word',1)");
-       }
-    }
-    function queryWord($word) {
-        $result = NULL;
-       $j = 0;
-        if ($word) {
-           $result = mysql_query ("SELECT words.relevance, symbols.name, symbols.type, symbols.module, symbols.descr FROM words, symbols WHERE LCASE(words.name) LIKE LCASE('$word') and words.symbol = symbols.name ORDER BY words.relevance DESC LIMIT 75");
-           if ($result) {
-               $j = mysql_num_rows($result);
-               if ($j == 0)
-                   mysql_free_result($result);
-           }
-           logQueryWord($word);
-       }
-       return array($result, $j);
-    }
-    function queryHTMLWord($word) {
-        $result = NULL;
-       $j = 0;
-        if ($word) {
-           $result = mysql_query ("SELECT relevance, name, id, resource, section FROM wordsHTML WHERE LCASE(name) LIKE LCASE('$word') ORDER BY relevance DESC LIMIT 75");
-           if ($result) {
-               $j = mysql_num_rows($result);
-               if ($j == 0)
-                   mysql_free_result($result);
-           }
-           logQueryWord($word);
-       }
-       return array($result, $j);
-    }
-    function queryArchiveWord($word) {
-        $result = NULL;
-       $j = 0;
-        if ($word) {
-           $result = mysql_query ("SELECT wordsArchive.relevance, wordsArchive.name, 'libvir-list', archives.resource, archives.title FROM wordsArchive, archives WHERE LCASE(wordsArchive.name) LIKE LCASE('$word') and wordsArchive.ID = archives.ID ORDER BY relevance DESC LIMIT 75");
-           if ($result) {
-               $j = mysql_num_rows($result);
-               if ($j == 0)
-                   mysql_free_result($result);
-           }
-           logQueryWord($word);
-       }
-       return array($result, $j);
-    }
-    function resSort ($a, $b) {
-       list($ra,$ta,$ma,$na,$da) = $a;
-       list($rb,$tb,$mb,$nb,$db) = $b;
-       if ($ra == $rb) return 0;
-       return ($ra > $rb) ? -1 : 1;
-    }
-    if (($query) && (strlen($query) <= 50)) {
-       $link = mysql_connect ("localhost", "nobody");
-       if (!$link) {
-           echo "<p> Could not connect to the database: ", mysql_error();
-       } else {
-           mysql_select_db("libvir", $link);
-           $list = explode (" ", $query);
-           $results = array();
-           $number = 0;
-           for ($number = 0;$number < count($list);$number++) {
-
-               $word = $list[$number];
-               if (($scope == 'any') || ($scope == 'API')) {
-                   list($result, $j) = queryWord($word);
-                   if ($j > 0) {
-                       for ($i = 0; $i < $j; $i++) {
-                           $relevance = mysql_result($result, $i, 0);
-                           $name = mysql_result($result, $i, 1);
-                           $type = mysql_result($result, $i, 2);
-                           $module = mysql_result($result, $i, 3);
-                           $desc = mysql_result($result, $i, 4);
-                           if (array_key_exists($name, $results)) {
-                               list($r,$t,$m,$d,$w,$u) = $results[$name];
-                               $results[$name] = array(($r + $relevance) * 2,
-                                                       $t,$m,$d,$w,$u);
-                           } else {
-                               $id = $name;
-                               $m = strtolower($module);
-                               $url = "html/libvirt-$module.html#$id";
-                               $results[$name] = array($relevance,$type,
-                                               $module, $desc, $name, $url);
-                           }
-                       }
-                       mysql_free_result($result);
-                   }
-               }
-               if (($scope == 'any') || ($scope == 'DOCS')) {
-                   list($result, $k) = queryHTMLWord($word);
-                   if ($k > 0) {
-                       for ($i = 0; $i < $k; $i++) {
-                           $relevance = mysql_result($result, $i, 0);
-                           $name = mysql_result($result, $i, 1);
-                           $id = mysql_result($result, $i, 2);
-                           $module = mysql_result($result, $i, 3);
-                           $desc = mysql_result($result, $i, 4);
-                           $url = $module;
-                           if ($id != "") {
-                               $url = $url + "#$id";
-                           }
-                           $results["$name _html_ $number _ $i"] =
-                                         array($relevance, "XML docs",
-                                               $module, $desc, $name, $url);
-                       }
-                       mysql_free_result($result);
-                   }
-               }
-               if (($scope == 'any') || ($scope == 'LISTS')) {
-                   list($result, $j) = queryArchiveWord($word);
-                   if ($j > 0) {
-                       for ($i = 0; $i < $j; $i++) {
-                           $relevance = mysql_result($result, $i, 0);
-                           $name = mysql_result($result, $i, 1);
-                           $type = mysql_result($result, $i, 2);
-                           $url = mysql_result($result, $i, 3);
-                           $desc = mysql_result($result, $i, 4);
-                           if (array_key_exists($url, $results)) {
-                               list($r,$t,$m,$d,$w,$u) = $results[$url];
-                               $results[$name] = array(($r + $relevance) * 2,
-                                                       $t,$m,$d,$w,$u);
-                           } else {
-                               $id = $name;
-                               $m = strtolower($module);
-                               $u = str_replace(
-                       "http://www.redhat.com/archives/libvir-list/", "", $url);
-                               $results[$url] = array($relevance,$type,
-                                               $u, $desc, $name, $url);
-                           }
-                       }
-                       mysql_free_result($result);
-                   }
-               }
-           }
-           if ((count($results) == 0) && (count($list) == 1)) {
-               $word = $list[0];
-               if (($scope == 'any') || ($scope == 'XMLAPI')) {
-                   list($result, $j) = queryWord("vir$word");
-                   if ($j > 0) {
-                       for ($i = 0; $i < $j; $i++) {
-                           $relevance = mysql_result($result, $i, 0);
-                           $name = mysql_result($result, $i, 1);
-                           $type = mysql_result($result, $i, 2);
-                           $module = mysql_result($result, $i, 3);
-                           $desc = mysql_result($result, $i, 4);
-                           if (array_key_exists($name, $results)) {
-                               list($r,$t,$m,$d,$w,$u) = $results[$name];
-                               $results[$name] = array(($r + $relevance) * 2,
-                                                       $t,$m,$d,$w,$u);
-                           } else {
-                               $id = $name;
-                               $m = strtolower($module);
-                               $url = "html/libvirt-$module.html#$id";
-                               $results[$name] = array($relevance,$type,
-                                               $module, $desc, $name, $url);
-                           }
-                       }
-                       mysql_free_result($result);
-                   }
-               }
-           }
-           mysql_close($link);
-           $nb = count($results);
-           echo "<h3 align='center'>Found $nb results for query $query</h3>\n";
-           usort($results, "resSort");
-
-            if ($nb > 0) {
-               printf("<table><tbody>\n");
-               printf("<tr><td>Quality</td><td>Symbol</td><td>Type</td><td>module</td><td>Description</td></tr>\n");
-               $i = 0;
-               while (list ($name, $val) = each ($results)) {
-                   list($r,$t,$m,$d,$s,$u) = $val;
-                   $m = str_replace("<", "&lt;", $m);
-                   $s = str_replace("<", "&lt;", $s);
-                   $d = str_replace("<", "&lt;", $d);
-                   echo "<tr><td>$r</td><td><a href='$u'>$s</a></td><td>$t</td><td>$m</td><td>$d</td></tr>";
-                   $i = $i + 1;
-                   if ($i > 75)
-                       break;
-               }
-               printf("</tbody></table>\n");
-           }
-       }
-    }
-?>
-      <img src="libvirtLogo.png" alt="libvirt Logo" />
-      </div>
-      <div id="menu">
-        <ul class="l0"><li>
-            <span class="active">Home</span>
-          </li><li>
-            <a title="Details of new features and bugs fixed in each release" class="inactive" href="news.html">News</a>
-          </li><li>
-            <a title="Get the latest source releases, binary builds and get access to the source repository" class="inactive" href="downloads.html">Downloads</a>
-          </li><li>
-            <a title="Information for users, administrators and developers" class="inactive" href="docs.html">Documentation</a>
-          </li><li>
-            <a title="User contributed content" class="inactive" href="http://wiki.libvirt.org">Wiki</a>
-          </li><li>
-            <a title="Frequently asked questions" class="inactive" href="http://wiki.libvirt.org/page/FAQ">FAQ</a>
-          </li><li>
-            <a title="How and where to report bugs and request features" class="inactive" href="bugs.html">Bug reports</a>
-          </li><li>
-            <a title="How to contact the developers via email and IRC" class="inactive" href="contact.html">Contact</a>
-          </li><li>
-            <a title="Miscellaneous links of interest related to libvirt" class="inactive" href="relatedlinks.html">Related Links</a>
-          </li><li>
-            <a title="Overview of all content on the website" class="inactive" href="sitemap.html">Sitemap</a>
-          </li></ul>
-      </div>
-    </div>
-    <div id="footer">
-      <div id="projects">
-        <dl id="p1"><dt>
-            <a href="http://augeas.net/">Augeas</a>
-          </dt><dd>
-            <span>A configuration editing tool and API</span>
-          </dd><dt>
-            <a href="http://libvirt.org/">libvirt</a>
-          </dt><dd>
-            <span>The open source virtualization API</span>
-          </dd></dl>
-        <dl id="p2"><dt>
-            <a href="http://cobbler.et.redhat.com/">Cobbler</a>
-          </dt><dd>
-            <span>OS provisioning and profile management</span>
-          </dd><dt>
-            <a href="http://ovirt.org/">oVirt</a>
-          </dt><dd>
-            <span>Virtualization management across the data center</span>
-          </dd></dl>
-        <dl id="p3"><dt>
-            <a href="http://freeipa.org/">FreeIPA</a>
-          </dt><dd>
-            <span>Identity, policy and audit management</span>
-          </dd><dt>
-            <a href="http://virt-manager.org/">Virtual Machine Manager</a>
-          </dt><dd>
-            <span>Virtualization management from the desktop</span>
-          </dd></dl>
-      </div>
-    </div>
-  </body>
-</html>
diff --git a/docs/search.php.code.in b/docs/search.php.code.in
new file mode 100644 (file)
index 0000000..df25cd6
--- /dev/null
@@ -0,0 +1,224 @@
+<?php
+    $query = $_GET['query'];
+    // We handle only the first argument so far
+    $query = ltrim ($query);
+
+    $scope = $_GET['scope'];
+    if ($scope == NULL)
+        $scope = "any";
+    $scope = ltrim ($scope);
+    if ($scope == "")
+        $scope = "any";
+?>
+
+<form action="<?php echo $_SERVER['PHP_SELF'], "?query=", rawurlencode($query) ?>"
+      enctype="application/x-www-form-urlencoded" method="get">
+  <input name="query" type="text" size="50" value="<?php echo $query?>"/>
+  <select name="scope">
+    <option value="any">Search All</option>
+    <option value="API" <?php if ($scope == 'API') print "selected='selected'"?>>Only the APIs</option>
+    <option value="DOCS" <?php if ($scope == 'DOCS') print "selected='selected'"?>>Only the Documentation</option>
+    <option value="LISTS" <?php if ($scope == 'LISTS') print "selected='selected'"?>>Only the lists archives</option>
+  </select>
+  <input name="submit" type="submit" value="Search ..."/>
+</form>
+
+<?php
+    function logQueryWord($word) {
+        $result = mysql_query ("SELECT ID,Count FROM Queries WHERE Value='$word'");
+       if ($result) {
+           $i = mysql_num_rows($result);
+           if ($i == 0) {
+               mysql_free_result($result);
+               mysql_query ("INSERT INTO Queries (Value,Count) VALUES ('$word',1)");
+           } else {
+               $id = mysql_result($result, 0, 0);
+               $count = mysql_result($result, 0, 1);
+               $count ++;
+               mysql_query ("UPDATE Queries SET Count=$count WHERE ID=$id");
+           }
+       } else {
+           mysql_query ("INSERT INTO Queries (Value,Count) VALUES ('$word',1)");
+       }
+    }
+    function queryWord($word) {
+        $result = NULL;
+       $j = 0;
+        if ($word) {
+           $result = mysql_query ("SELECT words.relevance, symbols.name, symbols.type, symbols.module, symbols.descr FROM words, symbols WHERE LCASE(words.name) LIKE LCASE('$word') and words.symbol = symbols.name ORDER BY words.relevance DESC LIMIT 75");
+           if ($result) {
+               $j = mysql_num_rows($result);
+               if ($j == 0)
+                   mysql_free_result($result);
+           }
+           logQueryWord($word);
+       }
+       return array($result, $j);
+    }
+    function queryHTMLWord($word) {
+        $result = NULL;
+       $j = 0;
+        if ($word) {
+           $result = mysql_query ("SELECT relevance, name, id, resource, section FROM wordsHTML WHERE LCASE(name) LIKE LCASE('$word') ORDER BY relevance DESC LIMIT 75");
+           if ($result) {
+               $j = mysql_num_rows($result);
+               if ($j == 0)
+                   mysql_free_result($result);
+           }
+           logQueryWord($word);
+       }
+       return array($result, $j);
+    }
+    function queryArchiveWord($word) {
+        $result = NULL;
+       $j = 0;
+        if ($word) {
+           $result = mysql_query ("SELECT wordsArchive.relevance, wordsArchive.name, 'libvir-list', archives.resource, archives.title FROM wordsArchive, archives WHERE LCASE(wordsArchive.name) LIKE LCASE('$word') and wordsArchive.ID = archives.ID ORDER BY relevance DESC LIMIT 75");
+           if ($result) {
+               $j = mysql_num_rows($result);
+               if ($j == 0)
+                   mysql_free_result($result);
+           }
+           logQueryWord($word);
+       }
+       return array($result, $j);
+    }
+    function resSort ($a, $b) {
+       list($ra,$ta,$ma,$na,$da) = $a;
+       list($rb,$tb,$mb,$nb,$db) = $b;
+       if ($ra == $rb) return 0;
+       return ($ra > $rb) ? -1 : 1;
+    }
+    if (($query) && (strlen($query) <= 50)) {
+       $link = mysql_connect ("localhost", "nobody");
+       if (!$link) {
+           echo "<p> Could not connect to the database: ", mysql_error();
+       } else {
+           mysql_select_db("libvir", $link);
+           $list = explode (" ", $query);
+           $results = array();
+           $number = 0;
+           for ($number = 0;$number < count($list);$number++) {
+
+               $word = $list[$number];
+               if (($scope == 'any') || ($scope == 'API')) {
+                   list($result, $j) = queryWord($word);
+                   if ($j > 0) {
+                       for ($i = 0; $i < $j; $i++) {
+                           $relevance = mysql_result($result, $i, 0);
+                           $name = mysql_result($result, $i, 1);
+                           $type = mysql_result($result, $i, 2);
+                           $module = mysql_result($result, $i, 3);
+                           $desc = mysql_result($result, $i, 4);
+                           if (array_key_exists($name, $results)) {
+                               list($r,$t,$m,$d,$w,$u) = $results[$name];
+                               $results[$name] = array(($r + $relevance) * 2,
+                                                       $t,$m,$d,$w,$u);
+                           } else {
+                               $id = $name;
+                               $m = strtolower($module);
+                               $url = "html/libvirt-$module.html#$id";
+                               $results[$name] = array($relevance,$type,
+                                               $module, $desc, $name, $url);
+                           }
+                       }
+                       mysql_free_result($result);
+                   }
+               }
+               if (($scope == 'any') || ($scope == 'DOCS')) {
+                   list($result, $k) = queryHTMLWord($word);
+                   if ($k > 0) {
+                       for ($i = 0; $i < $k; $i++) {
+                           $relevance = mysql_result($result, $i, 0);
+                           $name = mysql_result($result, $i, 1);
+                           $id = mysql_result($result, $i, 2);
+                           $module = mysql_result($result, $i, 3);
+                           $desc = mysql_result($result, $i, 4);
+                           $url = $module;
+                           if ($id != "") {
+                               $url = $url + "#$id";
+                           }
+                           $results["$name _html_ $number _ $i"] =
+                                         array($relevance, "XML docs",
+                                               $module, $desc, $name, $url);
+                       }
+                       mysql_free_result($result);
+                   }
+               }
+               if (($scope == 'any') || ($scope == 'LISTS')) {
+                   list($result, $j) = queryArchiveWord($word);
+                   if ($j > 0) {
+                       for ($i = 0; $i < $j; $i++) {
+                           $relevance = mysql_result($result, $i, 0);
+                           $name = mysql_result($result, $i, 1);
+                           $type = mysql_result($result, $i, 2);
+                           $url = mysql_result($result, $i, 3);
+                           $desc = mysql_result($result, $i, 4);
+                           if (array_key_exists($url, $results)) {
+                               list($r,$t,$m,$d,$w,$u) = $results[$url];
+                               $results[$name] = array(($r + $relevance) * 2,
+                                                       $t,$m,$d,$w,$u);
+                           } else {
+                               $id = $name;
+                               $m = strtolower($module);
+                               $u = str_replace(
+                       "http://www.redhat.com/archives/libvir-list/", "", $url);
+                               $results[$url] = array($relevance,$type,
+                                               $u, $desc, $name, $url);
+                           }
+                       }
+                       mysql_free_result($result);
+                   }
+               }
+           }
+           if ((count($results) == 0) && (count($list) == 1)) {
+               $word = $list[0];
+               if (($scope == 'any') || ($scope == 'XMLAPI')) {
+                   list($result, $j) = queryWord("vir$word");
+                   if ($j > 0) {
+                       for ($i = 0; $i < $j; $i++) {
+                           $relevance = mysql_result($result, $i, 0);
+                           $name = mysql_result($result, $i, 1);
+                           $type = mysql_result($result, $i, 2);
+                           $module = mysql_result($result, $i, 3);
+                           $desc = mysql_result($result, $i, 4);
+                           if (array_key_exists($name, $results)) {
+                               list($r,$t,$m,$d,$w,$u) = $results[$name];
+                               $results[$name] = array(($r + $relevance) * 2,
+                                                       $t,$m,$d,$w,$u);
+                           } else {
+                               $id = $name;
+                               $m = strtolower($module);
+                               $url = "html/libvirt-$module.html#$id";
+                               $results[$name] = array($relevance,$type,
+                                               $module, $desc, $name, $url);
+                           }
+                       }
+                       mysql_free_result($result);
+                   }
+               }
+           }
+           mysql_close($link);
+           $nb = count($results);
+           echo "<h3 align='center'>Found $nb results for query $query</h3>\n";
+           usort($results, "resSort");
+
+            if ($nb > 0) {
+               printf("<table><tbody>\n");
+               printf("<tr><td>Quality</td><td>Symbol</td><td>Type</td><td>module</td><td>Description</td></tr>\n");
+               $i = 0;
+               while (list ($name, $val) = each ($results)) {
+                   list($r,$t,$m,$d,$s,$u) = $val;
+                   $m = str_replace("<", "&lt;", $m);
+                   $s = str_replace("<", "&lt;", $s);
+                   $d = str_replace("<", "&lt;", $d);
+                   echo "<tr><td>$r</td><td><a href='$u'>$s</a></td><td>$t</td><td>$m</td><td>$d</td></tr>";
+                   $i = $i + 1;
+                   if ($i > 75)
+                       break;
+               }
+               printf("</tbody></table>\n");
+           }
+       }
+    }
+?>
diff --git a/docs/search.php.in b/docs/search.php.in
new file mode 100644 (file)
index 0000000..ee8f4a3
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<html>
+  <body>
+    <h1>Search the documentation on Libvirt.org</h1>
+
+    <p>
+      The search service indexes the libvirt APIs and documentation as
+    well as the libvir-list@redhat.com mailing-list archives. To use
+    it simply provide a set of keywords:
+    </p>
+
+<a id="php_placeholder"/>
+
+    <img src="libvirtLogo.png" alt="libvirt Logo" />
+
+  </body>
+</html>