changed git call from https to git readonly
[atutor.git] / mods / phpdoc / PHPDoc / xmlexporter / PhpdocXMLIndexExporter.php
1 <?php\r
2 /**\r
3 * Creates XML index files.\r
4 *\r
5 * @version $Id: PhpdocXMLIndexExporter.php,v 1.2 2000/12/03 22:37:38 uw Exp $\r
6 */\r
7 class PhpdocXMLIndexExporter extends PhpdocXMLExporter {\r
8 \r
9         /**\r
10         * Chapter tag attributes\r
11         *\r
12         * @var  array\r
13         */\r
14         var $chapterAttributes = array( "name"  => "CDATA" );\r
15         \r
16         /**\r
17         * Element tag attributes.\r
18         *\r
19         * @var  array()\r
20         */\r
21         var $elementAttributes  = array(\r
22                                                                                                                         "type"                          => "CDATA",\r
23                                                                                                                         "source"                        => "CDATA", \r
24                                                                                                                         "sourcetype"    => "CDATA" \r
25                                                                                                                 );\r
26         /**\r
27         * Just call the parent class constructor\r
28         */\r
29         function PhpdocXMLIndexExporter() {\r
30                 $this->PhpdocXMLExporter();\r
31         } // end constructor\r
32         \r
33         /**\r
34         * Exports a modulegroup.\r
35         *\r
36         * @param        array\r
37         * @access       public\r
38         */\r
39         function exportModulegroup(&$modulegroup) {\r
40         \r
41                 $this->xmlwriter->free();\r
42                 \r
43                 $this->xmlwriter->addXML('<?xml version="1.0"?>');\r
44                 $this->xmlwriter->startElement("phpdoc");\r
45 \r
46                 reset($modulegroup);\r
47                 list($group, $modules) = each($modulegroup);\r
48                 $attribs = array( "name" => array( "type"       => "CDATA", "value"     => $group) );\r
49                 $this->xmlwriter->startElement("modulegroup", "", $attribs);\r
50                 \r
51                 reset($modules);\r
52                 while (list($k, $module)=each($modules))\r
53                         $this->xmlwriter->addElement("module", "", array( "name" => array( "type" => "CDATA", "value" => $module )) );\r
54                 \r
55                 $this->xmlwriter->endElement("modulegroup");\r
56                 $this->xmlwriter->endElement("phpdoc");\r
57                 \r
58                 $group = $this->nameToUrl($group);\r
59                 $this->xmlwriter->export($this->path."modulegroup_$group.xml");\r
60                 $this->xmlwriter->free();\r
61                 \r
62         } // end func exportModulegroup\r
63         \r
64         /**\r
65         * Exports a packagelist\r
66         * \r
67         * @param        array\r
68         * @access       public\r
69         */\r
70         function exportPackagelist(&$packagelist) {\r
71         \r
72                 $this->xmlwriter->free();\r
73                 \r
74                 $this->xmlwriter->addXML('<?xml version="1.0"?>');\r
75                 $this->xmlwriter->startElement("phpdoc");\r
76                 $this->xmlwriter->startElement("packagelist");\r
77                 \r
78                 reset($packagelist);\r
79                 while (list($package, $elementlist)=each($packagelist)) {\r
80                 \r
81                         $attribs = array( "name" => array("type" => "CDATA", "value" => $package) );\r
82                         $this->xmlwriter->startElement("package", "", $attribs);\r
83                         \r
84                         reset($elementlist);\r
85                         while (list($type, $elements) = each($elementlist)) {\r
86                                 \r
87                                 $container = ("classes" == $type) ? "class" : "module";\r
88                                 while (list($k, $element) = each($elements)) {\r
89                                         \r
90                                         $attribs = array( "name"        => array("type" => "CDATA", "value"     => $element));\r
91                                         $this->xmlwriter->addElement($container, "", $attribs);\r
92                                                                                 \r
93                                 }\r
94                                         \r
95                         }\r
96                         \r
97                         $this->xmlwriter->endElement("package");\r
98                         \r
99                 } \r
100                 \r
101                 $this->xmlwriter->endElement("packagelist");\r
102                 $this->xmlwriter->endElement("phpdoc");\r
103                 $this->xmlwriter->export($this->path."packagelist.xml");\r
104                 $this->xmlwriter->free();\r
105                 \r
106         } // end func exportPackagelist\r
107         \r
108         /**\r
109         * Exports a classtree\r
110         * \r
111         * @param        array           Classtree\r
112         * @param        string  Name of the baseclass of the classtree\r
113         * @access       public\r
114         */\r
115         function exportClasstree(&$classtree, $baseclass) {\r
116         \r
117                 $this->xmlwriter->free();\r
118                 \r
119                 $this->xmlwriter->addXML('<?xml version="1.0"?>');\r
120                 $this->xmlwriter->startElement("phpdoc");\r
121                 \r
122                 $attribs = array("baseclass"    => array("type" => "CDATA", "value"     => $baseclass));\r
123                 $this->xmlwriter->startElement("classtree", "", $attribs);                      \r
124                 \r
125                 reset($classtree);\r
126                 while (list($parentclass, $subclasses) = each($classtree)) {\r
127                 \r
128                         $attribs = array("name" => array("type" => "CDATA", "value"     => $parentclass));\r
129                         $this->xmlwriter->startElement("class", "", $attribs);\r
130                         \r
131                         reset($subclasses);\r
132                         while (list($subclass, $v) = each($subclasses)) \r
133                                 $this->xmlwriter->addElement("subclass", $subclass);\r
134                                 \r
135                         $this->xmlwriter->endElement("class");\r
136                         \r
137                 }\r
138                 \r
139                 $this->xmlwriter->endElement("classtree");\r
140                 $this->xmlwriter->endElement("phpdoc");\r
141                 \r
142                 $baseclass = $this->nameToURL($baseclass);\r
143                 $this->xmlwriter->export($this->path . "classtree_$baseclass.xml");\r
144                 $this->xmlwriter->free();\r
145                 \r
146         } // end func exportClasstree\r
147         \r
148         /**\r
149         * Exports a list of all elements\r
150         * \r
151         * @param        array\r
152         * @access       public\r
153         */\r
154         function exportElementlist(&$elementlist) {\r
155         \r
156                 $this->xmlwriter->free();\r
157                 \r
158                 $this->xmlwriter->addXML('<?xml version="1.0"?>');\r
159                 $this->xmlwriter->startElement("phpdoc");\r
160                 $this->xmlwriter->startElement("index");                        \r
161                 \r
162                 reset($elementlist);\r
163                 while (list($index, $elements) = each($elementlist)) {\r
164                 \r
165                         $attrib = array( "char" => array( "type" => "CDATA", "value" => $index ) );\r
166                         $this->xmlwriter->startElement("chapter", "", $attrib);\r
167 \r
168                         reset($elements);\r
169                         while (list($name, $element) = each($elements)) {\r
170                                 \r
171                                 reset($element);\r
172                                 while (list($k, $eldata) = each($element)) {\r
173                                         $attribs = $this->getAttributes($eldata, $this->elementAttributes);\r
174                                         $attribs["name"] = array( "type"        => "CDATA", "value"     => $name );\r
175                                         $this->xmlwriter->addElement("element", $eldata["sdesc"], $attribs);\r
176                                 }\r
177                                 \r
178                         }\r
179 \r
180                         $this->xmlwriter->endElement("chapter");\r
181                 }\r
182                 \r
183                 $this->xmlwriter->endElement("index");\r
184                 $this->xmlwriter->endElement("phpdoc");\r
185                 \r
186                 $this->xmlwriter->export($this->path."elementlist.xml");\r
187                 $this->xmlwriter->free();\r
188 \r
189         } // end func exportElementlist\r
190         \r
191 } // end class PhpdocXMLIndexExporter\r
192 ?>