+++ /dev/null
-<?php
-/**
-* Provides a API to access Index xml documents.
-*/
-class PhpdocIndexAccessor extends PhpdocAccessor {
-
- /**
- * Ordered list of all chapternames.
- *
- * @var array
- */
- var $chapternames = array();
-
- /**
- * Ordered list of all chapters.
- *
- * @var array
- */
- var $chapters = array();
-
- /**
- * List of all packages.
- *
- * @var array
- */
- var $packages = array();
-
- /**
- * Data of a classtree
- *
- * @var array
- */
- var $classtree = array();
-
- /**
- * Data of a modulegroup
- *
- * @var array
- */
- var $modulegroup = array();
-
- /**
- * Some container withing the packagelist.
- *
- * @var array
- * @see buildPackagelist()
- */
- var $packageFields = array("class", "module");
-
- /**
- * Flag indicating that certain internal datafield have been filled.
- *
- * @var array
- */
- var $flagBuild = array(
- "chapter" => false,
- "package" => false
- );
-
-
- /**
- * Returns a modulegroup
- *
- * @access public
- */
- function getModulegroup() {
-
- $this->buildModulegroup();
-
- if ($this->freeOnGet) {
-
- $data = $this->modulegroup;
- $this->modulegroup = array();
- return $data;
-
- } else {
-
- return $this->modulegroup;
- }
-
- } // end func getModulegroup
-
- /**
- * Returns a classtree.
- *
- * @return array
- * @access public
- */
- function getClasstree() {
-
- $this->buildClasstree();
-
- if ($this->freeOnGet) {
-
- $data = $this->classtree;
- $this->classtree = array();
- return $data;
-
- } else {
-
- return $this->classtree;
-
- }
-
- } // end func getClasstree
-
- /**
- * Returns an ordered list of all chapternames.
- *
- * @return array
- * @access public
- * @see getChapters()
- */
- function getChapternames() {
-
- $this->buildChapterlist();
-
- if ($this->freeOnGet) {
-
- $data = $this->chapternames;
- $this->chapternames = array();
- return $data;
-
- } else {
-
- return $this->chapternames;
-
- }
-
- } // end func getChapternames
-
- /**
- * Returns an ordered list of all chapters.
- *
- * @return array
- * @access public
- * @see getChapternames()
- */
- function getChapters() {
-
- $this->buildChapterlist();
-
- if ($this->freeOnGet) {
-
- $data = $this->chapters;
- $this->chapters = array();
- return $data;
-
- } else {
-
- return $this->chapters;
-
- }
-
- } // end func getChapters
-
- /**
- * Returns a list of all packages
- *
- * @return array
- * @access public
- */
- function getPackagelist() {
-
- $this->buildPackagelist();
-
- if ($this->freeOnGet) {
-
- $data = $this->packages;
- $this->packages = array();
- return $data;
-
- } else {
-
- return $this->packages;
-
- }
-
- } // end func getPackagelist
-
-
- /**
- * Builds the internal packagelist.
- */
- function buildPackagelist() {
-
- if ($this->flagBuild["package"])
- return;
-
- $data = $this->xml["packagelist"];
- $this->xml = array();
- $this->flagBuild["package"] = true;
-
- $this->packages = array();
-
- if (!isset($data["package"][0]))
- $data["package"] = array($data["package"]);
-
- reset($data["package"]);
- while (list($k, $package)=each($data["package"])) {
-
- $packagename = $package["name"];
-
- reset($this->packageFields);
- while (list($k, $field)=each($this->packageFields)) {
-
- if (isset($package[$field][0])) {
-
- reset($package[$field]);
- while (list($k, $element)=each($package[$field]))
- $this->packages[$packagename][$field][] = $element["name"];
-
- } else if (isset($package[$field])) {
-
- $this->packages[$packagename][$field][] = $package[$field]["name"];
-
- }
- }
-
- }
-
- } // end func buildPackagelist
-
- /**
- * Builds the internal chapterlists.
- */
- function buildChapterlist() {
-
- if ($this->flagBuild["chapter"])
- return;
-
- $data = $this->xml["index"];
- $this->xml = array();
- $this->flagBuild["chapter"] = true;
-
- $this->chapternames = array();
- $this->chapters = array();
-
- if (isset($data["chapter"][0])) {
-
- $chapterlist = array();
- reset($data["chapter"]);
- while (list($k, $chapter)=each($data["chapter"]))
- $chapterlist[strtoupper($chapter["char"])][$chapter["char"]] = $k;
-
- ksort($chapterlist, SORT_STRING);
-
- reset($chapterlist);
- while (list($k, $chapters)=each($chapterlist)) {
-
- reset($chapters);
- while (list($chapter, $index)=each($chapters)) {
- $this->chapternames[] = $chapter;
- $this->chapters[$chapter] = $data["chapter"][$index];
- }
-
- }
-
- } else {
-
- $this->chapternames[] = $data["chapter"]["char"];
- $this->chapters[$data["chapter"]["char"]] = $data["chapter"]["char"];
-
- }
-
- } // end func buildChapterlist
-
- /**
- * Extracts the modulegroup data of the xml file.
- *
- * @see getModulegroup()
- */
- function buildModulegroup() {
-
- if ($this->flagBuild["modulegroup"])
- return;
-
- $this->flagBuild["modulegroup"] = true;
- $data = $this->xml["modulegroup"];
-
- $this->xml = "";
- $this->modulegroup = array(
- "group" => $data["name"],
- "modules" => array()
- );
-
- if (!isset($data["module"][0]))
- $data["module"] = array( $data["module"] );
-
- reset($data["module"]);
- while (list($k, $module)=each($data["module"]))
- $this->modulegroup["modules"][] = $module["name"];
-
- } // end func buildModulegroup
-
- /**
- * Extracts the classtree data of the xml file.
- *
- * @see getClasstree()
- */
- function buildClasstree() {
-
- if ($this->flagBuild["classtree"])
- return;
-
- $this->flagBuild["classtree"] = true;
- $data = $this->xml["classtree"];
- $this->xml = "";
-
- $this->classtree = array(
- "baseclass" => $data["baseclass"],
- "classes" => array()
- );
-
- if (!isset($data["class"][0]))
- $data["class"] = array( $data["class"] );
-
- reset($data["class"]);
- while (list($k, $class)=each($data["class"])) {
-
- if (!isset($class["subclass"])) {
-
- $this->classtree["classes"][$class["name"]] = array();
-
- } else {
-
- if (!isset($class["subclass"][0])) {
-
- $this->classtree["classes"][$class["name"]][] = $class["subclass"]["value"];
-
- } else {
-
- reset($class["subclass"]);
- while (list($k, $subclass)=each($class["subclass"]))
- $this->classtree["classes"][$class["name"]][] = $subclass["value"];
-
- }
-
- }
-
- }
-
- } // end func buildClasstree
-
- /**
- * Resets the build flags.
- * @see $flagBuild
- */
- function init() {
-
- reset($this->flagBuild);
- while (list($k, $v)=each($this->flagBuild))
- $this->flagBuild[$k] = false;
-
- } // end func init
-
-
-} // end class PhpdocIndexAccessor
-?>
\ No newline at end of file