summaryrefslogtreecommitdiff
path: root/buildscripts
diff options
context:
space:
mode:
authorctrlaltca@gmail.com <>2011-11-19 11:05:46 +0000
committerctrlaltca@gmail.com <>2011-11-19 11:05:46 +0000
commit1f09b786730956d01c48a82272617a0f8b2597f0 (patch)
treefe733def390a3c7ec41933ef4a55c06cf403e9f4 /buildscripts
parentd840107832b1f59a9fc3b93ffb97ef976be1b83c (diff)
updating phpDocumentor, part 1: removal of the old version
Diffstat (limited to 'buildscripts')
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Classes.inc1068
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converter.inc5189
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc1755
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini577
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/__tags.tpl13
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_declaration.tpl38
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_description.tpl7
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_list.tpl1
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_details.tpl33
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_summary.tpl22
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_details.tpl55
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_summary.tpl25
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_details.tpl55
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_summary.tpl27
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_footer.tpl1
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_get_constant_type.tpl10
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_header.tpl4
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_constants.tpl34
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_methods.tpl42
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inheritence_tree.tpl3
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_details.tpl101
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_summary.tpl61
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_sub_classes.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_tags.tpl13
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl18
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl31
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl9
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl8
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl14
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl1
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl15
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl21
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/examplesource.tpl6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl10
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl8
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl11
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl48
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl40
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl23
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl17
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl9
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl8
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl7
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.pngbin991 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/manual.css260
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/style.css598
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css728
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl58
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl3
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl31
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl11
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl14
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl29
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl28
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc1779
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/options.ini577
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/__tags.tpl13
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_declaration.tpl38
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_description.tpl7
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_list.tpl1
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_details.tpl33
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_summary.tpl22
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_details.tpl55
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_summary.tpl25
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_details.tpl55
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_summary.tpl27
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_footer.tpl1
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_get_constant_type.tpl10
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_header.tpl4
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_constants.tpl34
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_methods.tpl42
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inheritence_tree.tpl3
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_details.tpl101
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_summary.tpl61
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_sub_classes.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_tags.tpl13
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/basicindex.tpl18
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/blank.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/class.tpl29
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classleft.tpl9
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classtrees.tpl8
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/const.tpl14
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/define.tpl32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/docblock.tpl15
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/elementindex.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/errors.tpl21
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/examplesource.tpl6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/fileleft.tpl10
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/filesource.tpl8
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/footer.tpl25
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/function.tpl48
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/global.tpl40
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/header.tpl113
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/include.tpl9
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/index.tpl7
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/background.pngbin238 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/bg_left.pngbin991 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/empty.pngbin206 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/manual.css260
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/style.css598
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/stylesheet.css129
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/method.tpl58
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/packages.tpl3
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/page.tpl31
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/pkgelementindex.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/ric.tpl6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/todolist.tpl14
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial.tpl32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_toc.tpl29
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_tree.tpl5
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/var.tpl28
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc1747
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini577
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl47
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl13
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl402
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl11
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl18
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl24
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl14
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl12
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl21
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl8
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl8
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl44
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl26
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl12
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl16
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl24
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl149
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css144
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl61
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl211
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl17
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl14
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl43
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl13
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl41
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl39
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl44
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc241
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/DocBlock/Lexer.inc701
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/DocBlockTags.inc984
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Errors.inc793
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/EventStack.inc78
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/HighlightParser.inc2354
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/InlineTags.inc854
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/IntermediateParser.inc1832
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Io.inc869
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/LinkClasses.inc206
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc387
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Parser.inc3185
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/ParserData.inc725
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc1456
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/ParserDocBlock.inc1165
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/ParserElements.inc1910
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc782
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc84
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php785
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/BUGS7
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/COPYING.lib458
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/ChangeLog5421
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/FAQ284
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/INSTALL29
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/NEWS733
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/README80
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/RELEASE_NOTES423
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/TODO12
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Config_File.class.php365
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty.class.php2010
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php2123
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assemble_plugin_filepath.php62
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assign_smarty_interface.php43
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.create_dir_structure.php79
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.display_debug_console.php60
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_include_path.php44
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_microtime.php23
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_php_resource.php80
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_secure.php59
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_trusted.php50
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_plugins.php125
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_resource_plugin.php74
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_cached_inserts.php71
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_compiled_include.php32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.read_cache_file.php111
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rm_auto.php71
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rmdir.php55
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.run_insert_handler.php71
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.smarty_include_php.php50
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_cache_file.php73
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_include.php59
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_resource.php37
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_file.php48
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/debug.tpl64
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.strip.php35
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.textformat.php83
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign.php38
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign_debug_info.php39
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.config_load.php130
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.counter.php88
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.cycle.php119
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.debug.php35
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.eval.php48
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.fetch.php217
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_checkboxes.php135
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_image.php143
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_options.php118
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_radios.php138
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_date.php243
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_time.php163
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_table.php113
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.mailto.php140
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.math.php82
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup.php87
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup_init.php39
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.var_dump.php20
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.capitalize.php25
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.cat.php33
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_characters.php31
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_paragraphs.php28
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_sentences.php28
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_words.php32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.date_format.php43
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.debug_print_var.php57
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.default.php31
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.escape.php63
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.htmlentities.php18
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.indent.php27
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.lower.php25
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.nl2br.php35
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.rawurlencode.php18
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.regex_replace.php29
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.replace.php29
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.spacify.php29
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.string_format.php28
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip.php33
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip_tags.php31
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.truncate.php43
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.upper.php25
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.wordwrap.php28
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/outputfilter.trimwhitespace.php75
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.escape_special_chars.php30
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.make_timestamp.php43
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.README6
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.gifbin1102 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/TutorialHighlightParser.inc491
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/WordParser.inc325
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc554
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php13
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php14
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/common.inc.php246
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/find_phpdoc.php32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc2615
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTWordParser.inc311
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc45
266 files changed, 0 insertions, 60296 deletions
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Classes.inc b/buildscripts/PhpDocumentor/phpDocumentor/Classes.inc
deleted file mode 100644
index d4f29745..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Classes.inc
+++ /dev/null
@@ -1,1068 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Intermediate class parsing structure.
- * @package phpDocumentor
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: Classes.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-/**
- * Intermediate class parsing structure.
- *
- * The {@link phpDocumentor_IntermediateParser} class uses this class and its
- * cousin, {@link ProceduralPages} to organize all parsed source code elements.
- * Data is fed to each immediately after it is parsed, and at conversion time,
- * everything is organized.
- *
- * The Classes class is responsible for all inheritance, including resolving
- * name conflicts between classes, determining which classes extend other
- * classes, and is responsible for all inheritance of documentation.
- * {@internal
- * This structure parses classes, vars and methods by file, and then iterates
- * over the class tree to set up inheritance. The {@link Inherit()}
- * method is the meat of the class, and processes the class trees from root to
- * branch, ensuring that parsing order is unimportant.}}
- * @package phpDocumentor
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: Classes.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-class Classes
-{
- /**#@+
- * @access private
- */
- /**
- * file being parsed, used in every add function to match up elements with
- * the file that contains them
- *
- * This variable is used during parsing to associate class elements added
- * to the data structures that contain them with the file they reside in
- * @see addClass(), addMethod(), addVar(), nextFile()
- * @var string
- */
- var $curfile;
- /**
- * class being parsed, used to match up methods and vars with their parent
- * class
- *
- * This variable is used during parsing to associate class elements added
- * to the data structures that contain them with the file they reside in
- * @see addMethod(), addVar()
- * @var string
- */
- var $curclass;
-
- /**
- * Used when a definite match is made between a parent class and a child
- * class
- *
- * This variable is used in post-parsing.
- *
- * Format: array(parent => array(parentfile => array(child => childfile)))
- * @var array
- */
- var $definitechild;
- /**
- * array of parsed classes organized by the name of the file that contains
- * the class.
- *
- * Format:
- * array(filename => array(classname => {@link parserClass}))
- * @var array
- */
- var $classesbyfile = array();
- /**
- * array of file names organized by classes that are in the file.
- *
- * This structure is designed to handle name conflicts. Two files can
- * contain classes with the same name, and this array will record both
- * filenames to help control linking and inheritance errors
- *
- * Format:<pre>
- * array(classname => array(name of file containing classname,
- * name of file 2 containing classname...)</pre>
- * @var array
- */
- var $classesbynamefile = array();
- /**
- * array of parsed methods organized by the file that contains them.
- *
- * Format:<pre>
- * array(filename => array(classname => array({@link parserMethod} 1,
- * {@link parserMethod} 2,...))</pre>
- * @var array
- */
- var $methodsbyfile = array();
- /**
- * array of parsed vars organized by the file that contains them.
- *
- * Format:
- * array(filename => array(classname => array({@link parserVar} 1, {@link parserVar} 2,...))
- * @var array
- */
- var $varsbyfile = array();
- /**
- * array of parsed class constants organized by the file that contains them.
- *
- * Format:
- * array(filename => array(classname => array({@link parserConst} 1, {@link parserConst} 2,...))
- * @var array
- */
- var $constsbyfile = array();
- /**
- * keeps track of extend declarations by file, used to find inheritance
- *
- * Format:
- * array(filename => array(classname => parentclassname))
- * @var array
- */
- var $extendsbyfile = array();
- /**
- * Keeps track of child classes by file.
- * Since phpDocumentor can document collections of files that contain name
- * conflicts (PHP would give a fatal error), it
- * is impossible to assume a class that declares "extends foo" necessarily
- * extends the class foo in file X. It could be an
- * extended class of class foo in file Y. Because of this, phpDocumentor
- * relies on packaging to resolve the name conflict
- * This array keeps track of the packages of a child class
- *
- * Format:
- * array(parentclassname => array(filename => array(childclassname =>
- * array(packagename, packagename)))
- * @var array
- */
- var $classchildrenbyfile = array();
- /**
- * Keeps track of class packages found in a file.
- * This is used in {@link getParentClass()} to determine the number of
- * packages in a file, in order to resolve inheritance issues
- * Format: array(filename => array(packagename1, packagename2,...))
- * @var array
- */
- var $classpackagebyfile = array();
- /**
- * a tree of class inheritance by name.
- *
- * format:<pre>
- * array(childname => parentname,
- * childname1 => parentname1,
- * rootname => 0, ...
- * )</pre>
- * @var array
- * @see Converter::generateSortedClassTreeFromClass()
- */
- var $classparents = array();
- /**
- * Keeps track of package and subpackage for each class name, organized
- * by package
- *
- * Format:<pre>
- * array(classname => array(path => array(package,subpackage),
- * path2 => array(package,subpackage),...))</pre>
- * @var array
- */
- var $classpathpackages = array();
- /**
- * used to delete duplicates in the same package to avoid documentation errors
- *
- * Specifically used in {@link Converter::checkKillClass()}
- */
- var $killclass = array();
- /**
- * array of methods by package and class
- *
- * format:<pre>
- * array(packagename =>
- * array(classname =>
- * array(methodname1 => {@link parserMethod} class,
- * methodname2 => {@link parserMethod} class,...)
- * )
- * )
- * )</pre>
- * @var array
- * @see Converter
- */
- var $methods = array();
-
- /**
- * array of class variables by package and class
- *
- * format:<pre>
- * array(packagename =>
- * array(classname =>
- * array(variablename1 => {@link parserVar} class,
- * variablename2 => {@link parserVar} class,...
- * )
- * )
- * )</pre>
- * @var array
- * @see Converter
- */
- var $vars = array();
-
- /**
- * array of class variables by package and class
- *
- * format:<pre>
- * array(packagename =>
- * array(classname =>
- * array(constname1 => {@link parserConst} class,
- * constname2 => {@link parserConst} class,...
- * )
- * )
- * )</pre>
- * @var array
- * @see Converter
- */
- var $consts = array();
- /**
- * Reverse class_packages_by_file, used to prevent duplicates
- * @var array Format: array(packagename => 1)
- */
- var $revcpbf = array();
- /**
- * All classes with no parents (no extends clause) are tracked in this array
- * by the file that contains them.
- *
- * Format:<pre>
- * array(classname => array(name of file1 that contains root classname,
- * name of file2 that contains root classname,...))</pre>
- * @var array
- */
- var $roots = array();
-
- /**
- * array of all files that contain classes with the same name
- * @var array Format: (classname => array(path1, path2,...))
- */
- var $potentialclassconflicts = array();
-
- /**
- * array of all inter-package name conflicts of classes
- *
- * This array allows documentation of PHP namespace conflicts that would
- * occur should a user try to include these files in the same file
- * @var array Format: (classname => array(path1, path2,...))
- */
- var $classconflicts = array();
- /**#@-*/
- /**
- * While parsing, add a class to the list of parsed classes
- *
- * sets up the {@link $classesbyfile, $classesbynamefile, $extendsbyfile},
- * {@link $classchildrenbyfile, $roots} arrays, and sets {@link $curclass}
- * @param parserClass &$element element is a {@link parserClass}
- * @uses addPackageToFile() marks the current class's package as being
- * present in a file
- */
- function addClass(&$element)
- {
- $this->curclass = $element->getName();
- $element->curfile = $this->curfile;
- if (isset($this->classesbyfile[$this->curfile][$this->curclass]))
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'class',$this->curclass,$this->curfile);
- $this->curclass = false;
- return;
- }
- $this->classesbyfile[$this->curfile][$this->curclass] = $element;
- $this->classesbynamefile[$this->curclass][] = $this->curfile;
- $this->extendsbyfile[$this->curfile][$this->curclass] = $element->getExtends();
- $this->classchildrenbyfile[$element->getExtends()][$this->curfile][$this->curclass][] = $element->docblock->package;
- if ($element->docblock->getExplicitPackage())
- $this->addPackageToFile($element->docblock->package);
- if (!$element->getExtends())
- {
- $this->roots[$this->curclass][] = $this->curfile;
- }
- }
-
- /**
- * While parsing, add a method to the list of parsed methods
- *
- * sets up the {@link $methodsbyfile} array using {@link $curfile} and
- * {@link $curclass}
- * @param parserMethod &$element element is a {@link parserMethod}
- */
- function addMethod(&$element)
- {
- if (!$this->curclass) return;
- $this->methodsbyfile[$this->curfile][$this->curclass][] = $element;
- }
-
- /**
- * While parsing, add a variable to the list of parsed variables
- *
- * sets up the {@link $varsbyfile} array using {@link $curfile} and {@link $curclass}
- * @param parserVar &$element element is a {@link parserVar}
- */
- function addVar(&$element)
- {
- if (!$this->curclass) return;
- $this->varsbyfile[$this->curfile][$this->curclass][] = $element;
- }
-
- /**
- * While parsing, add a variable to the list of parsed variables
- *
- * sets up the {@link $constsbyfile} array using {@link $curfile} and {@link $curclass}
- * @param parserConst &$element element is a {@link parserConst}
- */
- function addConst(&$element)
- {
- if (!$this->curclass) return;
- $this->constsbyfile[$this->curfile][$this->curclass][] = $element;
- }
-
- /**
- * Prepare to parse a new file
- *
- * sets {@link $curfile} to $file and {@link $curclass} to false (no class being parsed)
- * @param string $file file currently being parsed
- */
- function nextFile($file)
- {
- $this->curfile = $file;
- $this->curclass = false;
- }
-
- /**
- * Mark a package as being used in a class
- *
- * {@source}
- * @param string $package package name
- */
- function addPackageToFile($package)
- {
- if (!isset($this->revcpbf[$this->curfile][$package]))
- $this->classpackagebyfile[$this->curfile][] = $package;
- $this->revcpbf[$this->curfile][$package] = 1;
- }
-
- /**
- * Find the parent class of $class, and set up structures to note this fact
- *
- * Modifies the {@link parserClass} element in {@link $classesbyfile} to use
- * the parent's package, and inherit methods/vars
- * @param string $class child class to find parent class
- * @param string $file file child class is located in
- * @uses $definitechild if a match is made between a parent class and parameter
- * $class in file $file, then definitechild is set here
- * @uses getParentClass() to find the parent class
- */
- function setClassParent($class,$file)
- {
- if (is_array($par = $this->getParentClass($class,$file)))
- {
-// phpDocumentor_out("$file class $class extends ".$par[1]." file ".$par[0]."\n");
- $this->classesbyfile[$file][$class]->setParent($par[1],$par[0],$this);
- $this->definitechild[$par[1]][$par[0]][$class] = $file;
- } else
- {
- $this->classesbyfile[$file][$class]->setParentNoClass($par);
- }
- }
-
- /**
- * Main processing engine for setting up class inheritance.
- *
- * This function uses {@link $roots} to traverse the inheritance tree via
- * {@link processChild()} and returns the data structures
- * phpDocumentor_IntermediateParser needs to convert parsed data
- * to output using {@link phpDocumentor_IntermediateParser::Convert()}
- * @param phpDocumentor_IntermediateParser
- * @uses processChild() set up inheritance
- */
- function Inherit(&$render)
- {
- phpDocumentor_out("\nProcessing Class Inheritance\n\n");
- flush();
- phpDocumentor_out("\nProcessing Root Trees\n\n");
- flush();
- foreach($this->roots as $class => $files)
- {
- for ($i=0; $i<count($files); $i++)
- {
- $this->processChild($render,$class,$files[$i]);
- }
- }
- if (0)
- foreach($this->classesbyfile as $i => $j)
- {
- foreach($j as $k => $m)
- {
- var_dump($i,$k);
- if ($i == 'iConverter')
- {
- var_dump($j);
- }
- }
- }
- phpDocumentor_out("\nProcessing leftover classes (classes that extend root classes not found in the same package)\n");
- flush();
- foreach($this->classesbyfile as $i => $j)
- {
- foreach($j as $k => $m)
- {
- $this->processChild($render,$k,$i,true);
- }
- }
- phpDocumentor_out("done processing leftover classes\n");
- flush();
- $this->setupClassConflicts();
- }
-
- /**
- * Transfers actual conflicts from {@link $potentialClassconflicts} to
- * {@link $classconflicts}
- * @access private
- * @uses $potentialclassconflicts transfers values to {@link $classconflicts}
- */
- function setupClassConflicts()
- {
- foreach($this->potentialclassconflicts as $class => $paths)
- {
- if (count($paths) - 1)
- { //conflict
- $package = array();
- foreach($paths as $path)
- {
- // create a list of conflicting classes in each package
- if (isset($this->classpathpackages[$class][$path]))
- $package[$this->classpathpackages[$class][$path][0]][] = $path;
- }
- foreach($package as $pathpackages)
- {
- // if at least 2 functions exist in the same package, delete all but the first one and add warnings
- if (count($pathpackages) - 1)
- {
- for($i=1; $i < count($pathpackages); $i++)
- {
- if (isset($this->classesbyfile[$pathpackages[$i]]))
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'class',$class,$pathpackages[$i]);
- $this->killClass($class,$pathpackages[$i]);
- $oth = array_flip($paths);
- unset($paths[$oth[$pathpackages[$i]]]);
- }
- }
- }
- }
- $this->classconflicts[$class] = $paths;
- }
- }
- }
-
- /**
- * If a package contains two classes with the same name, this function finds
- * that conflict
- *
- * Returns the {@link $classconflicts} entry for class $class, minus its own path
- * @return mixed returns false if no conflicts, or an array of paths containing conflicts
- */
- function getConflicts($class)
- {
- if (!isset($this->classconflicts[$class])) return false;
- $a = array();
- foreach($this->classconflicts[$class] as $conflict)
- {
- $a[$this->classesbyfile[$conflict][$class]->docblock->package] = $this->classesbyfile[$conflict][$class];
- }
- return $a;
- }
-
- /**
- * sets up {@link $killclass} for use by Converter::checkKillClass()
- * @access private
- */
- function killClass($class,$path)
- {
- $this->killclass[$class][$path] = true;
- }
-
- /**
- * This function recursively climbs up the class tree, setting inherited
- * information like package and adds the elements to phpDocumentor_IntermediateParser.
- *
- * Using structures defined in {@link Classes}, the function first sets package information,
- * and then seeks out child classes.
- * It uses 3 tests to determine whether a class is a child class.
- * <ol>
- * <li>child class is in the same file as the parent class and extends parent class</li>
- * <li>child class is in a different file and specifies the parent's @package in its docblock</li>
- * <li>child class is in a different file and is in a different @package, with one possible parent class</li>
- * </ol>
- * @param phpDocumentor_IntermediateParser &$render
- * @param string $class class to process
- * @param string $file name of file $class is located in
- * @param boolean $furb flag used privately to control informational output while parsing
- * (used when processing leftover classes in {@link Inherit()}
- * @global string default package, usually "default"
- */
- function processChild(&$render,$class,$file,$furb = false)
- {
- global $phpDocumentor_DefaultPackageName;
- if (isset($this->classesbyfile[$file][$class]->processed)) return;
- $this->potentialclassconflicts[$class][] = $file;
- if ($furb) phpDocumentor_out("Processing $class in file $file\n");
- flush();
- $this->classesbyfile[$file][$class]->processed = true;
- $db = $this->classesbyfile[$file][$class];
- $render->addUses($db,$file);
- if (!$render->parsePrivate)
- {
- // if this class has an @access private, and parse private is disabled, remove it
- if ($db->docblock->hasaccess)
- {
- $aaa = $db->docblock->getKeyword('access');
- if (is_object($aaa) && $aaa->getString() == 'private')
- {
- if (isset($this->varsbyfile[$file]) && isset($this->varsbyfile[$file][$class]))
- {
- unset($this->varsbyfile[$file][$class]);
- }
- if (isset($this->methodsbyfile[$file]) && isset($this->methodsbyfile[$file][$class]))
- {
- unset($this->methodsbyfile[$file][$class]);
- }
- if (isset($this->constsbyfile[$file]) && isset($this->constsbyfile[$file][$class]))
- {
- unset($this->constsbyfile[$file][$class]);
- }
- $this->classesbyfile[$file][$class]->ignore = true;
- // if this is a root class, remove it from the roots array
- if (isset($this->roots[$class]))
- foreach($this->roots[$class] as $i => $files)
- {
- // find the file kkey and unset
- if ($files == $file) unset($this->roots[$class][$i]);
- }
- // if this is a child, remove it from the list of child classes of its parent
- if ($db->getExtends()) unset($this->classchildrenbyfile[$db->getExtends()][$file]);
- return;
- }
- }
- }
- if ($render->packageoutput)
- {
- if (!in_array($db->docblock->package,$render->packageoutput))
- {
- if (isset($this->varsbyfile[$file]) && isset($this->varsbyfile[$file][$class]))
- {
- unset($this->varsbyfile[$file][$class]);
- }
- if (isset($this->methodsbyfile[$file]) && isset($this->methodsbyfile[$file][$class]))
- {
- unset($this->methodsbyfile[$file][$class]);
- }
- if (isset($this->constsbyfile[$file]) && isset($this->constsbyfile[$file][$class]))
- {
- unset($this->constsbyfile[$file][$class]);
- }
- $this->classesbyfile[$file][$class]->ignore = true;
- if (isset($this->roots[$class]))
- foreach($this->roots[$class] as $i => $files)
- {
- if ($files == $file) unset($this->roots[$class][$i]);
- }
- if ($db->getExtends()) unset($this->classchildrenbyfile[$db->getExtends()][$file]);
- return;
- }
- }
- $this->setClassParent($class,$file);
- $db = $this->classesbyfile[$file][$class];
- if ($furb && !is_array($db->parent))
- {
-// debug("furb adding $class $file to roots");
- $this->roots[$class][] = $file;
- }
- // fix for 591396
- if (!$db->docblock->getExplicitPackage())
- {
- $a = $render->proceduralpages->pagepackages[$file];
- if ($a[0] != $phpDocumentor_DefaultPackageName)
- {
- // inherit page package
- $this->classesbyfile[$file][$class]->docblock->package = $a[0];
- }
- }
- if ($this->classesbyfile[$file][$class]->docblock->package == $render->proceduralpages->pagepackages[$file][0])
- {
- if ($this->classesbyfile[$file][$class]->docblock->subpackage == '')
- $this->classesbyfile[$file][$class]->docblock->subpackage = $render->proceduralpages->pagepackages[$file][1];
- }
- $db = $this->classesbyfile[$file][$class];
- $render->addPackageParent($db);
- $render->addPageIfNecessary($file, $db);
- if ($access = $db->docblock->getKeyword('access'))
- {
- if (!is_string($access) && is_object($access)) $access = $access->getString();
- if (!is_string($access)) $access = 'public';
- if (($access == 'private') && (!$render->parsePrivate))
- {
- if (isset($this->varsbyfile[$file]) && isset($this->varsbyfile[$file][$class]))
- foreach($this->varsbyfile[$file][$class] as $i => $vr)
- {
- $vr->docblock->addKeyword('access','private');
- $this->varsbyfile[$file][$class][$i] = $vr;
- }
- if (isset($this->methodsbyfile[$file]) && isset($this->methodsbyfile[$file][$class]))
- foreach($this->methodsbyfile[$file][$class] as $i => $vr)
- {
- $vr->docblock->addKeyword('access','private');
- $this->methodsbyfile[$file][$class][$i] = $vr;
- }
- if (isset($this->constsbyfile[$file]) && isset($this->constsbyfile[$file][$class]))
- foreach($this->constsbyfile[$file][$class] as $i => $vr)
- {
- $vr->docblock->addKeyword('access','private');
- $this->constsbyfile[$file][$class][$i] = $vr;
- }
- }
- }
- $this->classpathpackages[$class][$file] = array($db->docblock->package,$db->docblock->subpackage);
- if ($db->docblock->getExplicitPackage())
- $render->proceduralpages->addClassPackageToFile($file,$db->docblock->package,$db->docblock->subpackage);
- $render->addElementToPage($db,$file);
- if (isset($this->varsbyfile[$file]) && isset($this->varsbyfile[$file][$class]))
- foreach($this->varsbyfile[$file][$class] as $i => $vr)
- {
- $vr->docblock->package = $db->docblock->package;
- $vr->docblock->subpackage = $db->docblock->subpackage;
- $render->addElementToPage($vr,$file);
- $render->addUses($vr,$file);
- $this->varsbyfile[$file][$class][$i] = $vr;
- $this->vars[$db->docblock->package][$class][$vr->getName()] = $vr;
- }
- if (isset($this->methodsbyfile[$file]) && isset($this->methodsbyfile[$file][$class]))
- foreach($this->methodsbyfile[$file][$class] as $i => $vr)
- {
- $vr->docblock->package = $db->docblock->package;
- $vr->docblock->subpackage = $db->docblock->subpackage;
- $render->addElementToPage($vr,$file);
- $render->addUses($vr,$file);
- $this->methodsbyfile[$file][$class][$i] = $vr;
- $this->methods[$db->docblock->package][$class][$vr->getName()] = $vr;
- }
- if (isset($this->constsbyfile[$file]) && isset($this->constsbyfile[$file][$class]))
- foreach($this->constsbyfile[$file][$class] as $i => $vr)
- {
- $vr->docblock->package = $db->docblock->package;
- $vr->docblock->subpackage = $db->docblock->subpackage;
- $render->addElementToPage($vr,$file);
- $render->addUses($vr,$file);
- $this->constsbyfile[$file][$class][$i] = $vr;
- $this->methods[$db->docblock->package][$class][$vr->getName()] = $vr;
- }
- $this->classpackages[$class][] = array($db->docblock->package,$db->docblock->subpackage);
- if (is_array($db->parent))
- $this->classparents[$db->docblock->package][$class] = $db->parent[1];
- else
- $this->classparents[$db->docblock->package][$class] = $db->getExtends();
- if (is_array($db->parent))
- {
- $z = $this->getClass($db->parent[1],$db->parent[0]);
- $this->classchildren[$z->docblock->package][$db->parent[1]][] = $db;
- }
- if (isset($this->classchildrenbyfile[$class]))
- {
- foreach($this->classchildrenbyfile[$class] as $childfile => $other)
- {
- // test 1, inherits in same file (must be same package)
- if ($childfile == $file)
- {
- foreach($other as $child => $packages)
- {
-// debug("parent $class same file $child");
- $this->processChild($render,$child,$childfile);
- $x = $this->getClass($child,$childfile);
- if ($x->docblock->package != $GLOBALS['phpDocumentor_DefaultPackageName'])
- {
- // child package need root for class trees
- if ($x->docblock->package != $db->docblock->package)
- {
-// debug("adding $child in $childfile 1");
- $this->roots[$child][] = $childfile;
- }
- }
- }
- } else
- {
- // test 2, different file, same package
- foreach($other as $child => $packages)
- {
- for($j=0; $j<count($packages); $j++)
- {
- if ($this->classesbyfile[$file][$class]->docblock->package == $packages[$j])
- {
- $this->processChild($render,$child,$childfile);
-// debug("$childfile diff file $child, parent $class, same package ".$packages[$j]);
- } else
- {
- // test 3, different file, different package, only 1 parent is possible
- if (isset($this->classesbynamefile[$child]))
- {
- // 1 possible parent
- if (count($this->classesbynamefile[$class]) == 1)
- {
-// debug("$childfile diff file $child, diff package, 1 possible parent root $class");
- $this->processChild($render,$child,$childfile);
- $x = $this->getClass($child,$childfile);
- if ($x->docblock->package != $GLOBALS['phpDocumentor_DefaultPackageName'])
- {
- // child package need root for class trees
- if ($x->docblock->package != $db->docblock->package)
- {
-// debug("adding roots $child in $childfile 2");
- $this->roots[$child][] = $childfile;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- /**
- * Get the parserClass representation of a class from its name and file
- * @return parserClass
- * @param string $class classname
- * @param string $file file classname is located in
- */
- function &getClass($class, $file)
- {
-// debug("getClass called with class $class file $file");
- return $this->classesbyfile[$file][$class];
- }
-
- /**
- * Used by {@link parserData::getClasses()} to retrieve classes defined in file $path
- *
- * retrieves the array entry from {@link $classesbyfile} for $path
- * @param string $path full path to filename
- * @return mixed returns false if no classes defined in the file, otherwise returns an array of {@link parserClass}es
- */
- function getClassesInPath($path)
- {
- if (!isset($this->classesbyfile[$path])) return false;
- return $this->classesbyfile[$path];
- }
-
- /**
- * called by {@link parserClass::hasMethods()}. Should not be directly called
- * @access private
- * @param string $file
- * @param string $class
- */
- function hasMethods($file,$class)
- {
- return isset($this->methodsbyfile[$file][$class]);
- }
-
- /**
- * called by {@link parserClass::hasConsts()}. Should not be directly called
- * @access private
- * @param string $file
- * @param string $class
- */
- function hasConsts($file,$class)
- {
- return isset($this->constsbyfile[$file][$class]);
- }
-
- /**
- * called by {@link parserClass::hasVars()}. Should not be directly called
- * @access private
- * @param string $file
- * @param string $class
- */
- function hasVars($file, $class)
- {
- return isset($this->varsbyfile[$file][$class]);
- }
-
- /**
- * called by {@link parserClass::hasMethod()}. Should not be directly called
- * @param string $file
- * @param string $class
- * @param string $name method name
- * @access private
- */
- function hasMethod($class, $file, $name)
- {
- if (!$this->hasMethods($file, $class)) return false;
- for($i=0; $i<count($this->methodsbyfile[$file][$class]); $i++)
- {
- if ($this->methodsbyfile[$file][$class][$i]->getName() == $name) return true;
- }
- return false;
- }
-
- /**
- * called by {@link parserClass::hasVar()}. Should not be directly called
- * @param string $file
- * @param string $class
- * @param string $name var name
- * @access private
- */
- function hasVar($class, $file, $name)
- {
- if (!$this->hasVars($file, $class)) return false;
- for($i=0; $i<count($this->varsbyfile[$file][$class]); $i++)
- {
- if ($this->varsbyfile[$file][$class][$i]->getName() == $name) return true;
- }
- return false;
- }
-
- /**
- * called by {@link parserClass::hasConst()}. Should not be directly called
- * @param string $file
- * @param string $class
- * @param string $name var name
- * @access private
- */
- function hasConst($class, $file, $name)
- {
- if (!$this->hasConsts($file, $class)) return false;
- for($i=0; $i<count($this->constsbyfile[$file][$class]); $i++)
- {
- if ($this->constsbyfile[$file][$class][$i]->getName() == $name) return true;
- }
- return false;
- }
-
- /**
- * called by {@link parserClass::getMethods()}. Should not be directly called
- * @access private
- * @param string $class
- * @param string $file
- */
- function &getMethods($class, $file)
- {
- if (!isset($this->methodsbyfile[$file][$class])) return false;
- return $this->methodsbyfile[$file][$class];
- }
-
- /**
- * called by {@link parserClass::getVars()}. Should not be directly called
- * @access private
- * @param string $class
- * @param string $file
- */
- function &getVars($class, $file)
- {
- if (!isset($this->varsbyfile[$file][$class])) return false;
- return $this->varsbyfile[$file][$class];
- }
-
- /**
- * called by {@link parserClass::getConsts()}. Should not be directly called
- * @access private
- * @param string $class
- * @param string $file
- */
- function &getConsts($class, $file)
- {
- if (!isset($this->constsbyfile[$file][$class])) return false;
- return $this->constsbyfile[$file][$class];
- }
-
- /**
- * called by {@link parserClass::getMethod()}. Should not be directly called
- * @param string $class
- * @param string $file
- * @param string $name method name
- * @access private
- */
- function getMethod($class, $file, $name)
- {
- if (!$this->hasMethod($class, $file, $name)) return false;
- for($i=0; $i<count($this->methodsbyfile[$file][$class]); $i++)
- {
- if ($this->methodsbyfile[$file][$class][$i]->getName() == $name) return $this->methodsbyfile[$file][$class][$i];
- }
- }
-
- /**
- * called by {@link parserClass::getVar()}. Should not be directly called
- * @param string $class
- * @param string $file
- * @param string $name var name
- * @access private
- */
- function getVar($class, $file, $name)
- {
- if (!$this->hasVar($class, $file, $name)) return false;
- for($i=0; $i<count($this->varsbyfile[$file][$class]); $i++)
- {
- if ($this->varsbyfile[$file][$class][$i]->getName() == $name) return $this->varsbyfile[$file][$class][$i];
- }
- }
-
- /**
- * called by {@link parserClass::getConst()}. Should not be directly called
- * @param string $class
- * @param string $file
- * @param string $name var name
- * @access private
- */
- function getConst($class, $file, $name)
- {
- if (!$this->hasConst($class, $file, $name)) return false;
- for($i=0; $i<count($this->constsbyfile[$file][$class]); $i++)
- {
- if ($this->constsbyfile[$file][$class][$i]->getName() == $name) return $this->constsbyfile[$file][$class][$i];
- }
- }
-
- /**
- * Search for a class in a package
- * @return mixed returns false if no class in $package, otherwise returns a {@link parserClass}
- * @param string $class classname
- * @param string $package package classname is in
- */
- function &getClassByPackage($class,$package)
- {
- if (!isset($this->classesbynamefile[$class]))
- {
-// addWarning(PDERROR_CLASS_NOT_IN_PACKAGE,$class,$package); // removed, too many warnings, not very useful
- return false;
- }
- for($i=0; $i < count($this->classesbynamefile[$class]); $i++)
- {
- $cls = $this->classesbyfile[$this->classesbynamefile[$class][$i]][$class];
- $pkg = $cls->getPackage();
- if ($pkg == $package)
- return $cls;
- }
-// addWarning(PDERROR_CLASS_NOT_IN_PACKAGE,$class,$package);
- return false;
- }
-
- /**
- * Find the parent class of a class in file $file
- * uses 3 tests to find the parent classname:
- * <ol>
- * <li>only one class with the parent classname</li>
- * <li>more than one class, but only one in the same file as the child</li>
- * <li>only one parent class in the same package as the child</li>
- * </ol>
- * @return mixed false if no parent class, a string if no parent class found by that name,
- * and an array(file parentclass is in,parentclassname)
- */
- function getParentClass($class,$file)
- {
- if (!isset($this->classesbyfile[$file][$class]))
- {
- return false;
- }
- $element = $this->classesbyfile[$file][$class];
- if (!($ex = $element->getExtends())) return false;
- // first check to see if there is one and only one class with the parent class's name
- if (isset($this->classesbynamefile[$ex]))
- {
- if (count($this->classesbynamefile[$ex]) == 1)
- {
- if ($this->classesbyfile[$this->classesbynamefile[$ex][0]][$ex]->ignore) return $ex;
- return array($this->classesbynamefile[$ex][0],$ex);
- } else
- {
- // next check to see if there is a parent class in the same file
- if (isset($this->classesbyfile[$file][$ex]))
- {
- if ($this->classesbyfile[$file][$ex]->ignore) return $ex;
- return array($file,$ex);
- }
- // next check to see if there is only one package used in the file, try to resolve it that way
- if (isset($this->classpackagebyfile[$file]))
- {
- if (count($this->classpackagebyfile[$file]) == 1)
- {
- for($i=0;$i<count($this->classesbynamefile[$ex]);$i++)
- {
- if ($this->classesbyfile[$this->classesbynamefile[$ex][$i]][$ex]->getPackage() == $this->classpackagebyfile[$file][0])
- {
- if ($this->classesbyfile[$this->classesbynamefile[$ex][$i]][$ex]->ignore) return $ex;
- return array($this->classesbynamefile[$ex][$i],$ex);
- }
- }
- }
- }
- // name conflict
- addWarning(PDERROR_INHERITANCE_CONFLICT, $class, $file, $ex);
- return $ex;
- }
- } else
- {
- addWarning(PDERROR_PARENT_NOT_FOUND, $class, $ex);
- return $ex;
- }
- }
-
- /**
- * Get a list of all root classes indexed by package. Used to generate
- * class trees by {@link Converter}
- * @return array array(package => array(rootclassname, rootclassname,...),...)
- */
- function getRoots()
- {
- $roots = array();
- foreach($this->roots as $class => $files)
- {
- if (count($files))
- {
- foreach($files as $i => $boofou)
- {
- $x = $this->getClass($class,$files[$i]);
- $roots[$x->getPackage()][] = $class;
- }
- }
- }
- foreach($roots as $package => $root)
- {
- usort($roots[$package],"strnatcasecmp");
- }
- return $roots;
- }
-
- /**
- * Get all classes confirmed in parsing to be descended class $parclass in file $file
- * @return mixed either false if no children, or array of format
- * array(childname => childfile,childname2 => childfile2,...)
- * @param string $parclass name of parent class
- * @param string $file file parent class is found in
- * @see parserClass::getChildClassList()
- * @uses $definitechild
- */
- function getDefiniteChildren($parclass,$file)
- {
- if (isset($this->definitechild[$parclass][$file])) return $this->definitechild[$parclass][$file];
- return false;
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converter.inc b/buildscripts/PhpDocumentor/phpDocumentor/Converter.inc
deleted file mode 100644
index 5b499d65..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converter.inc
+++ /dev/null
@@ -1,5189 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Base class for all output converters.
- * @package Converters
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: Converter.inc,v 1.5 2005/11/28 07:27:59 cellog Exp $
- */
-/**
- * Smarty template files
- */
-include_once("phpDocumentor/Smarty-2.6.0/libs/Smarty.class.php");
-/**
- * Base class for all output converters.
- *
- * The Converter marks the final stage in phpDocumentor. phpDocumentor works
- * in this order:
- *
- * <pre>Parsing => Intermediate Parsing organization => Conversion to output</pre>
- *
- * A Converter takes output from the {@link phpDocumentor_IntermediateParser} and
- * converts it to output. With version 1.2, phpDocumentor includes a variety
- * of output converters:
- * <ul>
- * <li>{@link HTMLframesConverter}</li>
- * <li>{@link HTMLSmartyConverter}</li>
- * <li>{@link PDFdefaultConverter}</li>
- * <li>{@link CHMdefaultConverter}</li>
- * <li>{@link CSVdia2codeConverter}</li>
- * <li>{@link XMLDocBookConverter}</li>
- * </ul>
- * {@internal
- * The converter takes output directly from {@link phpDocumentor_IntermediateParser}
- * and using {@link walk()} or {@link walk_everything} (depending on the value of
- * {@link $sort_absolutely_everything}) it "walks" over an array of phpDocumentor elements.}}
- *
- * @package Converters
- * @abstract
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: Converter.inc,v 1.5 2005/11/28 07:27:59 cellog Exp $
- */
-class Converter
-{
- /**
- * output format of this converter
- *
- * in Child converters, this will match the first part of the -o command-line
- * as in -o HTML:frames:default "HTML"
- * @tutorial phpDocumentor.howto.pkg#using.command-line.output
- * @var string
- */
- var $outputformat = 'Generic';
- /**
- * package name currently being converted
- * @var string
- */
- var $package = 'default';
- /**
- * subpackage name currently being converted
- * @var string
- */
- var $subpackage = '';
- /**
- * set to a classname if currently parsing a class, false if not
- * @var string|false
- */
- var $class = false;
- /**#@+
- * @access private
- */
- /**
- * the workhorse of linking.
- *
- * This array is an array of link objects of format:
- * [package][subpackage][eltype][elname] = descendant of {@link abstractLink}
- * eltype can be page|function|define|class|method|var
- * if eltype is method or var, the array format is:
- * [package][subpackage][eltype][class][elname]
- * @var array
- * @see functionLink, pageLink, classLink, defineLink, methodLink, varLink, globalLink
- */
- var $links = array();
-
- /**
- * the workhorse of linking, with allowance for support of multiple
- * elements in different files.
- *
- * This array is an array of link objects of format:
- * [package][subpackage][eltype][file][elname] = descendant of {@link abstractLink}
- * eltype can be function|define|class|method|var
- * if eltype is method or var, the array format is:
- * [package][subpackage][eltype][file][class][elname]
- * @var array
- * @see functionLink, pageLink, classLink, defineLink, methodLink, varLink, globalLink
- */
- var $linkswithfile = array();
- /**#@-*/
- /**
- * set to value of -po commandline
- * @tutorial phpDocumentor.howto.pkg#using.command-line.packageoutput
- * @var mixed
- */
- var $package_output;
-
- /**
- * name of current page being converted
- * @var string
- */
- var $page;
-
- /**
- * path of current page being converted
- * @var string
- */
- var $path;
-
- /**
- * template for the procedural page currently being processed
- * @var Smarty
- */
- var $page_data;
-
- /**
- * template for the class currently being processed
- * @var Smarty
- */
- var $class_data;
-
- /**
- * current procedural page being processed
- * @var parserPage
- */
- var $curpage;
- /**
- * alphabetical index of all elements sorted by package, subpackage, page,
- * and class.
- * @var array Format: array(package => array(subpackage => array('page'|'class' => array(path|classname => array(element, element,...)))))
- * @uses $sort_absolutely_everything if true, then $package_elements is used,
- * otherwise, the {@link ParserData::$classelements} and
- * {@link ParserData::$pageelements} variables are used
- */
- var $package_elements = array();
- /**
- * alphabetical index of all elements
- *
- * @var array Format: array(first letter of element name => array({@link parserElement} or {@link parserPage},...))
- * @see formatIndex(), HTMLframesConverter::formatIndex()
- */
- var $elements = array();
- /**
- * alphabetized index of procedural pages by package
- *
- * @see $leftindex
- * @var array Format: array(package => array(subpackage => array({@link pageLink} 1,{@link pageLink} 2,...)
- */
- var $page_elements = array();
- /**
- * alphabetized index of defines by package
- *
- * @see $leftindex
- * @var array Format: array(package => array(subpackage => array({@link defineLink} 1,{@link defineLink} 2,...)
- */
- var $define_elements = array();
- /**
- * alphabetized index of classes by package
- *
- * @see $leftindex
- * @var array Format: array(package => array(subpackage => array({@link classLink} 1,{@link classLink} 2,...)
- */
- var $class_elements = array();
- /**
- * alphabetized index of global variables by package
- *
- * @see $leftindex
- * @var array Format: array(package => array(subpackage => array({@link globalLink} 1,{@link globalLink} 2,...)
- */
- var $global_elements = array();
- /**
- * alphabetized index of functions by package
- *
- * @see $leftindex
- * @var array Format: array(package => array(subpackage => array({@link functionLink} 1,{@link functionLink} 2,...)
- */
- var $function_elements = array();
- /**
- * alphabetical index of all elements, indexed by package/subpackage
- *
- * @var array Format: array(first letter of element name => array({@link parserElement} or {@link parserPage},...))
- * @see formatPkgIndex(), HTMLframesConverter::formatPkgIndex()
- */
- var $pkg_elements = array();
-
- /**
- * alphabetical index of all elements on a page by package/subpackage
- *
- * The page itself has a link under ###main
- * @var array Format: array(package => array(subpackage => array(path => array({@link abstractLink} descendant 1, ...)))
- * @see formatLeftIndex()
- */
- var $page_contents = array();
-
- /**
- * This determines whether the {@link $page_contents} array should be sorted by element type as well as alphabetically by name
- * @see sortPageContentsByElementType()
- * @var boolean
- */
- var $sort_page_contents_by_type = false;
- /**
- * This is used if the content must be passed in the order it should be read, i.e. by package, procedural then classes
- *
- * This fixes bug 637921, and is used by {@link PDFdefaultConverter}
- */
- var $sort_absolutely_everything = false;
- /**
- * alphabetical index of all methods and vars in a class by package/subpackage
- *
- * The class itself has a link under ###main
- * @var array
- * Format:<pre>
- * array(package =>
- * array(subpackage =>
- * array(path =>
- * array(class =>
- * array({@link abstractLink} descendant 1, ...
- * )
- * )
- * )
- * )</pre>
- * @see formatLeftIndex()
- */
- var $class_contents = array();
- /**
- * controls processing of elements marked private with @access private
- *
- * defaults to false. Set with command-line --parseprivate or -pp
- * @var bool
- */
- var $parseprivate;
- /**
- * controls display of progress information while parsing.
- *
- * defaults to false. Set to true for cron jobs or other situations where no visual output is necessary
- * @var bool
- */
- var $quietmode;
-
- /**
- * directory that output is sent to. -t command-line sets this.
- * @tutorial phpDocumentor.howto.pkg#using.command-line.target
- */
- var $targetDir = '';
-
- /**
- * Directory that the template is in, relative to phpDocumentor root directory
- * @var string
- */
- var $templateDir = '';
-
- /**
- * Directory that the smarty templates are in
- * @var string
- */
- var $smarty_dir = '';
-
- /**
- * Name of the template, from last part of -o
- * @tutorial phpDocumentor.howto.pkg#using.command-line.output
- * @var string
- */
- var $templateName = '';
-
- /**
- * full path of the current file being converted
- */
- var $curfile;
-
- /**
- * All class information, organized by path, and by package
- * @var Classes
- */
- var $classes;
-
- /**
- * Hierarchy of packages
- *
- * Every package that contains classes may have parent or child classes
- * in other packages. In other words, this code is legal:
- *
- * <code>
- * /**
- * * @package one
- * * /
- * class one {}
- *
- * /**
- * * @package two
- * * /
- * class two extends one {}
- * </code>
- *
- * In this case, package one is a parent of package two
- * @var array
- * @see phpDocumentor_IntermediateParser::$package_parents
- */
- var $package_parents;
-
- /**
- * Packages associated with categories
- *
- * Used by the XML:DocBook/peardoc2 converter, and available to others, to
- * group many packages into categories
- * @see phpDocumentor_IntermediateParser::$packagecategories
- * @var array
- */
- var $packagecategories;
-
- /**
- * All packages encountered in parsing
- * @var array
- * @see phpDocumentor_IntermediateParser::$all_packages
- */
- var $all_packages;
-
- /**
- * A list of files that have had source code generated
- * @var array
- */
- var $sourcePaths = array();
-
- /**
- * Controls which of the one-element-only indexes are generated.
- *
- * Generation of these indexes for large packages is time-consuming. This is an optimization feature. An
- * example of how to use this is in {@link HTMLframesConverter::$leftindex}, and in {@link HTMLframesConverter::formatLeftIndex()}.
- * These indexes are intended for use as navigational aids through documentation, but can be used for anything by converters.
- * @see $class_elements, $page_elements, $function_elements, $define_elements, $global_elements
- * @see formatLeftIndex()
- * @var array
- */
- var $leftindex = array('classes' => true, 'pages' => true, 'functions' => true, 'defines' => true, 'globals' => true);
-
- /** @access private */
- var $killclass = false;
- /**
- * @var string
- * @see phpDocumentor_IntermediateParser::$title
- */
- var $title = 'Generated Documentation';
-
- /**
- * Options for each template, parsed from the options.ini file in the template base directory
- * @tutorial phpDocumentor/tutorials.pkg#conversion.ppage
- * @var array
- */
- var $template_options;
-
- /**
- * Tutorials and Extended Documentation parsed from a tutorials/package[/subpackage] directory
- * @tutorial tutorials.pkg
- * @access private
- */
- var $tutorials = array();
-
- /**
- * tree-format structure of tutorials and their child tutorials, if any
- * @var array
- * @access private
- */
- var $tutorial_tree = false;
-
- /**
- * list of tutorials that have already been processed. Used by @link _setupTutorialTree()
- * @var array
- * @access private
- */
- var $processed_tutorials;
-
- /**
- * List of all @todo tags and a link to the element with the @todo
- *
- * Format: array(package => array(link to element, array(todo {@link parserTag},...)),...)
- * @tutorial tags.todo.pkg
- * @var array
- */
- var $todoList = array();
-
- /**
- * Initialize Converter data structures
- * @param array {@link $all_packages} value
- * @param array {@link $package_parents} value
- * @param Classes {@link $classes} value
- * @param ProceduralPages {@link $proceduralpages} value
- * @param array {@link $package_output} value
- * @param boolean {@link $parseprivate} value
- * @param boolean {@link $quietmode} value
- * @param string {@link $targetDir} value
- * @param string {@link $templateDir} value
- * @param string (@link $title} value
- */
- function Converter(&$allp, &$packp, &$classes, &$procpages, $po, $pp, $qm, $targetDir, $template, $title)
- {
- $this->all_packages = $allp;
- $this->package_parents = $packp;
- $this->package = $GLOBALS['phpDocumentor_DefaultPackageName'];
- $this->proceduralpages = &$procpages;
- $this->package_output = $po;
- if (is_array($po))
- {
- $a = $po[0];
- $this->all_packages = array_flip($po);
- $this->all_packages[$a] = 1;
- }
- $this->parseprivate = $pp;
- $this->quietmode = $qm;
- $this->classes = &$classes;
- $this->roots = $classes->getRoots();
- $this->title = $title;
- $this->setTemplateDir($template);
- $this->setTargetdir($targetDir);
- }
-
- /**
- * Called by IntermediateParser after creation
- * @access private
- */
- function setTutorials($tutorials)
- {
- $this->tutorials = $tutorials;
- }
-
- /**
- * @param pkg|cls|proc the tutorial type to search for
- * @param tutorial name
- * @param string package name
- * @param string subpackage name, if any
- * @return false|parserTutorial if the tutorial exists, return it
- */
- function hasTutorial($type, $name, $package, $subpackage = '')
- {
- if (isset($this->tutorials[$package][$subpackage][$type][$name . '.' . $type]))
- return $this->tutorials[$package][$subpackage][$type][$name . '.' . $type];
- return false;
- }
-
- /**
- * Called by {@link walk()} while converting, when the last class element
- * has been parsed.
- *
- * A Converter can use this method in any way it pleases. HTMLframesConverter
- * uses it to complete the template for the class and to output its
- * documentation
- * @see HTMLframesConverter::endClass()
- * @abstract
- */
- function endClass()
- {
- }
-
- /**
- * Called by {@link walk()} while converting, when the last procedural page
- * element has been parsed.
- *
- * A Converter can use this method in any way it pleases. HTMLframesConverter
- * uses it to complete the template for the procedural page and to output its
- * documentation
- * @see HTMLframesConverter::endClass()
- * @abstract
- */
- function endPage()
- {
- }
-
- /**
- * Called by {@link walk()} while converting.
- *
- * This method is intended to be the place that {@link $pkg_elements} is
- * formatted for output.
- * @see HTMLframesConverter::formatPkgIndex()
- * @abstract
- */
- function formatPkgIndex()
- {
- }
-
- /**
- * Called by {@link walk()} while converting.
- *
- * This method is intended to be the place that {@link $elements} is
- * formatted for output.
- * @see HTMLframesConverter::formatIndex()
- * @abstract
- */
- function formatIndex()
- {
- }
-
- /**
- * Called by {@link walk()} while converting.
- *
- * This method is intended to be the place that any of
- * {@link $class_elements, $function_elements, $page_elements},
- * {@link $define_elements}, and {@link $global_elements} is formatted for
- * output, depending on the value of {@link $leftindex}
- * @see HTMLframesConverter::formatLeftIndex()
- * @abstract
- */
- function formatLeftIndex()
- {
- }
-
- /**
- * Called by {@link parserSourceInlineTag::stringConvert()} to allow
- * converters to format the source code the way they'd like.
- *
- * default returns it unchanged (html with xhtml tags)
- * @param string output from highlight_string() - use this function to
- * reformat the returned data for Converter-specific output
- * @return string
- * @deprecated in favor of tokenizer-based highlighting. This will be
- * removed for 2.0
- */
- function unmangle($sourcecode)
- {
- return $sourcecode;
- }
-
- /**
- * Initialize highlight caching
- */
- function startHighlight()
- {
- $this->_highlightCache = array(false, false);
- $this->_appendHighlight = '';
- }
-
- function getHighlightState()
- {
- return $this->_highlightCache;
- }
-
- function _setHighlightCache($type, $token)
- {
- $test = ($this->_highlightCache[0] === $type && $this->_highlightCache[1] == $token);
- if (!$test) {
- $this->_appendHighlight = $this->flushHighlightCache();
- } else {
- $this->_appendHighlight = '';
- }
- $this->_highlightCache = array($type, $token);
- return $test;
- }
-
- /**
- * Return the close text for the current token
- * @return string
- */
- function flushHighlightCache()
- {
- $hc = $this->_highlightCache;
- $this->_highlightCache = array(false, false);
- if ($hc[0]) {
- if (!isset($this->template_options[$hc[0]]['/'.$hc[1]])) {
- return '';
- }
- return $this->template_options[$hc[0]]['/'.$hc[1]];
- }
- return '';
- }
-
- /**
- * Used to allow converters to format the source code the way they'd like.
- *
- * default returns it unchanged. Mainly used by the {@link HighlightParser}
- * {@internal
- * The method takes information from options.ini, the template options
- * file, specifically the [highlightSourceTokens] and [highlightSource]
- * sections, and uses them to enclose tokens.
- *
- * {@source}}}
- * @param integer token value from {@link PHP_MANUAL#tokenizer tokenizer constants}
- * @param string contents of token
- * @param boolean whether the contents are preformatted or need modification
- * @return string
- */
- function highlightSource($token, $word, $preformatted = false)
- {
- if ($token !== false)
- {
- if (!$preformatted) $word = $this->postProcess($word);
- if (isset($this->template_options['highlightSourceTokens'][token_name($token)]))
- {
- if ($this->_setHighlightCache('highlightSourceTokens', token_name($token))) {
- return $word;
- }
- $e = $this->_appendHighlight;
- return $e . $this->template_options['highlightSourceTokens'][token_name($token)] . $word;
- } else
- {
- $this->_setHighlightCache(false, false);
- $e = $this->_appendHighlight;
- return $e . $word;
- }
- } else
- {
- if (isset($this->template_options['highlightSource'][$word]))
- {
- $newword = ($preformatted ? $word : $this->postProcess($word));
- if ($this->_setHighlightCache('highlightSource', $word)) {
- return $newword;
- }
- $e = $this->_appendHighlight;
- return $e . $this->template_options['highlightSource'][$word] . $newword;
- } else
- {
- $this->_setHighlightCache(false, false);
- $e = $this->_appendHighlight;
- return $e . ($preformatted ? $word : $this->postProcess($word));
- }
- }
- }
-
- /**
- * Used to allow converters to format the source code of DocBlocks the way
- * they'd like.
- *
- * default returns it unchanged. Mainly used by the {@link HighlightParser}
- * {@internal
- * The method takes information from options.ini, the template options
- * file, specifically the [highlightDocBlockSourceTokens] section, and uses
- * it to enclose tokens.
- *
- * {@source}}}
- * @param string name of docblock token type
- * @param string contents of token
- * @param boolean whether the contents are preformatted or need modification
- * @return string
- */
- function highlightDocBlockSource($token, $word, $preformatted = false)
- {
- if (empty($word)) {
- $this->_setHighlightCache(false, false);
- $e = $this->_appendHighlight;
- return $e . $word;
- }
- if (isset($this->template_options['highlightDocBlockSourceTokens'][$token]))
- {
- if (!$preformatted) $word = $this->postProcess($word);
- if ($this->_setHighlightCache('highlightDocBlockSourceTokens', $token)) {
- return $word;
- }
- $e = $this->_appendHighlight;
- return $e . $this->template_options['highlightDocBlockSourceTokens'][$token] . $word;
- } else {
- $this->_setHighlightCache(false, false);
- $e = $this->_appendHighlight;
- return $e . ($preformatted ? $word : $this->postProcess($word));
- }
- }
-
- /**
- * Used to allow converters to format the source code of DocBlocks the way
- * they'd like.
- *
- * default returns it unchanged. Mainly used by the {@link HighlightParser}
- * {@internal
- * The method takes information from options.ini, the template options
- * file, specifically the [highlightDocBlockSourceTokens] section, and uses
- * it to enclose tokens.
- *
- * {@source}}}
- * @param string name of docblock token type
- * @param string contents of token
- * @param boolean whether the contents are preformatted or need modification
- * @return string
- */
- function highlightTutorialSource($token, $word, $preformatted = false)
- {
- if (empty($word)) {
- $this->_setHighlightCache(false, false);
- $e = $this->_appendHighlight;
- return $e . $word;
- }
- if (isset($this->template_options['highlightTutorialSourceTokens'][$token]))
- {
- if (!$preformatted) $word = $this->postProcess($word);
- if ($this->_setHighlightCache('highlightTutorialSourceTokens', $token)) {
- return $word;
- }
- $e = $this->_appendHighlight;
- return $e . $this->template_options['highlightTutorialSourceTokens'][$token] . $word;
- } else {
- $this->_setHighlightCache(false, false);
- $e = $this->_appendHighlight;
- return $e . ($preformatted ? $word : $this->postProcess($word));
- }
- }
-
- /**
- * Called by {@link parserReturnTag::Convert()} to allow converters to
- * change type names to desired formatting
- *
- * Used by {@link XMLDocBookConverter::type_adjust()} to change true and
- * false to the peardoc2 values
- * @param string
- * @return string
- */
- function type_adjust($typename)
- {
- return $typename;
- }
-
- /**
- * Used to convert the {@}example} inline tag in a docblock.
- *
- * By default, this just wraps ProgramExample
- * @see XMLDocBookpeardoc2Converter::exampleProgramExample
- * @param string
- * @param boolean true if this is to highlight a tutorial <programlisting>
- * @return string
- */
- function exampleProgramExample($example, $tutorial = false, $inlinesourceparse = null/*false*/,
- $class = null/*false*/, $linenum = null/*false*/, $filesourcepath = null/*false*/)
- {
- return $this->ProgramExample($example, $tutorial, $inlinesourceparse, $class, $linenum, $filesourcepath);
- }
-
- /**
- * Used to convert the <<code>> tag in a docblock
- * @param string
- * @param boolean true if this is to highlight a tutorial <programlisting>
- * @return string
- */
- function ProgramExample($example, $tutorial = false, $inlinesourceparse = null/*false*/,
- $class = null/*false*/, $linenum = null/*false*/, $filesourcepath = null/*false*/)
- {
- if (tokenizer_ext)
- {
- $e = $example;
- if (!is_array($example))
- {
- $obj = new phpDocumentorTWordParser;
- $obj->setup($example);
- $e = $obj->getFileSource();
- if (!isset($e[0]) || !is_array($e[0][0]) || $e[0][0][0] != T_OPEN_TAG)
- {
- $example = "<?php\n".$example;
- $obj->setup($example);
- $e = $obj->getFileSource();
- unset($e[0]);
- $e = array_values($e);
- }
- unset($obj);
- }
- $saveclass = $this->class;
- $parser = new phpDocumentor_HighlightParser;
- if (!isset($inlinesourceparse))
- {
- $example = $parser->parse($e, $this, true); // force php mode
- } else
- {
- if (isset($filesourcepath))
- {
- $example = $parser->parse($e, $this, $inlinesourceparse, $class, $linenum, $filesourcepath);
- } elseif (isset($linenum))
- {
- $example = $parser->parse($e, $this, $inlinesourceparse, $class, $linenum);
- } elseif (isset($class))
- {
- $example = $parser->parse($e, $this, $inlinesourceparse, $class);
- } else
- {
- $example = $parser->parse($e, $this, $inlinesourceparse);
- }
- }
- $this->class = $saveclass;
- } else
- {
- $example = $this->postProcess($example);
- }
-
- if ($tutorial)
- {
- return $example;
- }
-
- if (!isset($this->template_options['desctranslate'])) return $example;
- if (!isset($this->template_options['desctranslate']['code'])) return $example;
- $example = $this->template_options['desctranslate']['code'] . $example;
- if (!isset($this->template_options['desctranslate']['/code'])) return $example;
- return $example . $this->template_options['desctranslate']['/code'];
- }
-
- /**
- * @param string
- */
- function TutorialExample($example)
- {
- $parse = new phpDocumentor_TutorialHighlightParser;
- return $parse->parse($example, $this);
- }
-
- /**
- * Used to convert the contents of <<li>> in a docblock
- * @param string
- * @return string
- */
- function ListItem($item)
- {
- if (!isset($this->template_options['desctranslate'])) return $item;
- if (!isset($this->template_options['desctranslate']['li'])) return $item;
- $item = $this->template_options['desctranslate']['li'] . $item;
- if (!isset($this->template_options['desctranslate']['/li'])) return $item;
- return $item . $this->template_options['desctranslate']['/li'];
- }
-
- /**
- * Used to convert the contents of <<ol>> or <<ul>> in a docblock
- * @param string
- * @return string
- */
- function EncloseList($list,$ordered)
- {
- $listname = ($ordered ? 'ol' : 'ul');
- if (!isset($this->template_options['desctranslate'])) return $list;
- if (!isset($this->template_options['desctranslate'][$listname])) return $list;
- $list = $this->template_options['desctranslate'][$listname] . $list;
- if (!isset($this->template_options['desctranslate']['/'.$listname])) return $list;
- return $list . $this->template_options['desctranslate']['/'.$listname];
- }
-
- /**
- * Used to convert the contents of <<pre>> in a docblock
- * @param string
- * @return string
- */
- function PreserveWhiteSpace($string)
- {
- if (!isset($this->template_options['desctranslate'])) return $string;
- if (!isset($this->template_options['desctranslate']['pre'])) return $string;
- $string = $this->template_options['desctranslate']['pre'] . $string;
- if (!isset($this->template_options['desctranslate']['/pre'])) return $string;
- return $string . $this->template_options['desctranslate']['/pre'];
- }
-
- /**
- * Used to enclose a paragraph in a docblock
- * @param string
- * @return string
- */
- function EncloseParagraph($para)
- {
- if (!isset($this->template_options['desctranslate'])) return $para;
- if (!isset($this->template_options['desctranslate']['p'])) return $para;
- $para = $this->template_options['desctranslate']['p'] . $para;
- if (!isset($this->template_options['desctranslate']['/p'])) return $para;
- return $para . $this->template_options['desctranslate']['/p'];
- }
-
- /**
- * Used to convert the contents of <<b>> in a docblock
- * @param string
- * @return string
- */
- function Bolden($para)
- {
- if (!isset($this->template_options['desctranslate'])) return $para;
- if (!isset($this->template_options['desctranslate']['b'])) return $para;
- $para = $this->template_options['desctranslate']['b'] . $para;
- if (!isset($this->template_options['desctranslate']['/b'])) return $para;
- return $para . $this->template_options['desctranslate']['/b'];
- }
-
- /**
- * Used to convert the contents of <<i>> in a docblock
- * @param string
- * @return string
- */
- function Italicize($para)
- {
- if (!isset($this->template_options['desctranslate'])) return $para;
- if (!isset($this->template_options['desctranslate']['i'])) return $para;
- $para = $this->template_options['desctranslate']['i'] . $para;
- if (!isset($this->template_options['desctranslate']['/i'])) return $para;
- return $para . $this->template_options['desctranslate']['/i'];
- }
-
- /**
- * Used to convert the contents of <<var>> in a docblock
- * @param string
- * @return string
- */
- function Varize($para)
- {
- if (!isset($this->template_options['desctranslate'])) return $para;
- if (!isset($this->template_options['desctranslate']['var'])) return $para;
- $para = $this->template_options['desctranslate']['var'] . $para;
- if (!isset($this->template_options['desctranslate']['/var'])) return $para;
- return $para . $this->template_options['desctranslate']['/var'];
- }
-
- /**
- * Used to convert the contents of <<kbd>> in a docblock
- * @param string
- * @return string
- */
- function Kbdize($para)
- {
- if (!isset($this->template_options['desctranslate'])) return $para;
- if (!isset($this->template_options['desctranslate']['kbd'])) return $para;
- $para = $this->template_options['desctranslate']['kbd'] . $para;
- if (!isset($this->template_options['desctranslate']['/kbd'])) return $para;
- return $para . $this->template_options['desctranslate']['/kbd'];
- }
-
- /**
- * Used to convert the contents of <<samp>> in a docblock
- * @param string
- * @return string
- */
- function Sampize($para)
- {
- if (!isset($this->template_options['desctranslate'])) return $para;
- if (!isset($this->template_options['desctranslate']['samp'])) return $para;
- $para = $this->template_options['desctranslate']['samp'] . $para;
- if (!isset($this->template_options['desctranslate']['/samp'])) return $para;
- return $para . $this->template_options['desctranslate']['/samp'];
- }
-
- /**
- * Used to convert <<br>> in a docblock
- * @param string
- * @return string
- */
- function Br($para)
- {
- if (!isset($this->template_options['desctranslate'])) return $para;
- if (!isset($this->template_options['desctranslate']['br'])) return $para;
- $para = $this->template_options['desctranslate']['br'] . $para;
- return $para;
- }
-
- /**
- * This version does nothing
- *
- * Perform necessary post-processing of string data. For example, the HTML
- * Converters should escape < and > to become &lt; and &gt;
- * @return string
- */
- function postProcess($text)
- {
- return $text;
- }
-
- /**
- * Creates a table of contents for a {@}toc} inline tag in a tutorial
- *
- * This function should return a formatted table of contents. By default, it
- * does nothing, it is up to the converter to format the TOC
- * @abstract
- * @return string table of contents formatted for use in the current output format
- * @param array format: array(array('tagname' => section, 'link' => returnsee link, 'id' => anchor name, 'title' => from title tag),...)
- */
- function formatTutorialTOC($toc)
- {
- return '';
- }
-
- /**
- * Write out the formatted source code for a php file
- *
- * This function provides the primary functionality for the
- * {@tutorial tags.filesource.pkg} tag.
- * @param string full path to the file
- * @param string fully highlighted/linked source code of the file
- * @abstract
- */
- function writeSource($filepath, $source)
- {
- debug($source);
- return;
- }
-
- /**
- * Write out the formatted source code for an example php file
- *
- * This function provides the primary functionality for the
- * {@tutorial tags.example.pkg} tag.
- * @param string example title
- * @param string example filename (no path)
- * @param string fully highlighted/linked source code of the file
- * @abstract
- */
- function writeExample($title, $path, $source)
- {
- return;
- }
-
- /** Translate the path info into a unique file name for the highlighted
- * source code.
- * @param string $pathinfo
- * @return string
- */
- function getFileSourceName($path)
- {
- global $_phpDocumentor_options;
- $pathinfo = $this->proceduralpages->getPathInfo($path, $this);
- $pathinfo['source_loc'] = str_replace($_phpDocumentor_options['Program_Root'].'/','',$pathinfo['source_loc']);
- $pathinfo['source_loc'] = str_replace('/','_',$pathinfo['source_loc']);
- return "fsource_{$pathinfo['package']}_{$pathinfo['subpackage']}_{$pathinfo['source_loc']}";
- }
-
- /** Return the fixed path to the source-code file folder.
- * @param string $base Path is relative to this folder
- * @return string
- */
- function getFileSourcePath($base)
- {
- if (substr($base, -1) != PATH_DELIMITER) {
- $base .= PATH_DELIMITER;
- }
- return $base . '__filesource';
- }
-
- /** Return the path to the current
- * @param string $pathinfo
- * @return string
- */
- function getCurrentPageURL()
- {
- return '{$srcdir}' . PATH_DELIMITER . $this->page_dir;
- }
-
- /**
- * @return string an output-format dependent link to phpxref-style highlighted
- * source code
- * @abstract
- */
- function getSourceLink($path)
- {
- return '';
- }
-
- /**
- * @return string Link to the current page being parsed.
- * Should return {@link $curname} and a converter-specific extension.
- * @abstract
- */
- function getCurrentPageLink()
- {
- }
-
- /**
- * Return a line of highlighted source code with formatted line number
- *
- * If the $path is a full path, then an anchor to the line number will be
- * added as well
- * @param integer line number
- * @param string highlighted source code line
- * @param false|string full path to @filesource file this line is a part of,
- * if this is a single line from a complete file.
- * @return string formatted source code line with line number
- */
- function sourceLine($linenumber, $line, $path = false)
- {
- if ($path)
- {
- return $this->getSourceAnchor($path, $linenumber) .
- $this->Br(sprintf('%-6u',$linenumber).str_replace("\n",'',$line));
- } else
- {
- return $this->Br(sprintf('%-6u',$linenumber).str_replace("\n",'',$line));
- }
- }
-
- /**
- * Determine whether an element's file has generated source code, used for
- * linking to line numbers of source.
- *
- * Wrapper for {@link $sourcePaths} in this version
- * @param string full path to the source code file
- * @return boolean
- */
- function hasSourceCode($path)
- {
- return isset($this->sourcePaths[$path]);
- }
-
- /**
- * Mark a file as having had source code highlighted
- * @param string full path of source file
- */
- function setSourcePaths($path)
- {
- $this->sourcePaths[$path] = true;
- }
-
- /**
- * Used to translate an XML DocBook entity like &rdquo; from a tutorial by
- * reading the options.ini file for the template.
- * @param string entity name
- */
- function TranslateEntity($name)
- {
- if (!isset($this->template_options['ppage']))
- {
- if (!$this->template_options['preservedocbooktags'])
- return '';
- else
- return '&'.$name.';';
- }
- if (isset($this->template_options['ppage']['&'.$name.';']))
- {
- return $this->template_options['ppage']['&'.$name.';'];
- } else
- {
- if (!$this->template_options['preservedocbooktags'])
- return '';
- else
- return '&'.$name.';';
- }
- }
-
- /**
- * Used to translate an XML DocBook tag from a tutorial by reading the
- * options.ini file for the template.
- * @param string tag name
- * @param string any attributes Format: array(name => value)
- * @param string the tag contents, if any
- * @param string the tag contents, if any, unpost-processed
- * @return string
- */
- function TranslateTag($name,$attr,$cdata,$unconvertedcdata)
- {
- if (!isset($this->template_options['ppage']))
- {
- if (!$this->template_options['preservedocbooktags'])
- return $cdata;
- else
- return '<'.$name.$this->AttrToString($name,$attr,true).'>'.$cdata.'</'.$name.'>'."\n";
- }
- // make sure this template transforms the tag into something
- if (isset($this->template_options['ppage'][$name]))
- {
- // test for global attribute transforms like $attr$role = class, changing
- // all role="*" attributes to class="*" in html, for example
- foreach($attr as $att => $val)
- {
- if (isset($this->template_options['$attr$'.$att]))
- {
- $new = '';
- if (!isset($this->template_options['$attr$'.$att]['close']))
- {
- $new .= '<'.$this->template_options['$attr$'.$att]['open'];
- if (isset($this->template_options['$attr$'.$att]['cdata!']))
- {
- if (isset($this->template_options['$attr$'.$att]['separateall']))
- $new .= $this->template_options['$attr$'.$att]['separator'];
- else
- $new .= ' ';
- $new .= $this->template_options['$attr$'.$att]['$'.$att];
- $new .= $this->template_options['$attr$'.$att]['separator'];
- if ($this->template_options['$attr$'.$att]['quotevalues']) $val = '"'.$val.'"';
- $new .= $val.'>';
- } else
- {
- $new .= '>'.$val;
- }
- $new .= '</'.$this->template_options['$attr$'.$att]['open'].'>';
- } else
- {
- $new .= $this->template_options['$attr$'.$att]['open'] . $val . $this->template_options['$attr$'.$att]['close'];
- }
- unset($attr[$att]);
- $cdata = $new . $cdata;
- }
- }
-
- if (!isset($this->template_options['ppage']['/'.$name]))
- {// if the close tag isn't specified, we put opening and closing tags around it, with translated attributes
- if (isset($this->template_options['ppage'][$name.'/']))
- $cdata = '<'.$this->template_options['ppage'][$name].$this->AttrToString($name,$attr).'/>' . $cdata;
- else
- $cdata = '<'.$this->template_options['ppage'][$name].$this->AttrToString($name,$attr).'>' . $cdata .
- '</'.$this->template_options['ppage'][$name].'>';
- } else
- { // if close tag is specified, use the open and close as literal
- if ($name == 'programlisting' && isset($attr['role']) &&
- ($attr['role'] == 'php' || $attr['role'] == 'tutorial' || $attr['role'] == 'html'))
- { // highlight PHP source
-// var_dump($unconvertedcdata, $cdata);exit;
- if ($attr['role'] == 'php') {
- $cdata = $this->ProgramExample($unconvertedcdata, true);
- } elseif ($attr['role'] == 'tutorial') {
- $cdata = $this->TutorialExample($unconvertedcdata);
- } elseif ($attr['role'] == 'html') {
- $cdata = $unconvertedcdata;
- }
- } else
- {// normal case below
- $cdata = $this->template_options['ppage'][$name].$this->AttrToString($name,$attr). $cdata .$this->template_options['ppage']['/'.$name];
- }
- }
- return $cdata;
- } else
- {
- if ($this->template_options['preservedocbooktags'])
- {
- return '<'.$name.$this->AttrToString($name,$attr,true).'>' . $cdata .
- '</'.$name.'>'."\n";
- } else
- {
- return $cdata;
- }
- }
- }
-
- /**
- * Convert the attribute of a Tutorial docbook tag's attribute list
- * to a string based on the template options.ini
- * @param string tag name
- * @param attribute array
- * @param boolean if true, returns attrname="value"...
- * @return string
- */
- function AttrToString($tag,$attr,$unmodified = false)
- {
- $ret = '';
- if ($unmodified)
- {
- $ret = ' ';
- foreach($attr as $n => $v)
- {
- $ret .= $n.' = "'.$v.'"';
- }
- return $ret;
- }
- // no_attr tells us to ignore all attributes
- if (isset($this->template_options['no_attr'])) return $ret;
- // tagname! tells us to ignore all attributes for this tag
- if (isset($this->template_options['ppage'][$tag.'!'])) return $ret;
- if (count($attr)) $ret = ' ';
- // pass 1, check to see if any attributes add together
- $same = array();
- foreach($attr as $n => $v)
- {
- if (isset($this->template_options['ppage'][$tag.'->'.$n]))
- {
- $same[$this->template_options['ppage'][$tag.'->'.$n]][] = $n;
- }
- }
- foreach($attr as $n => $v)
- {
- if (isset($this->template_options['ppage'][$tag.'->'.$n]))
- {
- if (count($same[$this->template_options['ppage'][$tag.'->'.$n]]) == 1)
- { // only 1 attribute translated for this one
- // this is useful for equivalent value names
- if (isset($this->template_options['ppage'][$tag.'->'.$n.'+'.$v])) $v = $this->template_options['ppage'][$tag.'->'.$n.'+'.$v];
- } else
- { // more than 1 attribute combines to make the new attribute
- $teststrtemp = array();
- foreach($same[$this->template_options['ppage'][$tag.'->'.$n]] as $oldattr)
- {
- $teststrtemp[] = $oldattr.'+'.$attr[$oldattr];
- }
- $teststrs = array();
- $num = count($same[$this->template_options['ppage'][$tag.'->'.$n]]);
- for($i=0;$i<$num;$i++)
- {
- $started = false;
- $a = '';
- for($j=$i;!$started || $j != $i;$j = ($j + $i) % $num)
- {
- if (!empty($a)) $a .= '|';
- $a .= $teststrtemp[$j];
- }
- $teststrs[$i] = $a;
- }
- $done = false;
- foreach($teststrs as $test)
- {
- if ($done) break;
- if (isset($this->template_options['ppage'][$tag.'->'.$test]))
- {
- $done = true;
- $v = $this->template_options['ppage'][$tag.'->'.$test];
- }
- }
- }
- $ret .= $this->template_options['ppage'][$tag.'->'.$n].' = "'.$v.'"';
- } else
- {
- if (!isset($this->template_options['ppage'][$tag.'!'.$n]))
- {
- if (isset($this->template_options['ppage']['$attr$'.$n]))
- $ret .= $this->template_options['ppage']['$attr$'.$n].' = "'.$v.'"';
- else
- $ret .= $n.' = "'.$v.'"';
- }
- }
- }
- return $ret;
- }
-
- /**
- * Convert the title of a Tutorial docbook tag section
- * to a string based on the template options.ini
- * @param string tag name
- * @param array
- * @param string title text
- * @param string
- * @return string
- */
- function ConvertTitle($tag,$attr,$title,$cdata)
- {
- if (!isset($this->template_options[$tag.'_title'])) return array($attr,$title.$cdata);
- if (isset($this->template_options[$tag.'_title']['tag_attr']))
- {
- $attr[$this->template_options[$tag.'_title']['tag_attr']] = urlencode($cdata);
- $cdata = '';
- } elseif(isset($this->template_options[$tag.'_title']['cdata_start']))
- {
- $cdata = $this->template_options[$tag.'_title']['open'] . $title .
- $this->template_options[$tag.'_title']['close'] . $cdata;
- } else $cdata = $title.$cdata;
- return array($attr,$cdata);
- }
-
- /**
- * Return a converter-specific id to distinguish tutorials and their
- * sections
- *
- * Used by {@}id}
- * @return string
- */
- function getTutorialId($package,$subpackage,$tutorial,$id)
- {
- return $package.$subpackage.$tutorial.$id;
- }
-
- /**
- * Create the {@link $elements, $pkg_elements} and {@link $links} arrays
- * @access private
- * @todo version 2.0 - faulty package_output logic should be removed
- *
- * in this version, if the parent file isn't in the package, all
- * the procedural elements are simply shunted to another package!
- */
- function _createPkgElements(&$pages)
- {
- if (empty($this->elements))
- {
- $this->elements = array();
- $this->pkg_elements = array();
- $this->links = array();
- phpDocumentor_out('Building indexes...');
- flush();
- foreach($pages as $j => $flub)
- {
- $this->package = $pages[$j]->parent->package;
- $this->subpackage = $pages[$j]->parent->subpackage;
- $this->class = false;
- $this->curfile = $pages[$j]->parent->getFile();
- $this->curname = $this->getPageName($pages[$j]->parent);
- $this->curpath = $pages[$j]->parent->getPath();
- $use = true;
- if ($this->package_output)
- {
- if (in_array($this->package,$this->package_output))
- {
- $this->addElement($pages[$j]->parent,$pages[$j]);
- } else
- {
- if (count($pages[$j]->classelements))
- {
- list(,$pages[$j]->parent->package) = each($this->package_output);
- reset($this->package_output);
- $pages[$j]->parent->subpackage = '';
- $this->addElement($pages[$j]->parent,$pages[$j]);
- } else
- {
- unset($pages[$j]);
- continue;
- }
- }
- } else
- {
- $this->addElement($pages[$j]->parent,$pages[$j]);
- }
- if ($use)
- for($i=0; $i<count($pages[$j]->elements); $i++)
- {
- $pages[$j]->elements[$i]->docblock->package = $this->package;
- $pages[$j]->elements[$i]->docblock->subpackage = $this->subpackage;
- $this->proceduralpages->replaceElement($pages[$j]->elements[$i]);
- $this->addElement($pages[$j]->elements[$i]);
- }
- for($i=0; $i<count($pages[$j]->classelements); $i++)
- {
- if ($this->class)
- {
- if ($pages[$j]->classelements[$i]->type == 'class')
- {
- if ($this->checkKillClass($pages[$j]->classelements[$i]->getName(),$pages[$j]->classelements[$i]->getPath())) continue;
- $this->package = $pages[$j]->classelements[$i]->docblock->package;
- if ($this->package_output) if (!in_array($this->package,$this->package_output)) continue;
- $this->subpackage = $pages[$j]->classelements[$i]->docblock->subpackage;
- $this->class = $pages[$j]->classelements[$i]->name;
- } else
- {
- if ($this->killclass) continue;
- // force all contained elements to have parent package/subpackage
- $pages[$j]->classelements[$i]->docblock->package = $this->package;
- $pages[$j]->classelements[$i]->docblock->subpackage = $this->subpackage;
- }
- }
- if ($pages[$j]->classelements[$i]->type == 'class')
- {
- if ($this->checkKillClass($pages[$j]->classelements[$i]->getName(),$pages[$j]->classelements[$i]->getPath())) continue;
- $this->package = $pages[$j]->classelements[$i]->docblock->package;
- if ($this->package_output) if (!in_array($this->package,$this->package_output)) continue;
- $this->subpackage = $pages[$j]->classelements[$i]->docblock->subpackage;
- $this->class = $pages[$j]->classelements[$i]->name;
- }
- if (!$this->killclass) $this->addElement($pages[$j]->classelements[$i]);
- }
- }
- phpDocumentor_out("done\n");
- flush();
- }
- $this->sortIndexes();
- $this->sortTodos();
- if ($this->sort_page_contents_by_type) $this->sortPageContentsByElementType($pages);
- }
-
- /**
- * Process the {@link $tutorials} array
- *
- * Using the tutorialname.ext.ini files, this method sets up tutorial
- * hierarchy. There is some minimal error checking to make sure that no
- * tutorial links to itself, even two levels deep as in tute->next->tute.
- *
- * If all tests pass, it creates the hierarchy
- * @uses generateTutorialOrder()
- * @uses _setupTutorialTree()
- * @access private
- */
- function _processTutorials()
- {
- $parents = $all = array();
- foreach($this->tutorials as $package => $els)
- {
- if ($this->package_output)
- {
- if (!in_array($package,$this->package_output))
- {
- unset($this->tutorials[$package]);
- continue;
- }
- }
- if (!isset($this->pkg_elements[$package]))
- {
- unset($this->tutorials[$package]);
- continue;
- }
- foreach($els as $subpackage => $els2)
- {
- foreach($els2 as $type => $tutorials)
- {
- foreach($tutorials as $tutorial)
- {
- if ($tutorial->ini)
- {
- if (isset($tutorial->ini['Linked Tutorials']))
- {
- foreach($tutorial->ini['Linked Tutorials'] as $child)
- {
- $sub = (empty($tutorial->subpackage) ? '' : $tutorial->subpackage . '/');
- $kid = $tutorial->package . '/' . $sub . $child . '.' . $tutorial->tutorial_type;
- // parent includes self as a linked tutorial?
- $kidlink = $this->getTutorialLink($kid,false,false,array($tutorial->package));
- if (is_object($kidlink) && $this->returnSee($kidlink) == $tutorial->getLink($this))
- { // bad!
- addErrorDie(PDERROR_TUTORIAL_IS_OWN_CHILD,$tutorial->name,$tutorial->name.'.ini');
- }
- }
- $parents[] = $tutorial;
- }
- }
- $all[$package][$subpackage][$type][] = $tutorial;
- }
- }
- }
- }
- // loop error-checking, use this to eliminate possibility of accidentally linking to a parent as a child
- $testlinks = array();
- foreach($parents as $parent)
- {
- $testlinks[$parent->name]['links'][] = $parent->getLink($this);
- $testlinks[$parent->name]['name'][$parent->getLink($this)] = $parent->name;
- }
- // generate the order of tutorials, and link them together
- foreach($parents as $parent)
- {
- foreach($parent->ini['Linked Tutorials'] as $child)
- {
- $sub = (empty($parent->subpackage) ? '' : $parent->subpackage . '/');
- $kid = $parent->package . '/' . $sub . $child . '.' . $parent->tutorial_type;
- // child tutorials must be in the same package AND subpackage
- // AND have the same extension as the parent, makes things clearer for both ends
- if (in_array($this->returnSee($this->getTutorialLink($kid,false,false,array($parent->package))),$testlinks[$parent->name]['links']))
- addErrorDie(PDERROR_TUTORIAL_IS_OWN_GRANDPA,$testlinks[$parent->name][$this->returnSee($this->getTutorialLink($kid,false,false,array($parent->package)))],$kid->name,$testlinks[$parent->name][$this->returnSee($this->getTutorialLink($kid,false,false,array($parent->package)))],$kid->name.'.ini');
- if ($this->returnSee($this->getTutorialLink($kid,false,false,array($parent->package))) == $kid)
- {
- addWarning(PDERROR_CHILD_TUTORIAL_NOT_FOUND, $child . '.' . $parent->tutorial_type, $parent->name .'.ini',$parent->package, $parent->subpackage);
- }
- }
- }
- $new = $tree = $roots = array();
- // build a list of all 'root' tutorials (tutorials without parents).
- foreach($parents as $i => $parent)
- {
- if (! $parent->isChildOf($parents)) {
- $roots[] = $parent;
- }
- }
- $parents = $roots;
- // add the parents and all child tutorials in order to the list of tutorials to process
- foreach($parents as $parent)
- {
- $this->generateTutorialOrder($parent,$all,$new);
- }
- if (count($all))
- {
- // add the leftover tutorials
- foreach($all as $package => $els)
- {
- foreach($els as $subpackage => $els2)
- {
- foreach($els2 as $type => $tutorials)
- {
- foreach($tutorials as $tutorial)
- {
- $new[$package][$subpackage][$type][] = $tutorial;
- }
- }
- }
- }
- }
- // remove the old, unprocessed tutorials, and set it up with the next code
- $this->tutorials = array();
- // reset integrity of the tutorial list
- $prev = false;
- uksort($new, 'tutorialcmp');
-// debug($this->vardump_tree($new));exit;
- foreach($new as $package => $els)
- {
- foreach($els as $subpackage => $els2)
- {
- foreach($els2 as $type => $tutorials)
- {
- foreach($tutorials as $tutorial)
- {
- if ($prev)
- {
- $this->tutorials[$prevpackage][$prevsubpackage][$prevtype][$prevname]->setNext($tutorial,$this);
- $tutorial->setPrev($prev,$this);
- }
- $this->tutorials[$package][$subpackage][$type][$tutorial->name] = $tutorial;
- $prev = $tutorial->getLink($this,true);
- $prevpackage = $package;
- $prevsubpackage = $subpackage;
- $prevtype = $type;
- $prevname = $tutorial->name;
- }
- }
- }
- }
- $this->tutorial_tree = $this->_setupTutorialTree();
- return $new;
- }
-
- /**
- * called by {@link phpDocumentor_IntermediateParser::Convert()} to traverse
- * the array of pages and their elements, converting them to the output format
- *
- * The walk() method should be flexible enough such that it never needs
- * modification. walk() sets up all of the indexes, and sorts everything in
- * logical alphabetical order. It then passes each element individually to
- * {@link Convert()}, which then passes to the Convert*() methods. A child
- * Converter need not override any of these unless special functionality must
- * be added. see {@tutorial Converters/template.vars.cls} for details.
- * {@internal
- * walk() first creates all of the indexes {@link $elements, $pkg_elements}
- * and the left indexes specified by {@link $leftindexes},
- * and then sorts them by calling {@link sortIndexes()}.
- *
- * Next, it converts all README/CHANGELOG/INSTALL-style files, using
- * {@link Convert_RIC}.
- *
- * After this, it
- * passes all package-level docs to Convert(). Then, it calls the index
- * sorting functions {@link formatPkgIndex(), formatIndex()} and
- * {@link formatLeftIndex()}.
- *
- * Finally, it converts each procedural page in alphabetical order. This
- * stage passes elements from the physical file to Convert() in alphabetical
- * order. First, procedural page elements {@link parserDefine, parserInclude}
- * {@link parserGlobal}, and {@link parserFunction} are passed to Convert().
- *
- * Then, class elements are passed in this order: {@link parserClass}, then
- * all of the {@link parserVar}s in the class and all of the
- * {@link parserMethod}s in the class. Classes are in alphabetical order,
- * and both vars and methods are in alphabetical order.
- *
- * Finally, {@link ConvertErrorLog()} is called and the data walk is complete.}}
- * @param array Format: array(fullpath => {@link parserData} structure with full {@link parserData::$elements}
- * and {@link parserData::$class_elements}.
- * @param array Format: array({@link parserPackagePage} 1, {@link parserPackagePage} 2,...)
- * @uses Converter::_createPkgElements() sets up {@link $elements} and
- * {@link $pkg_elements} array, as well as {@link $links}
- */
- function walk(&$pages,&$package_pages)
- {
- if (empty($pages))
- {
- die("<b>ERROR</b>: nothing parsed");
- }
- $this->_createPkgElements($pages);
- if (count($this->ric))
- {
- phpDocumentor_out("Converting README/INSTALL/CHANGELOG contents...\n");
- flush();
- foreach($this->ric as $name => $contents)
- {
- phpDocumentor_out("$name...");
- flush();
- $this->Convert_RIC($name,$contents);
- }
- phpDocumentor_out("\ndone\n");
- flush();
- }
- foreach($package_pages as $i => $perp)
- {
- if ($this->package_output)
- {
- if (!in_array($package_pages[$i]->package,$this->package_output)) continue;
- }
- phpDocumentor_out('Converting package page for package '.$package_pages[$i]->package.'... ');
- flush();
- $this->package = $package_pages[$i]->package;
- $this->subpackage = '';
- $this->class = false;
- $this->Convert($package_pages[$i]);
- phpDocumentor_out("done\n");
- flush();
- }
- phpDocumentor_out("Converting tutorials/extended docs\n");
- flush();
- // get tutorials into the order they will display, and set next/prev links
- $new = $this->_processTutorials();
- foreach($this->tutorials as $package => $els)
- {
- foreach($els as $subpackage => $els2)
- {
- foreach($els2 as $type => $tutorials)
- {
- foreach($tutorials as $tutorial)
- {
- switch ($type)
- {
- case 'pkg' :
- $a = '';
- if ($tutorial->ini)
- $a .= 'Top-level ';
- if (!empty($tutorial->subpackage))
- $a .= 'Sub-';
- $ptext = "Converting ${a}Package-level tutorial ".$tutorial->name.'...';
- break;
- case 'cls' :
- $a = '';
- if ($tutorial->ini)
- $a .= 'Top-level ';
- $ptext = "Converting ${a}Class-level tutorial " . $tutorial->name ." and associating...";
- $link = Converter::getClassLink(str_replace('.cls','',$tutorial->name), $tutorial->package);
- if (is_object($link))
- {
- if ($this->sort_absolutely_everything)
- {
- $addend = 'unsuccessful ';
- if (isset($this->package_elements[$tutorial->package][$tutorial->subpackage]['class'][$link->name]))
- {
- $this->package_elements[$tutorial->package][$tutorial->subpackage]['class'][$link->name][0]->addTutorial($tutorial,$this);
- $addend = 'success ';
- }
- } else
- {
- $addend = 'unsuccessful ';
- if (!isset($this->classes->killclass[str_replace('.cls','',$tutorial->name)]) && !isset($this->classes->killclass[str_replace('.cls','',$tutorial->name)][$tutorial->path]))
- {
- foreach($pages as $j => $inf)
- {
- foreach($inf->classelements as $i => $class)
- {
- if ($class->type == 'class' && $class->name == str_replace('.cls','',$tutorial->name) && $class->path == $link->path)
- {
- $pages[$j]->classelements[$i]->addTutorial($tutorial,$this);
- $addend = 'success ';
- }
- }
- }
- }
- }
- $ptext .= $addend;
- } else $ptext .= "unsuccessful ";
- break;
- case 'proc' :
- $a = '';
- if ($tutorial->ini)
- $a .= 'Top-level ';
- $ptext = "Converting ${a}Procedural-level tutorial ".$tutorial->name." and associating...";
- $link = Converter::getPageLink(str_replace('.proc','',$tutorial->name), $tutorial->package);
- if (is_object($link))
- {
- $addend = 'unsuccessful ';
- if ($this->sort_absolutely_everything)
- {
- if (isset($this->package_elements[$tutorial->package][$tutorial->subpackage]['page'][$link->path]))
- {
- $this->package_elements[$tutorial->package][$tutorial->subpackage]['page'][$link->path][0]->addTutorial($tutorial,$this);
- $addend = "success ";
- }
- } else
- {
- foreach($pages as $j => $info)
- {
- if ($j == $link->path)
- {
- $pages[$j]->addTutorial($tutorial,$this);
- $addend = "success ";
- }
- }
- }
- $ptext .= $addend;
- } else $ptext .= "unsuccessful ";
- break;
- }
- phpDocumentor_out($ptext);
- flush();
- $this->package = $tutorial->package;
- $this->subpackage = $tutorial->subpackage;
- $this->Convert($tutorial);
- phpDocumentor_out("done\n");
- flush();
- }
- }
- }
- }
- phpDocumentor_out("Formatting Package Indexes...");
- flush();
- $this->formatPkgIndex();
- phpDocumentor_out("done\n");
- flush();
- phpDocumentor_out("Formatting Index...");
- flush();
- $this->formatIndex();
- phpDocumentor_out("done\n\n");
- flush();
- phpDocumentor_out("Formatting Left Quick Index...");
- flush();
- $this->formatLeftIndex();
- phpDocumentor_out("done\n\n");
- flush();
- if ($this->sort_absolutely_everything) return $this->walk_everything();
- foreach($pages as $j => $flub)
- {
- phpDocumentor_out('Converting '.$pages[$j]->parent->getPath());
- flush();
- $this->package = $pages[$j]->parent->package;
- $this->subpackage = $pages[$j]->parent->subpackage;
- $this->class = false;
- $this->curfile = $pages[$j]->parent->getFile();
- $this->curname = $this->getPageName($pages[$j]->parent);
- $this->curpath = $pages[$j]->parent->getPath();
- $use = true;
- if ($this->package_output)
- {
- if (in_array($this->package,$this->package_output))
- {
- $this->Convert($pages[$j]);
- } else
- {
- $use = false;
- }
- } else
- {
- $this->Convert($pages[$j]);
- }
- phpDocumentor_out(" Procedural Page Elements...");
- flush();
- if ($use)
- for($i=0; $i<count($pages[$j]->elements); $i++)
- {
- $a = $pages[$j]->elements[$i]->docblock->getKeyword('access');
- if (is_object($a)) $a = $a->getString();
- if (!$this->parseprivate && ($a == 'private'))
- continue;
-// phpDocumentor_out(" ".$pages[$j]->elements[$i]->name."\n");
- $pages[$j]->elements[$i]->docblock->package = $this->package;
- $pages[$j]->elements[$i]->docblock->subpackage = $this->subpackage;
- $this->Convert($pages[$j]->elements[$i]);
- }
- phpDocumentor_out(" Classes...");
- $this->class = false;
- flush();
- for($i=0; $i<count($pages[$j]->classelements); $i++)
- {
- if ($this->class)
- {
- if ($pages[$j]->classelements[$i]->type == 'class')
- {
- if (!$this->killclass) $this->endClass();
- $this->killclass = false;
- if ($this->checkKillClass($pages[$j]->classelements[$i]->getName(),$pages[$j]->classelements[$i]->getPath())) continue;
- $this->package = $pages[$j]->classelements[$i]->docblock->package;
- if ($this->package_output) if (!in_array($this->package,$this->package_output)) continue;
- $this->subpackage = $pages[$j]->classelements[$i]->docblock->subpackage;
- $this->class = $pages[$j]->classelements[$i]->name;
- } else
- {
- $a = $pages[$j]->classelements[$i]->docblock->getKeyword('access');
- if (is_object($a)) $a = $a->getString();
- if (!$this->parseprivate && ($a == 'private'))
- continue;
- if ($this->killclass) continue;
- // force all contained elements to have parent package/subpackage
- $pages[$j]->classelements[$i]->docblock->package = $this->package;
- $pages[$j]->classelements[$i]->docblock->subpackage = $this->subpackage;
- }
- }
- if ($pages[$j]->classelements[$i]->type == 'class')
- {
- $this->killclass = false;
- if ($this->checkKillClass($pages[$j]->classelements[$i]->getName(),$pages[$j]->classelements[$i]->getPath())) continue;
- $this->package = $pages[$j]->classelements[$i]->docblock->package;
- if ($this->package_output) if (!in_array($this->package,$this->package_output)) continue;
- $this->subpackage = $pages[$j]->classelements[$i]->docblock->subpackage;
- $this->class = $pages[$j]->classelements[$i]->name;
- }
- if ($this->killclass) continue;
-// phpDocumentor_out(" ".$pages[$j]->classelements[$i]->name."\n");
- $this->Convert($pages[$j]->classelements[$i]);
- }
- if (count($pages[$j]->classelements) && !$this->killclass) $this->endClass();
- phpDocumentor_out(" done\n");
- flush();
- $this->endPage();
- }
- phpDocumentor_out("\nConverting @todo List...");
- flush();
- if (count($this->todoList))
- {
- $this->ConvertTodoList();
- }
- phpDocumentor_out("done\n");
- flush();
- phpDocumentor_out("\nConverting Error Log...");
- flush();
- $this->ConvertErrorLog();
- phpDocumentor_out("done\n");
- flush();
- }
-
-
- /**
- * Get a tree structure representing the hierarchy of tutorials
- *
- * Returns an array in format:
- * <pre>
- * array('tutorial' => {@link parserTutorial},
- * 'kids' => array( // child tutorials
- * array('tutorial' => child {@link parserTutorial},
- * 'kids' => array(...)
- * )
- * )
- * )
- * </pre>
- * @param parserTutorial|array
- * @tutorial tutorials.pkg
- * @return array
- */
- function getTutorialTree($tutorial)
- {
- if (is_object($tutorial))
- {
- $path = $tutorial->package . '/' . $tutorial->subpackage . '/' . $tutorial->name;
- if (isset($this->tutorial_tree[$path]))
- $tutorial = $this->tutorial_tree[$path];
- else
- return false;
- }
- $tree = array();
- if (isset($tutorial['tutorial']))
- {
- $tree['tutorial'] = $tutorial['tutorial'];
- if (isset($tutorial['child']))
- {
- foreach($tutorial['child'] as $a => $b)
- {
- $btut = $b['tutorial'];
- $res['tutorial'] = $this->tutorials[$btut->package][$btut->subpackage][$btut->tutorial_type][$btut->name];
- if (isset($b['child']))
- {
- $tempres = Converter::getTutorialTree($b);
- $res['kids'] = $tempres['kids'];
- }
- $tree['kids'][] = $res;
- }
- }
- }
- return $tree;
- }
-
- /**
- * Remove tutorials one by one from $all, and transfer them into $new in the
- * order they should be parsed
- * @param parserTutorial
- * @param array
- * @param array
- * @access private
- */
- function generateTutorialOrder($parent,&$all,&$new)
- {
- // remove from the list of tutorials to process
- foreach($all[$parent->package][$parent->subpackage][$parent->tutorial_type] as $ind => $t)
- {
- if ($t->name == $parent->name) {
- unset($all[$parent->package][$parent->subpackage][$parent->tutorial_type][$ind]);
- }
- }
- // add to the new ordered list of tutorials
- $x = &$new[$parent->package][$parent->subpackage][$parent->tutorial_type];
- if (!is_object($x[count($x) - 1]) || $x[count($x) - 1]->name != $parent->name)
- { // only add if the parent isn't also a child
- $new[$parent->package][$parent->subpackage][$parent->tutorial_type][] = $parent;
- // add a new branch to the tree
- }
- // process all child tutorials, and insert them in order
-// debug("processing parent ".$parent->name);
- if ($parent->ini)
- {
- foreach($parent->ini['Linked Tutorials'] as $child)
- {
- $sub = (empty($parent->subpackage) ? '' : $parent->subpackage . '/');
- $kid = $parent->package . '/' . $sub . $child . '.' . $parent->tutorial_type;
- $_klink = $this->getTutorialLink($kid,false,false,array($parent->package));
- if (is_object($_klink)) {
- $klink = $this->returnSee($_klink);
- } else {
- $klink = false;
- }
- // remove the child from the list of remaining tutorials
- foreach($all[$parent->package][$parent->subpackage][$parent->tutorial_type] as $ind => $tute)
- {
- if ($klink && $tute->getLink($this) == $klink)
- {
- // set up parent, next and prev links
- $tute->setParent($parent, $this);
- // remove the child from the list of tutorials to process
- foreach($all[$parent->package][$parent->subpackage][$parent->tutorial_type] as $ind => $t)
- {
- if ($t->name == $tute->name)
- unset($all[$parent->package][$parent->subpackage][$parent->tutorial_type][$ind]);
- }
- // add to the new ordered list of tutorials
- $new[$parent->package][$parent->subpackage][$parent->tutorial_type][] = $tute;
- if ($tute->ini)
- {
- // add all the child's child tutorials to the list
- $this->generateTutorialOrder($tute,$all,$new);
- }
- }
- }
- }
- }
- return;
- }
-
- /** Returns the path to this tutorial as a string
- * @param parserTutorial $pkg
- * @param parserTutorial $subpkg
- * @param parserTutorial $namepkg
- * @return string */
- function _tutorial_path($pkg, $subpkg = 0, $namepkg = 0)
- {
- if (! $subpkg)
- $subpkg = $pkg;
- if (! $namepkg)
- $namepkg = $pkg;
- return $pkg->package.'/'.$subpkg->subpackage.'/'.$namepkg->name;
- }
-
-
- /**
- * Creates a tree structure of tutorials
- *
- * Format:
- * <pre>
- * array('package/subpackage/tutorial1.ext' =>
- * array('tutorial' => {@link parserTutorial},
- * 'child' =>
- * array('package/subpackage/child1tutorial.ext' => ...,
- * 'package/subpackage/child2tutorial.ext' => ...,
- * ...
- * )
- * 'package/subpackage/tutorial2.ext' => ...,
- * ...
- * )
- * </pre>
- * @return array the tutorial tree
- * @access private
- */
- function _setupTutorialTree($parent = false)
- {
- if (! isset($this->processed_tutorials))
- $this->processed_tutorials = array();
- $tree = array();
- if (!$parent)
- {
- foreach($this->tutorials as $package => $s)
- {
- foreach($s as $subpackage => $t)
- {
- foreach($t as $type => $n)
- {
- foreach($n as $name => $tutorial)
- {
- if (!$tutorial->parent)
- {
- $child_path = $this->_tutorial_path($tutorial,$tutorial,$tutorial);
- if (! isset($this->processed_tutorials[$child_path]))
- {
- $this->processed_tutorials[$child_path] = $tutorial;
- //debug("parent ".$tutorial->name);
- $ret = $this->_setupTutorialTree($tutorial);
- if (!count($tree))
- $tree = $ret;
- else
- $tree = array_merge($tree,$ret);
- }
- }
- }
- }
- }
- }
- return $tree;
- }
- $parent_path = $this->_tutorial_path($parent);
- $tree[$parent_path]['tutorial'] = $parent;
- // process all child tutorials, and insert them in order
- if ($parent->ini)
- {
- foreach($parent->ini['Linked Tutorials'] as $child)
- {
- if (isset($this->tutorials[$parent->package][$parent->subpackage][$parent->tutorial_type][$child . '.' . $parent->tutorial_type]))
- // remove the child from the list of remaining tutorials
- $tute = $this->tutorials[$parent->package][$parent->subpackage][$parent->tutorial_type][$child . '.' . $parent->tutorial_type];
- else
- $tute = false;
-
- if ($tute)
- {
- $child_path = $this->_tutorial_path($parent,$parent,$tute);
- if (! isset($this->processed_tutorials[$child_path]))
- {
- $this->processed_tutorials[$child_path] = $tute;
- if ($tute->name == $child . '.' . $parent->tutorial_type)
- {
-// echo "Adding [$child_path] to [$parent_path]<br>";
- $tree[$parent_path]['child'][$this->_tutorial_path($parent,$parent,$tute)]['tutorial'] = $tute;
- if ($tute->ini)
- {
- // add all the child's child tutorials to the list
- if (!isset($tree[$parent_path]['child']))
- $tree[$parent_path]['child'] = $this->_setupTutorialTree($tute);
- else
- $tree[$parent_path]['child'] = array_merge($tree[$parent_path]['child'],$this->_setupTutorialTree($tute));
- }
- }
- }
- }
- }
- }
- return $tree;
- }
-
- /**
- * Debugging function for dumping {@link $tutorial_tree}
- * @return string
- */
- function vardump_tree($tree,$indent='')
- {
- if (phpDocumentor_get_class($tree) == 'parsertutorial') return $tree->name.' extends '.($tree->parent? $tree->parent->name : 'nothing');
- $a = '';
- foreach($tree as $ind => $stuff)
- {
- $x = $this->vardump_tree($stuff,"$indent ");
- $a .= $indent.'['.$ind." => \n ".$indent.$x."]\n";
- }
- return substr($a,0,strlen($a) - 1);
- }
-
- /**
- * @access private
- */
- function sort_package_elements($a,$b)
- {
- if (($a->type == $b->type) && (isset($a->isConstructor) && $a->isConstructor)) return -1;
- if (($a->type == $b->type) && (isset($b->isConstructor) && $b->isConstructor)) return 1;
- if ($a->type == $b->type) return strnatcasecmp($a->name,$b->name);
- if ($a->type == 'class') return -1;
- if ($b->type == 'class') return 1;
- if ($a->type == 'const') return -1;
- if ($b->type == 'const') return 1;
- if ($a->type == 'var') return -1;
- if ($b->type == 'var') return 1;
- if ($a->type == 'page') return -1;
- if ($b->type == 'page') return 1;
- if ($a->type == 'include') return -1;
- if ($b->type == 'include') return 1;
- if ($a->type == 'define') return -1;
- if ($b->type == 'define') return 1;
- if ($a->type == 'global') return -1;
- if ($b->type == 'global') return 1;
- if ($a->type == 'function') return -1;
- if ($b->type == 'function') return 1;
- }
-
- /**
- * @access private
- */
- function defpackagesort($a,$b)
- {
- if ($a == $GLOBALS['phpDocumentor_DefaultPackageName']) return -1;
- if ($b == $GLOBALS['phpDocumentor_DefaultPackageName']) return 0;
- return strnatcasecmp($a,$b);
- }
-
- /**
- * @access private
- */
- function Pc_sort($a,$b)
- {
- return strnatcasecmp(key($a),key($b));
- }
-
- /**
- * walk over elements by package rather than page
- *
- * This method is designed for converters like the PDF converter that need
- * everything passed in alphabetical order by package/subpackage and by
- * procedural and then class information
- * @see PDFdefaultConverter
- * @see walk()
- */
- function walk_everything()
- {
- global $hooser;
- $hooser = false;
- uksort($this->package_elements,array($this,'defpackagesort'));
- foreach($this->package_elements as $package => $r)
- {
- if ($this->package_output)
- {
- if (!in_array($this->package,$this->package_output))
- {
- unset($this->package_elements[$package]);
- continue;
- }
- }
- uksort($this->package_elements[$package],'strnatcasecmp');
- }
- foreach($this->package_elements as $package => $r)
- {
- foreach($this->package_elements[$package] as $subpackage => $r)
- {
- if (isset($r['page']))
- {
- uksort($r['page'],'strnatcasecmp');
- foreach($r['page'] as $page => $oo)
- {
- usort($this->package_elements[$package][$subpackage]['page'][$page],array($this,'sort_package_elements'));
- }
- }
- if (isset($r['class']))
- {
- uksort($r['class'],'strnatcasecmp');
- foreach($r['class'] as $page => $oo)
- {
- usort($r['class'][$page],array($this,'sort_package_elements'));
- }
- }
- $this->package_elements[$package][$subpackage] = $r;
- }
- }
- foreach($this->package_elements as $package => $s)
- {
- $notyet = false;
- foreach($s as $subpackage => $r)
- {
- $this->package = $package;
- $this->subpackage = $subpackage;
- if (isset($r['page']))
- {
- $this->class = false;
- foreach($r['page'] as $page => $elements)
- {
- if (is_array($elements))
- {
- foreach($elements as $element)
- {
- if ($element->type == 'page')
- {
- phpDocumentor_out('Converting '.$element->parent->getPath());
- flush();
- $this->curfile = $element->parent->getFile();
- $this->curname = $this->getPageName($element->parent);
- $this->curpath = $element->parent->getPath();
- $notyet = true;
- } else
- {
- // force all contained elements to have parent package/subpackage
- $element->docblock->package = $this->package;
- $element->docblock->subpackage = $this->subpackage;
- $a = $element->docblock->getKeyword('access');
- if (is_object($a)) $a = $a->getString();
- if (!$this->parseprivate && ($a == 'private'))
- continue;
- }
- if ($notyet)
- {
- phpDocumentor_out(" Procedural Page Elements...");
- flush();
- $notyet = false;
- }
- $this->Convert($element);
- }
- }
- $this->endPage();
- phpDocumentor_out("done\n");
- flush();
- }
- }
- $start_classes = true;
- if (isset($r['class']))
- {
- foreach($r['class'] as $class => $elements)
- {
- foreach($elements as $element)
- {
- if ($element->type == 'class')
- {
- if (!$start_classes)
- {
- if (count($elements) && !$this->killclass) $this->endClass();
- phpDocumentor_out("done\n");
- flush();
- }
- $start_classes = false;
- $this->class = $element->getName();
- $this->killclass = false;
- if ($this->checkKillClass($element->getName(),$element->getPath())) continue;
- if (!$this->killclass)
- {
- phpDocumentor_out('Converting '.$this->class."...");
- flush();
- $notyet = true;
- }
- } else
- {
- if ($notyet)
- {
- phpDocumentor_out("Variables/methods/Class constants...\n");
- flush();
- $notyet = false;
- }
- $a = $element->docblock->getKeyword('access');
- if (is_object($a)) $a = $a->getString();
- if (!$this->parseprivate && ($a == 'private'))
- continue;
- if ($this->killclass) continue;
- // force all contained elements to have parent package/subpackage
- $element->docblock->package = $this->package;
- $element->docblock->subpackage = $this->subpackage;
- }
- if ($this->killclass) continue;
- $this->Convert($element);
- }
- }
- if (count($elements) && !$this->killclass) $this->endClass();
- phpDocumentor_out("done\n");
- flush();
- } // if isset($r['class'])
- } // foreach($s
- } // foreach($this->package_elements)
- phpDocumentor_out("\nConverting @todo List...");
- flush();
- if (count($this->todoList))
- {
- $this->ConvertTodoList();
- }
- phpDocumentor_out("done\n");
- flush();
- phpDocumentor_out("\nConverting Error Log...");
- flush();
- $this->ConvertErrorLog();
- phpDocumentor_out("done\n");
- flush();
- }
-
- /**
- * Convert the phpDocumentor parsing/conversion error log
- * @abstract
- */
- function ConvertErrorLog()
- {
- }
-
- /**
- * Convert the list of all @todo tags
- * @abstract
- */
- function ConvertTodoList()
- {
- }
-
- /**
- * Sorts the @todo list - do not override or modify this function
- * @access private
- * @uses _sortTodos passed to {@link usort()} to sort the todo list
- */
- function sortTodos()
- {
- phpDocumentor_out("\nSorting @todo list...");
- flush();
- foreach($this->todoList as $package => $r)
- usort($this->todoList[$package],array($this, '_sortTodos'));
- phpDocumentor_out("done\n");
- }
-
- /** @access private */
- function _sortTodos($a, $b)
- {
- return strnatcasecmp($a[0]->name, $b[0]->name);
- }
-
- /**
- * Sorts all indexes - do not override or modify this function
- * @uses $leftindex based on the value of leftindex, sorts link arrays
- * @uses $class_elements sorts with {@link compareLink}
- * @uses $page_elements sorts with {@link compareLink}
- * @uses $define_elements sorts with {@link compareLink}
- * @uses $global_elements sorts with {@link compareLink}
- * @uses $function_elements sorts with {@link compareLink}
- * @uses $elements sorts with {@link elementCmp}
- * @uses $pkg_elements sorts with {@link elementCmp} after sorting by
- * package/subpackage alphabetically
- * @access private
- */
- function sortIndexes()
- {
- phpDocumentor_out("\nSorting Indexes...");
- flush();
- uksort($this->elements,'strnatcasecmp');
- if ($this->leftindex['classes'])
- {
- foreach($this->class_elements as $package => $o1)
- {
- foreach($o1 as $subpackage => $links)
- {
- usort($this->class_elements[$package][$subpackage],array($this,'compareLink'));
- }
- }
- }
- if ($this->leftindex['pages'])
- {
- foreach($this->page_elements as $package => $o1)
- {
- uksort($this->page_elements[$package],'strnatcasecmp');
- foreach($o1 as $subpackage => $links)
- {
- usort($this->page_elements[$package][$subpackage],array($this,'compareLink'));
- }
- }
- }
- if ($this->leftindex['defines'])
- {
- foreach($this->define_elements as $package => $o1)
- {
- uksort($this->define_elements[$package],'strnatcasecmp');
- foreach($o1 as $subpackage => $links)
- {
- usort($this->define_elements[$package][$subpackage],array($this,'compareLink'));
- }
- }
- }
- if ($this->leftindex['globals'])
- {
- foreach($this->global_elements as $package => $o1)
- {
- uksort($this->global_elements[$package],'strnatcasecmp');
- foreach($o1 as $subpackage => $links)
- {
- usort($this->global_elements[$package][$subpackage],array($this,'compareLink'));
- }
- }
- }
- if ($this->leftindex['functions'])
- {
- foreach($this->function_elements as $package => $o1)
- {
- uksort($this->function_elements[$package],'strnatcasecmp');
- foreach($o1 as $subpackage => $links)
- {
- usort($this->function_elements[$package][$subpackage],array($this,'compareLink'));
- }
- }
- }
- foreach($this->elements as $letter => $nothuing)
- {
- uasort($this->elements[$letter],array($this,"elementCmp"));
- }
- foreach($this->pkg_elements as $package => $els)
- {
- uksort($this->pkg_elements[$package],'strnatcasecmp');
- foreach($this->pkg_elements[$package] as $subpackage => $els)
- {
- if (empty($els)) continue;
- uksort($this->pkg_elements[$package][$subpackage],'strnatcasecmp');
- foreach($els as $letter => $yuh)
- {
- usort($this->pkg_elements[$package][$subpackage][$letter],array($this,"elementCmp"));
- }
- }
- }
- phpDocumentor_out("done\n");
- flush();
- }
-
- /**
- * sorts {@link $page_contents} by element type as well as alphabetically
- * @see $sort_page_contents_by_element_type
- */
- function sortPageContentsByElementType(&$pages)
- {
- foreach($this->page_contents as $package => $els)
- {
- foreach($this->page_contents[$package] as $subpackage => $els)
- {
- if (empty($els)) continue;
- foreach($this->page_contents[$package][$subpackage] as $path => $stuff)
- {
- if (!count($pages[$path]->elements)) continue;
- usort($pages[$path]->elements,array($this,'eltypecmp'));
- usort($this->page_contents[$package][$subpackage][$path],array($this,'eltypecmp'));
- if (isset($this->page_contents[$package][$subpackage][$path][0]))
- $this->page_contents[$package][$subpackage][$path]['###main'] = $this->page_contents[$package][$subpackage][$path][0];
- unset($this->page_contents[$package][$subpackage][$path][0]);
- }
- }
- }
- }
-
- /**
- * @access private
- * @see Converter::sortIndexes()
- */
- function compareLink($a, $b)
- {
- return strnatcasecmp($a->name,$b->name);
- }
-
- /**
- * @access private
- * @see Converter::sortPageContentsByElementType()
- */
- function eltypecmp($a, $b)
- {
- if ($a->type == 'page') return -1;
- if ($b->type == 'page') return 1;
- return strnatcasecmp($a->type.$a->name,$b->type.$b->name);
- }
-
- /**
- * does a nat case sort on the specified second level value of the array
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- * @access private
- */
- function elementCmp ($a, $b)
- {
- return strnatcasecmp($a->getName(), $b->getName());
- }
-
- /**
- * Used to stop conversion of @ignored or private @access classes
- * @uses $killclass sets killclass based on the value of {@link Classes::$killclass}
- * and {@link $package_output}
- * @access private
- */
- function checkKillClass($class, $path)
- {
- $this->killclass = false;
- if (isset($this->classes->killclass[$class]) && isset($this->classes->killclass[$class][$path])) $this->killclass = true;
- if ($this->package_output)
- {
- $a = $this->classes->getClass($class, $path);
- if (!in_array($a->docblock->package,$this->package_output)) $this->killclass = true;
- }
- if (PHPDOCUMENTOR_DEBUG && $this->killclass) debug("$class $path killed");
- return $this->killclass;
- }
-
- /**
- * @param abstractLink descendant of abstractLink
- * @param array|parserTag list of @todos|@todo tag
- * @access private
- */
- function addTodoLink($link, $todos)
- {
- $this->todoList[$link->package][] = array($link, $todos);
- }
-
- /**
- * Adds all elements to the {@link $elements, $pkg_elements, $links},
- * {@link $linkswithfile} and left indexes - Do not modify or override
- * @access private
- * @param parserBase any documentable element descendant of parserBase
- * except parserTutorial
- * @param false|parserPage only used to add a {@link parserPage} if the
- * $element passed is a parserPage
- * @staticvar string path of current page, used for {@link $page_contents} setup
- */
- function addElement(&$element,$pageel=false)
- {
- static $curpath = '';
- if ($this->package_output)
- {
- if (!in_array($this->package, $this->package_output)) return;
- }
- if ($pageel && phpDocumentor_get_class($pageel) == 'parserdata')
- {
- if (isset($pageel->docblock) && phpDocumentor_get_class($pageel->docblock) == 'parserdocblock')
- {
- $a = $pageel->docblock->getKeyword('todo');
- if ($a)
- {
- $this->addTodoLink($this->addLink($element),$a);
- }
- }
- }
- if (isset($element->docblock))
- {
- $a = $element->docblock->getKeyword('access');
- if (is_object($a)) $a = $a->getString();
- if (!$this->parseprivate && ($a == 'private'))
- return;
- $a = $element->docblock->getKeyword('todo');
- if ($a)
- {
- $this->addTodoLink($this->addLink($element),$a);
- }
- }
- $i = 0;
- switch($element->type)
- {
- case 'page' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->package][$element->subpackage]['page'][$element->getPath()][] = $pageel;
- }
- $link = $this->addLink($element);
- $curpath = $element->getPath();
- if ($this->leftindex['pages'])
- $this->page_elements[$element->package][$element->subpackage][] = $link;
- $this->page_contents[$element->package][$element->subpackage][$curpath]['###main'] = $link;
- break;
- case 'class' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['class'][$this->class][] = $element;
- }
- $link = $this->addLink($element);
- if ($this->leftindex['classes'])
- $this->class_elements[$element->docblock->package][$element->docblock->subpackage][] = $link;
- $this->class_contents[$element->docblock->package][$element->docblock->subpackage][$this->class]['###main'] = $link;
- break;
- case 'include' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['page'][$curpath][] = $element;
- }
- $link = $this->addLink($element);
- break;
- case 'define' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['page'][$curpath][] = $element;
- }
- $link = $this->addLink($element);
- if ($this->leftindex['defines'])
- $this->define_elements[$element->docblock->package][$element->docblock->subpackage][] = $link;
- $this->page_contents[$element->docblock->package][$element->docblock->subpackage][$curpath][] = $link;
- break;
- case 'global' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['page'][$curpath][] = $element;
- }
- $link = $this->addLink($element);
- $i++;
- if ($this->leftindex['globals'])
- $this->global_elements[$element->docblock->package][$element->docblock->subpackage][] = $link;
- $this->page_contents[$element->docblock->package][$element->docblock->subpackage][$curpath][] = $link;
- break;
- case 'var' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['class'][$this->class][] = $element;
- }
- $link = $this->addLink($element);
- $i++;
- $this->class_contents[$element->docblock->package][$element->docblock->subpackage][$this->class][] = $link;
- break;
- case 'const' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['class'][$this->class][] = $element;
- }
- $link = $this->addLink($element);
- $i++;
- $this->class_contents[$element->docblock->package][$element->docblock->subpackage][$this->class][] = $link;
- break;
- case 'method' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['class'][$this->class][] = $element;
- }
- $link = $this->addLink($element);
- $this->class_contents[$element->docblock->package][$element->docblock->subpackage][$this->class][] = $link;
- break;
- case 'function' :
- if ($this->sort_absolutely_everything)
- {
- $this->package_elements[$element->docblock->package][$element->docblock->subpackage]['page'][$curpath][] = $element;
- }
- $link = $this->addLink($element);
- if ($this->leftindex['functions'])
- $this->function_elements[$element->docblock->package][$element->docblock->subpackage][] = $link;
- $this->page_contents[$element->docblock->package][$element->docblock->subpackage][$curpath][] = $link;
- break;
- default :
- break;
- }
- if ($element->getType() != 'include')
- {
- if ($element->getType() == 'var' || $element->getType() == 'method'|| $element->getType() == 'const')
- {
- $this->links[$this->package][$this->subpackage][$element->getType()][$element->class][$element->getName()] = $link;
- $this->linkswithfile[$this->package][$this->subpackage][$element->getType()][$element->getPath()][$element->class][$element->getName()] = $link;
- } else
- {
- if ($element->type == 'page')
- {
- $this->links[$this->package][$this->subpackage][$element->getType()][$element->getFile()] = $link;
- $this->linkswithfile[$this->package][$this->subpackage][$element->getType()][$element->getPath()][$element->getFile()] = $link;
- } else
- {
- $this->links[$this->package][$this->subpackage][$element->getType()][$element->getName()] = $link;
- $this->linkswithfile[$this->package][$this->subpackage][$element->getType()][$element->getPath()][$element->getName()] = $link;
- }
- }
- }
- if ($element->type == 'page')
- {
- $this->elements[substr(strtolower($element->getFile()),$i,1)][] = $element;
- $this->pkg_elements[$this->package][$this->subpackage][substr(strtolower($element->getFile()),$i,1)][] = $element;
- } else
- {
- $this->elements[substr(strtolower($element->getName()),$i,1)][] = $element;
- $this->pkg_elements[$this->package][$this->subpackage][substr(strtolower($element->getName()),$i,1)][] = $element;
- }
- }
-
- /**
- * returns an abstract link to element. Do not modify or override
- *
- * This method should only be called in process of Conversion, unless
- * $element is a parserPage, or $page is set to true, and $element is
- * not a parserPage
- * @return abstractLink abstractLink descendant
- * @access private
- * @param parserElement element to add a new link (descended from
- * {@link abstractLink})to the {@link $links} array
- * @param string classname for elements that are class-based (this may be
- * deprecated in the future, as the classname
- * should be contained within the element. if $element is a
- * page, this parameter is a package name
- * @param string subpackage name for page elements
- */
- function addLink(&$element,$page = false)
- {
- if ($page)
- {
- // create a fake parserPage to extract the fileAlias for this link
- $fakepage = new parserPage;
- $fakepage->setPath($element->getPath());
- $fakepage->setFile(basename($element->getPath()));
- $this->curname = $this->getPageName($fakepage);
- }
- switch($element->type)
- {
- case 'function':
- $x = new functionLink;
- $x->addLink($element->getPath(), $this->curname, $element->name, $element->docblock->package, $element->docblock->subpackage, $element->docblock->category);
- return $x;
- break;
- case 'define':
- $x = new defineLink;
- $x->addLink($element->getPath(), $this->curname, $element->name, $element->docblock->package, $element->docblock->subpackage, $element->docblock->category);
- return $x;
- break;
- case 'global':
- $x = new globalLink;
- $x->addLink($element->getPath(), $this->curname, $element->name, $element->docblock->package, $element->docblock->subpackage, $element->docblock->category);
- return $x;
- break;
- case 'class':
- $x = new classLink;
- $x->addLink($element->getPath(), $this->curname, $element->name, $element->docblock->package, $element->docblock->subpackage, $element->docblock->category);
- return $x;
- break;
- case 'method':
- $x = new methodLink;
- $x->addLink($this->class, $element->getPath(), $this->curname, $element->name, $element->docblock->package, $element->docblock->subpackage, $element->docblock->category);
- return $x;
- break;
- case 'var':
- $x = new varLink;
- $x->addLink($this->class, $element->getPath(), $this->curname, $element->name, $element->docblock->package, $element->docblock->subpackage, $element->docblock->category);
- return $x;
- break;
- case 'const':
- $x = new constLink;
- $x->addLink($this->class, $element->getPath(), $this->curname, $element->name, $element->docblock->package, $element->docblock->subpackage, $element->docblock->category);
- return $x;
- break;
- case 'page':
- $x = new pageLink;
- $x->addLink($element->getPath(),$this->getPageName($element),$element->file,$element->package, $element->subpackage, $element->category);
- return $x;
- break;
- }
- }
-
- /**
- * Return a tree of all classes that extend this class
- *
- * The data structure returned is designed for a non-recursive algorithm,
- * and is somewhat complex.
- * In most cases, the array returned is:
- *
- * <pre>
- * array('#root' =>
- * array('link' => {@link classLink} to $class,
- * 'parent' => false,
- * 'children' => array(array('class' => 'childclass1',
- * 'package' => 'child1package'),
- * array('class' => 'childclass2',
- * 'package' => 'child2package'),...
- * )
- * ),
- * 'child1package#childclass1' =>
- * array('link' => {@link classLink} to childclass1,
- * 'parent' => '#root',
- * 'children' => array(array('class' => 'kidclass',
- * 'package' => 'kidpackage'),...
- * )
- * ),
- * 'kidpackage#kidclass' =>
- * array('link' => {@link classLink} to kidclass,
- * 'parent' => 'child1package#childclass1',
- * 'children' => array() // no children
- * ),
- * ....
- * )
- *</pre>
- *
- * To describe this format using language, every class in the tree has an
- * entry in the first level of the array. The index for all child
- * classes that extend the root class is childpackage#childclassname.
- * Each entry in the array has 3 elements: link, parent, and children.
- * <ul>
- * <li>link - a {@link classLink} to the current class</li>
- * <li>parent - a {@link classLink} to the class's parent, or false (except for one special case described below)</li>
- * <li>children - an array of arrays, each entry has a 'class' and 'package' index to the child class,
- * used to find the entry in the big array</li>
- * </ul>
- *
- * special cases are when the #root class has a parent in another package,
- * or when the #root class extends a class not found
- * by phpDocumentor. In the first case, parent will be a
- * classLink to the parent class. In the second, parent will be the
- * extends clause, as in:
- * <code>
- * class X extends Y
- * {
- * ...
- * }
- * </code>
- * in this case, the #root entry will be array('link' => classLink to X, 'parent' => 'Y', children => array(...))
- *
- * The fastest way to design a method to process the array returned
- * is to copy HTMLframesConverter::getRootTree() into
- * your converter and to modify the html to whatever output format you are going to use
- * @see HTMLframesConverter::getRootTree()
- * @param string class name
- * @param string
- * @param string
- * @return array Format: see docs
- */
- function getSortedClassTreeFromClass($class,$package,$subpackage)
- {
- $my_tree = array();
- $root = $this->classes->getClassByPackage($class,$package);
- if (!$root) return false;
- $class_children = $this->classes->getDefiniteChildren($class,$root->curfile);
- if (!$class_children)
- {
- // special case: parent class is found, but is not part of this package, class has no children
- if (is_array($root->parent))
- {
- $x = $root->getParent($this);
- if ($x->docblock->package != $package)
- {
- $v = Converter::getClassLink($root->getName(),$package,$root->getPath());
- return array('#root' => array('link' => $v,'parent' => Converter::getClassLink($x->getName(),$x->docblock->package,$x->getPath()), 'children' => array()));
- }
- } else
- { // class has normal situation, no children
- if (is_string($root->getParent($this)))
- return array('#root' => array('link' => Converter::getClassLink($root->getName(),$package,$root->getPath()), 'parent' => $root->getExtends(),'children' => array()));
- else
- return array('#root' => array('link' => Converter::getClassLink($root->getName(),$package,$root->getPath()), 'parent' => false, 'children' => array()));
- }
- }
- // special case: parent class is found, but is not part of this package, class has children
- if (is_array($root->parent))
- {
- $x = $root->getParent($this);
- if ($x->docblock->package != $package)
- {
- $v = Converter::getClassLink($root->getName(),$package,$root->getPath());
- $my_tree = array('#root' => array('link' => $v, 'parent' => Converter::getClassLink($x->getName(),$x->docblock->package,$x->getPath()), 'children' => array()));
- } else
- {
- }
- } else
- $my_tree = array('#root' => array('link' => Converter::getClassLink($root->getName(),$package,$root->getPath()), 'parent' => false, 'children' => array()));
- // location of tree walker
- $cur = '#root';
- $lastcur = array(array(false,0));
- $childpos = 0;
- if (isset($class_children))
- {
- do
- {
- if (!$class_children)
- {
- list($cur, $childpos) = array_pop($lastcur);
- if (isset($my_tree[$cur]['children'][$childpos + 1]))
- {
- array_push($lastcur, array($cur, $childpos + 1));
- $par = $cur;
- $cur = $my_tree[$cur]['children'][$childpos + 1];
- $x = $this->classes->getClassByPackage($cur['class'],$cur['package']);
- $childpos = 0;
- $cur = $cur['package'] . '#' . $cur['class'];
- $my_tree[$cur]['link'] = Converter::getClassLink($x->getName(),$x->docblock->package,$x->getPath());
- $my_tree[$cur]['parent'] = $par;
- $my_tree[$cur]['children'] = array();
- $class_children = $this->classes->getDefiniteChildren($x->getName(), $x->curfile);
- continue;
- } else
- {
- $class_children = false;
- continue;
- }
- }
- foreach($class_children as $chileclass => $chilefile)
- {
- $ch = $this->classes->getClass($chileclass,$chilefile);
- $my_tree[$cur]['children'][] = array('class' => $ch->getName(), 'package' => $ch->docblock->package);
- }
- usort($my_tree[$cur]['children'],'rootcmp');
- if (isset($my_tree[$cur]['children'][$childpos]))
- {
- array_push($lastcur, array($cur, $childpos));
- $par = $cur;
- $cur = $my_tree[$cur]['children'][$childpos];
- $x = $this->classes->getClassByPackage($cur['class'],$cur['package']);
- $cur = $cur['package'] . '#' . $cur['class'];
- $my_tree[$cur]['link'] = Converter::getClassLink($x->getName(),$x->docblock->package,$x->getPath());
- $my_tree[$cur]['parent'] = $par;
- $my_tree[$cur]['children'] = array();
- $childpos = 0;
- $class_children = $this->classes->getDefiniteChildren($x->getName(), $x->curfile);
- } else
- {
- list($cur, $childpos) = array_pop($lastcur);
- }
- } while ($cur);
- }
- return $my_tree;
- }
-
- /**
- * do not override
- * @return bool true if a link to this class exists in package $package and subpackage $subpackage
- * @param string $expr class name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedClass($expr,$package,$subpackage,$file=false)
- {
- if ($file)
- return isset($this->linkswithfile[$package][$subpackage]['class'][$file][$expr]);
- return isset($this->links[$package][$subpackage]['class'][$expr]);
- }
-
- /**
- * do not override
- * @return bool true if a link to this function exists in package $package and subpackage $subpackage
- * @param string $expr function name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedFunction($expr,$package,$subpackage,$file=false)
- {
- if ($file)
- return isset($this->linkswithfile[$package][$subpackage]['function'][$file][$expr]);
- return isset($this->links[$package][$subpackage]['function'][$expr]);
- }
-
- /**
- * do not override
- * @return bool true if a link to this define exists in package $package and subpackage $subpackage
- * @param string $expr define name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedDefine($expr,$package,$subpackage,$file=false)
- {
- if ($file)
- return isset($this->linkswithfile[$package][$subpackage]['define'][$file][$expr]);
- return isset($this->links[$package][$subpackage]['define'][$expr]);
- }
-
- /**
- * do not override
- * @return bool true if a link to this define exists in package $package and subpackage $subpackage
- * @param string $expr define name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedGlobal($expr,$package,$subpackage,$file=false)
- {
- if ($file)
- return isset($this->linkswithfile[$package][$subpackage]['global'][$file][$expr]);
- return isset($this->links[$package][$subpackage]['global'][$expr]);
- }
-
- /**
- * do not override
- * @return bool true if a link to this procedural page exists in package $package and subpackage $subpackage
- * @param string $expr procedural page name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedPage($expr,$package,$subpackage,$path=false)
- {
- if ($path)
- return isset($this->linkswithfile[$package][$subpackage]['page'][$path][$expr]);
- return isset($this->links[$package][$subpackage]['page'][$expr]);
- }
-
- /**
- * do not override
- * @return bool true if a link to this method exists in package $package, subpackage $subpackage and class $class
- * @param string $expr method name
- * @param string $class class name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedMethod($expr,$package,$subpackage,$class,$file=false)
- {
- if ($file)
- return isset($this->linkswithfile[$package][$subpackage]['method'][$file][$class][$expr]);
- return isset($this->links[$package][$subpackage]['method'][$class][$expr]);
- }
-
- /**
- * do not override
- * @return bool true if a link to this method exists in package $package, subpackage $subpackage and class $class
- * @param string $expr var name
- * @param string $class class name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedVar($expr,$package,$subpackage,$class,$file=false)
- {
- if ($file)
- return isset($this->linkswithfile[$package][$subpackage]['var'][$file][$class][$expr]);
- return isset($this->links[$package][$subpackage]['var'][$class][$expr]);
- }
-
- /**
- * do not override
- * @return bool true if a link to this method exists in package $package, subpackage $subpackage and class $class
- * @param string $expr constant name
- * @param string $class class name
- * @param string $package package to search in
- * @param string $subpackage subpackage to search in
- * @access private
- */
- function isLinkedConst($expr,$package,$subpackage,$class,$file=false)
- {
- if ($file)
- return isset($this->linkswithfile[$package][$subpackage]['const'][$file][$class][$expr]);
- return isset($this->links[$package][$subpackage]['const'][$class][$expr]);
- }
-
- /**
- * return false or a {@link classLink} to $expr
- * @param string $expr class name
- * @param string $package package name
- * @return mixed returns a {@link classLink} or false if the element is not found in package $package
- * @see classLink
- */
- function getClassLink($expr,$package,$file=false, $text = false)
- {
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedClass($expr,$package,$subpackage,$file))
- {
- if ($file)
- {
- return $this->linkswithfile[$package][$subpackage]['class'][$file][$expr];
- }
- return $this->links[$package][$subpackage]['class'][$expr];
- }
- }
- return false;
- }
-
- /**
- * return false or a {@link functionLink} to $expr
- * @param string $expr function name
- * @param string $package package name
- * @return mixed returns a {@link functionLink} or false if the element is not found in package $package
- * @see functionLink
- */
- function getFunctionLink($expr,$package,$file=false, $text = false)
- {
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedFunction($expr,$package,$subpackage,$file))
- {
- if ($file)
- {
- return $this->linkswithfile[$package][$subpackage]['function'][$file][$expr];
- }
- return $this->links[$package][$subpackage]['function'][$expr];
- }
- }
- return false;
- }
-
- /**
- * return false or a {@link defineLink} to $expr
- * @param string $expr constant name
- * @param string $package package name
- * @return mixed returns a {@link defineLink} or false if the element is not found in package $package
- * @see defineLink
- */
- function getDefineLink($expr,$package,$file=false, $text = false)
- {
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedDefine($expr,$package,$subpackage,$file))
- {
- if ($file)
- {
- return $this->linkswithfile[$package][$subpackage]['define'][$file][$expr];
- }
- return $this->links[$package][$subpackage]['define'][$expr];
- }
- }
- return false;
- }
-
- /**
- * return false or a {@link globalLink} to $expr
- * @param string $expr global variable name (with leading $)
- * @param string $package package name
- * @return mixed returns a {@link defineLink} or false if the element is not found in package $package
- * @see defineLink
- */
- function getGlobalLink($expr,$package,$file=false, $text = false)
- {
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedGlobal($expr,$package,$subpackage,$file))
- {
- if ($file)
- {
- return $this->linkswithfile[$package][$subpackage]['global'][$file][$expr];
- }
- return $this->links[$package][$subpackage]['global'][$expr];
- }
- }
- return false;
- }
-
- /**
- * return false or a {@link pageLink} to $expr
- * @param string $expr procedural page name
- * @param string $package package name
- * @return mixed returns a {@link pageLink} or false if the element is not found in package $package
- * @see pageLink
- */
- function getPageLink($expr,$package,$path = false, $text = false, $packages = false)
- {
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedPage($expr,$package,$subpackage,$path))
- {
- if ($path)
- {
- return $this->linkswithfile[$package][$subpackage]['page'][$path][$expr];
- }
- return $this->links[$package][$subpackage]['page'][$expr];
- }
- }
- return false;
- }
-
- /**
- * return false or a {@link methodLink} to $expr in $class
- * @param string $expr method name
- * @param string $class class name
- * @param string $package package name
- * @return mixed returns a {@link methodLink} or false if the element is not found in package $package, class $class
- * @see methodLink
- */
- function getMethodLink($expr,$class,$package,$file=false, $text = false)
- {
- $expr = trim($expr);
- $class = trim($class);
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedMethod($expr,$package,$subpackage,$class,$file))
- {
- if ($file)
- {
- return $this->linkswithfile[$package][$subpackage]['method'][$file][$class][$expr];
- }
- return $this->links[$package][$subpackage]['method'][$class][$expr];
- }
- }
- return false;
- }
-
- /**
- * return false or a {@link varLink} to $expr in $class
- * @param string $expr var name
- * @param string $class class name
- * @param string $package package name
- * @return mixed returns a {@link varLink} or false if the element is not found in package $package, class $class
- * @see varLink
- */
- function getVarLink($expr,$class,$package,$file=false, $text = false)
- {
- $expr = trim($expr);
- $class = trim($class);
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedVar($expr,$package,$subpackage,$class,$file))
- {
- if ($file)
- {
- return $this->linkswithfile[$package][$subpackage]['var'][$file][$class][$expr];
- }
- return $this->links[$package][$subpackage]['var'][$class][$expr];
- }
- }
- return false;
- }
-
- /**
- * return false or a {@link constLink} to $expr in $class
- * @param string $expr constant name
- * @param string $class class name
- * @param string $package package name
- * @return mixed returns a {@link varLink} or false if the element is not found in package $package, class $class
- * @see constLink
- */
- function getConstLink($expr,$class,$package,$file=false, $text = false)
- {
- $expr = trim($expr);
- $class = trim($class);
- if (!isset($this->links[$package])) return false;
- foreach($this->links[$package] as $subpackage => $notused)
- {
- if ($this->isLinkedConst($expr,$package,$subpackage,$class,$file))
- {
- if ($file)
- {
- return $this->linkswithfile[$package][$subpackage]['const'][$file][$class][$expr];
- }
- return $this->links[$package][$subpackage]['const'][$class][$expr];
- }
- }
- return false;
- }
-
- /**
- * The meat of the @tutorial tag and inline {@}tutorial} tag
- *
- * Take a string and return an abstract link to the tutorial it represents.
- * Since tutorial naming literally works like the underlying filesystem, the
- * way to reference the tutorial is similar. Tutorials are located in a
- * subdirectory of any directory parsed, which is named 'tutorials/' (we
- * try to make things simple when we can :). They are further organized by
- * package and subpackage as:
- *
- * tutorials/package/subpackage
- *
- * and the files are named *.cls, *.pkg, or *.proc, and so a link to a tutorial
- * named file.cls can be referenced (depending on context) as any of:
- *
- * <code>
- * * @tutorial package/subpackage/file.cls
- * * @tutorial package/file.cls
- * * @tutorial file.cls
- * </code>
- *
- * The first case will only be needed if file.cls exists in both the current
- * package, in anotherpackage/file.cls and in anotherpackage/subpackage/file.cls
- * and you wish to reference the one in anotherpackage/subpackage.
- * The second case is only needed if you wish to reference file.cls in another
- * package and it is unique in that package. the third will link to the first
- * file.cls it finds using this search method:
- *
- * <ol>
- * <li>current package/subpackage</li>
- * <li>all other subpackages of current package</li>
- * <li>parent package, if this package has classes that extend classes in
- * another package</li>
- * <li>all other packages</li>
- * </ol>
- * @return tutorialLink|string returns either a link, or the original text, if not found
- * @param string the original expression
- * @param string package to look in first
- * @param string subpackage to look in first
- * @param array array of package names to search in if not found in parent packages.
- * This is used to limit the search, phpDocumentor automatically searches
- * all packages
- * @since 1.2
- */
- function getTutorialLink($expr, $package = false, $subpackage = false, $packages = false)
- {
- // is $expr a comma-delimited list?
- if (strpos($expr,','))
- {
- $a = explode(',',$expr);
- $b = array();
- for($i=0;$i<count($a);$i++)
- {
- // if so return each component with a link
- $b[] = Converter::getTutorialLink(trim($a[$i]));
- }
- return $b;
- }
- $subsection = '';
- if (strpos($expr,'#'))
- {
- $a = explode('#',$expr);
- $org = $expr;
- $expr = $a[0];
- $subsection = $a[1];
- }
- if (strpos($expr,'/'))
- {
- $a = explode('/',$expr);
- if (count($a) == 3)
- {
- return Converter::getTutorialLink($a[2],$a[0],$a[1],array());
- }
- if (count($a) == 2)
- {
- return Converter::getTutorialLink($a[1],$a[0],false,array());
- }
- }
- if (!$package) $package = $this->package;
- if (!$subpackage) $subpackage = $this->subpackage;
- if (!isset($this->all_packages[$package])) return $expr;
- elseif (isset($packages[$package])) unset($packages[$package]);
- $ext = pathinfo($expr, PATHINFO_EXTENSION);
- if (isset($this->tutorials[$package][$subpackage][$ext][$expr]))
- {
- $a = $this->tutorials[$package][$subpackage][$ext][$expr];
- $link = new tutorialLink;
- $link->addLink($subsection,$a->path,$a->name,$a->package,$a->subpackage,$a->getTitle($this,$subsection));
- return $link;
- }
- do
- {
- if (!is_array($packages))
- {
- $packages = $this->all_packages;
- if (isset($packages[$package])) unset($packages[$package]);
- }
- if (isset($this->tutorials[$package]))
- {
- if (isset($this->tutorials[$package][$subpackage][$ext][$expr]))
- {
- $a = $this->tutorials[$package][$subpackage][$ext][$expr];
- $link = new tutorialLink;
- $link->addLink($subsection,$a->path,$a->name,$a->package,$a->subpackage,$a->getTitle($this));
- return $link;
- } else
- {
- foreach($this->tutorials[$package] as $subpackage => $stuff)
- {
- if (isset($stuff[$ext][$expr]))
- {
- $a = $stuff[$ext][$expr];
- $link = new tutorialLink;
- $link->addLink($subsection,$a->path,$a->name,$a->package,$a->subpackage,$a->getTitle($this));
- return $link;
- }
- }
- }
- }
- // try other packages
- // look in parent package first, if found
- if (isset($this->package_parents[$package]))
- {
- $p1 = $package;
- $package = $this->package_parents[$package];
- } else
- {
- // no parent package, so start with the first one that's left
- list($package,) = @each($packages);
- }
- if ($package)
- {
- if (isset($packages[$package])) unset($packages[$package]);
- }
- } while (count($packages) || $package);
- addWarning(PDERROR_TUTORIAL_NOT_FOUND,$expr);
- return $expr;
- }
-
- /**
- * The meat of the @see tag and inline {@}link} tag
- *
- * $expr is a string with many allowable formats:
- * <ol>
- * <li>proceduralpagename.ext</li>
- * <li>constant_name</li>
- * <li>classname::function()</li>
- * <li>classname::constantname</li> (new 1.2.4)
- * <li>classname::$variablename</li>
- * <li>classname</li>
- * <li>function functionname()</li>
- * <li>global $globalvarname</li>
- * <li>packagename#expr where expr is any of the above</li>
- * </ol>
- *
- * New in version 1.1, you can explicitly specify a package to link to that
- * is different from the current package. Use the # operator
- * to specify a new package, as in tests#bug-540368.php (which should appear
- * as a link like: "{@link tests#bug-540368.php}"). This
- * example links to the procedural page bug-540368.php in package
- * tests. Also, the "function" operator is now used to specifically
- * link to a function instead of a method in the current class.
- *
- * <code>
- * class myclass
- * {
- * // from inside the class definition, use "function conflict()" to refer to procedural function "conflict()"
- * function conflict()
- * {
- * }
- * }
- *
- * function conflict()
- * {
- * }
- * </code>
- *
- * If classname:: is not present, and the see tag is in a documentation
- * block within a class, then the function uses the classname to
- * search for $expr as a function or variable within classname, or any of its parent classes.
- * given an $expr without '$', '::' or '()' getLink first searches for
- * classes, procedural pages, constants, global variables, and then searches for
- * methods and variables within the default class, and finally for any function
- *
- * @param string $expr expression to search for a link
- * @param string $package package to start searching in
- * @param array $packages list of all packages to search in
- * @return mixed getLink returns a descendant of {@link abstractLink} if it finds a link, otherwise it returns a string
- * @see getPageLink(), getDefineLink(), getVarLink(), getFunctionLink(), getClassLink()
- * @see pageLink, functionLink, defineLink, classLink, methodLink, varLink
- */
- function &getLink($expr, $package = false, $packages = false)
- {
- // is $expr a comma-delimited list?
- if (strpos($expr,','))
- {
- $a = explode(',',$expr);
- $b = array();
- for($i=0;$i<count($a);$i++)
- {
- // if so return each component with a link
- $b[] = Converter::getLink(trim($a[$i]));
- }
- return $b;
- }
- if (strpos($expr,'#'))
- {
- $a = explode('#',$expr);
- if (count($a) == 2)
- { // can have exactly 1 package override, otherwise it's ignored
- // feature 564991, link to php manual
- if ($a[0] == 'PHP_MANUAL')
- return 'http://www.php.net/'.$a[1];
- return Converter::getLink($a[1],$a[0],array());
- }
- }
- $a = &$this->_getLink($expr, $package, $packages);
- return $a;
- }
-
- /**
- * @access private
- */
- function &_getLink($expr, $package = false, $packages = false)
- {
- if (!$package) $package = $this->package;
- //
- if (!isset($this->all_packages[$package])) return $expr;
- elseif (isset($packages[$package])) unset($packages[$package]);
- $links = &$this->links;
- $class = $this->class;
- if (strpos($expr,'function ') === 0)
- { // asking for a function, not a method
- if ($test = Converter::getFunctionLink(str_replace('function ','',str_replace('()','',$expr)), $package)) return $test;
- else return $expr;
- }
- if (strpos($expr,'global ') === 0)
- { // asking for a global variable
- if ($test = Converter::getGlobalLink(str_replace('global ','',$expr), $package)) return $test;
- else return $expr;
- }
- if (strpos($expr,'object ') === 0)
- { // asking for a class
- if ($test = Converter::getClassLink(str_replace('object ','',$expr), $package)) return $test;
- else return $expr;
- }
- if (strpos($expr,'constant ') === 0)
- { // asking for a class
- if ($test = Converter::getDefineLink(str_replace('constant ','',$expr), $package)) return $test;
- else return $expr;
- }
- // are we in a class?
- if ($class)
- {
- // is $expr simply a word? see if it is the class
- if (trim($expr) == $class)
- {
- if ($test = Converter::getClassLink(trim(str_replace('object ','',$expr)),$package)) return $test;
- }
- // if not, check to see if it is a method or variable of this class tree
- if (!strpos($expr,'::'))
- {
- // if get is neither get() nor $get, assume get is a function, add () to make get()
- if (strpos($expr,'$') !== 0 && !strpos($expr,'()')) //$get = $get.'()';
- {
- if ($a = $this->getLinkMethod($expr,$class,$package)) return $a;
- if ($a = $this->getLinkConst($expr,$class,$package)) return $a;
- if ($a = $this->getLinkVar('$'.$expr,$class,$package)) return $a;
- }
- if (strpos($expr,'()')) if ($a = $this->getLinkMethod($expr,$class,$package)) return $a;
- if (is_numeric(strpos($expr,'$'))) if ($a = $this->getLinkVar($expr,$class,$package)) return $a;
- }
- }
- if ($test = Converter::getClassLink(trim(str_replace('object ','',$expr)),$package)) return $test;
- if ($test = Converter::getPageLink(trim($expr),$package)) return $test;
- if ($test = Converter::getDefineLink(trim($expr),$package)) return $test;
- if ($test = Converter::getGlobalLink(trim($expr),$package)) return $test;
-// if (strpos($expr,'.'))
- // package specified
-
- if (!is_array($packages))
- {
- $packages = $this->all_packages;
- }
- do
- {
- if (isset($packages[$package])) unset($packages[$package]);
- if ($test = Converter::getClassLink(str_replace('object ','',$expr),$package)) return $test;
- if ($test = Converter::getPageLink($expr,$package)) return $test;
- if ($test = Converter::getDefineLink($expr,$package)) return $test;
- if ($test = Converter::getGlobalLink($expr,$package)) return $test;
- // is $expr in class::method() or class::$variable format?
- if (strpos($expr,'function ') === 0)
- { // asking for a function, not a method
- if ($test = Converter::getFunctionLink(str_replace('function','',str_replace('()','',$expr)), $package)) return $test;
- else return $expr;
- }
- $test = $this->_getDoubleColon($expr, $package, $packages, $class, $links);
- if (!is_string($test)) return $test;
- if (strpos($test, 'parent::') === 0) return $test;
- // $expr does not have ::
- if (is_numeric(@strpos('$',$expr)))
- {
- // default to current class, whose name is contained in $this->render->parent
- if ($test = Converter::getVarLink($expr, $class, $package)) return $test;
- }
- // $expr is a function? (non-method)
- if (@strpos($expr,'()'))
- {
- // otherwise, see if it is a method
- if ($class)
- {
- if ($test = Converter::getMethodLink(str_replace('()','',$expr), $class, $package)) return $test;
- }
- // extract the function name, use it to retrieve the file that the function is in
- // $page = $this->func_page[str_replace('function ','',str_replace('()','',$expr))];
- // return the link
- if ($test = Converter::getFunctionLink(str_replace('function ','',str_replace('()','',$expr)), $package)) return $test;
- }
- // $expr is just a word. First, test to see if it is a function of the current package
- if ($test = Converter::getFunctionLink(str_replace('function ','',str_replace('()','',$expr)), $package)) return $test;
- // try other packages
- // look in parent package first, if found
- if (isset($this->package_parents[$package]) && in_array($this->package_parents[$package], $packages))
- {
- $p1 = $package;
- $package = $this->package_parents[$package];
- if ($package)
- {
- if (isset($packages[$package])) unset($packages[$package]);
- }
- continue;
- }
- // no parent package, so start with the first one that's left
- $package = @array_shift(@array_keys($packages));
- if ($package && isset($packages[$package]))
- {
- unset($packages[$package]);
- }
- } while (count($packages) || $package);
- $funcs = get_defined_functions();
- // feature 564991, link to php manual
- if (in_array(str_replace(array('(',')'),array('',''),$expr),$funcs['internal']))
- {
- return 'http://www.php.net/'.str_replace(array('(',')'),array('',''),$expr);
- }
- // no links found
- return $expr;
- }
-
- /**
- * Split up getLink to make it easier to debug
- * @access private
- */
- function _getDoubleColon(&$expr, &$package, &$packages, $class, $links)
- {
- if (@strpos($expr,'::'))
- {
- $class_method = explode('::',$expr);
- if ($class_method[0] == 'parent')
- {
- // can only have parent in the same package as the class! subtle bug
- $package = $this->package;
- $packages = array();
- $cl = $this->classes->getClassByPackage($class,$package);
- if (!$cl)
- { // this is possible if an example file has parent::method()
- return $expr;
- }
- $par = $cl->getParent($this);
- $phpparent = false;
- if (is_object($par))
- {
- $package = $par->docblock->package;
- $phpparent = $par->getName();
- } else
- {
- addWarning(PDERROR_CLASS_PARENT_NOT_FOUND,$class,$package,$class_method[1]);
- return $expr;
- }
- if ($phpparent) $class_method[0] = $phpparent;
- }
- if (strpos($class_method[1],'()'))
- {
- // strip everything but the function name, return a link
- if ($test = Converter::getMethodLink(str_replace('()','',$class_method[1]), $class_method[0], $package)) return $test;
- }
- if ($test = Converter::getVarLink($class_method[1], $class_method[0], $package)) return $test;
- if ($test = Converter::getConstLink($class_method[1], $class_method[0], $package)) return $test;
- }
- return $expr;
- }
-
- /**
- * cycle through parent classes to retrieve a link to a method
- * do not use or override, used by getLink
- * @access private
- */
- function &getLinkMethod($expr, $class, $package)
- {
- $links = &$this->links;
- do
- {
- // is $expr in class::method() or class::$variable format?
- if (@strpos($expr,'::'))
- {
- $class_method = explode('::',$expr);
- if ($class_method[0] == 'parent')
- {
- $cl = $this->classes->getClassByPackage($class,$package);
- $par = $cl->getParent($this);
- $phpparent = false;
- if (is_object($par))
- {
- $package = $par->docblock->package;
- $phpparent = $par->getName();
- } else addWarning(PDERROR_CLASSPARENT_NOTFOUND,$class,$package,$class_method[1]);
- if ($phpparent) $class_method[0] = $phpparent;
- } else
- {
- $cl = $this->classes->getClassByPackage($class,$package);
- }
- if (strpos($class_method[1],'()'))
- {
- // strip everything but the function name, return a link
- if ($test = Converter::getMethodLink(str_replace('function ','',str_replace('()','',$class_method[1])), $class_method[0], $package)) return $test;
- }
- }
- if ($test = Converter::getMethodLink(str_replace('()','',$expr), $class, $package)) return $test;
- $cl = $this->classes->getClassByPackage($class,$package);
- if ($cl)
- {
- $par = $cl->getParent($this);
- if (is_object($par))
- {
- $package = $par->docblock->package;
- $class = $par->getName();
- } else $class = $par;
- } else $class = false;
- } while ($class);
- // no links found
- return false;
- }
-
- /**
- * cycle through parent classes to retrieve a link to a var
- * do not use or override, used by getLink
- * @access private
- */
- function &getLinkVar($expr, $class, $package)
- {
- $links = &$this->links;
- do
- {
- // is $expr in class::method() or class::$variable format?
- if (@strpos($expr,'::'))
- {
- $class_method = explode('::',$expr);
- if ($class_method[0] == 'parent')
- {
- $cl = $this->classes->getClassByPackage($class,$package);
- $phpparent = false;
- $par = $cl->getParent($this);
- if (is_object($par))
- {
- $package = $par->docblock->package;
- $phpparent = $par->getName();
- } else addWarning(PDERROR_CLASSPARENT_NOTFOUND,$class,$package,$class_method[1]);
- if ($phpparent) $class_method[0] = $phpparent;
- } else
- {
- $cl = $this->classes->getClassByPackage($class,$package);
- }
- if ($test = Converter::getVarLink($class_method[1], $class_method[0], $package)) return $test;
- if ($test = Converter::getVarLink('$'.$class_method[1], $class_method[0], $package)) return $test;
- }
- if ($test = Converter::getVarLink($expr, $class, $package)) return $test;
- if ($test = Converter::getVarLink('$'.$expr, $class, $package)) return $test;
- $cl = $this->classes->getClassByPackage($class,$package);
- if ($cl)
- {
- $par = $cl->getParent($this);
- if (is_object($par))
- {
- $package = $par->docblock->package;
- $class = $par->getName();
- } else $class = $par;
- } else $class = false;
- } while ($class);
- // no links found
- $class = false;
- return $class;
- }
-
- /**
- * cycle through parent classes to retrieve a link to a class constant
- * do not use or override, used by getLink
- * @access private
- * @since 1.2.4
- */
- function &getLinkConst($expr, $class, $package)
- {
- $links = &$this->links;
- do
- {
- // is $expr in class::method() or class::$variable format?
- if (@strpos($expr,'::'))
- {
- $class_method = explode('::',$expr);
- if ($class_method[0] == 'parent')
- {
- $cl = $this->classes->getClassByPackage($class,$package);
- $phpparent = false;
- $par = $cl->getParent($this);
- if (is_object($par))
- {
- $package = $par->docblock->package;
- $phpparent = $par->getName();
- } else addWarning(PDERROR_CLASSPARENT_NOTFOUND,$class,$package,$class_method[1]);
- if ($phpparent) $class_method[0] = $phpparent;
- } else
- {
- $cl = $this->classes->getClassByPackage($class,$package);
- }
- if ($test = Converter::getConstLink($class_method[1], $class_method[0], $package)) return $test;
- }
- if ($test = Converter::getConstLink($expr, $class, $package)) return $test;
- $cl = $this->classes->getClassByPackage($class,$package);
- if ($cl)
- {
- $par = $cl->getParent($this);
- if (is_object($par))
- {
- $package = $par->docblock->package;
- $class = $par->getName();
- } else $class = $par;
- } else $class = false;
- } while ($class);
- // no links found
- return false;
- }
-
- /**
- * take URL $link and text $text and return a link in the format needed for the Converter
- * @param string URL
- * @param string text to display
- * @return string link to $link
- * @abstract
- */
- function returnLink($link,$text)
- {
- }
-
- /**
- * take {@link abstractLink} descendant and text $eltext and return a link
- * in the format needed for the Converter
- * @param abstractLink
- * @param string
- * @return string link to $element
- * @abstract
- */
- function returnSee(&$link, $eltext = false)
- {
- }
-
- /**
- * take {@link abstractLink} descendant and text $eltext and return a
- * unique ID in the format needed for the Converter
- * @param abstractLink
- * @return string unique identifier of $element
- * @abstract
- */
- function getId(&$link)
- {
- }
-
- /**
- * Convert README/INSTALL/CHANGELOG file contents to output format
- * @param README|INSTALL|CHANGELOG
- * @param string contents of the file
- * @abstract
- */
- function Convert_RIC($name, $contents)
- {
- }
-
- /**
- * Convert all elements to output format
- *
- * This will call ConvertXxx where Xxx is {@link ucfirst}($element->type).
- * It is expected that a child converter defines a handler for every
- * element type, even if that handler does nothing. phpDocumentor will
- * terminate with an error if a handler doesn't exist.
- * {@internal
- * Since 1.2.0 beta 3, this function has been moved from child converters
- * to the parent, because it doesn't really make sense to put it in the
- * child converter, and we can add error handling.
- *
- * {@source}}}
- * @throws {@link PDERROR_NO_CONVERT_HANDLER}
- * @param mixed {@link parserElement} descendant or {@link parserPackagePage} or {@link parserData}
- */
- function Convert(&$element)
- {
- $handler = 'convert'.ucfirst($element->type);
- if (method_exists($this,$handler))
- {
- $this->$handler($element);
- } else
- {
- addErrorDie(PDERROR_NO_CONVERTER_HANDLER,$element->type,$handler,phpDocumentor_get_class($this));
- }
- }
- /**#@+
- * Conversion Handlers
- *
- * All of the convert* handlers set up template variables for the Smarty
- * template.{@internal In addition, the {@link newSmarty()} method is
- * called to retrieve the global Smarty template}}
- */
- /**
- * Default Tutorial Handler
- *
- * Sets up the tutorial template, and its prev/next/parent links
- * {@internal
- * Retrieves the title using {@link parserTutorial::getTitle()} and uses the
- * {@link parserTutorial::prev, parserTutorial::next, parserTutorial::parent}
- * links to set up those links.}}
- * @param parserTutorial
- */
- function &convertTutorial(&$element)
- {
- $this->package = $element->package;
- $this->subpackage = $element->subpackage;
- $x = $element->Convert($this);
- $template = &$this->newSmarty();
- $template->assign('contents',$x);
- $template->assign('title',$element->getTitle($this));
- $template->assign('nav',$element->parent || $element->prev || $element->next);
- if ($element->parent)
- {
- $template->assign('up',$this->getId($element->parent));
- $template->assign('uptitle',$element->parent->title);
- }
- if ($element->prev)
- {
- $template->assign('prev',$this->getId($element->prev));
- $template->assign('prevtitle',$element->prev->title);
- }
- if ($element->next)
- {
- $template->assign('next',$this->getId($element->next));
- $template->assign('nexttitle',$element->next->title);
- }
- return $template;
- }
- /**
- * Default Class Handler
- *
- * Sets up the class template.
- * {@internal special methods
- * {@link generateChildClassList(), generateFormattedClassTree()},
- * {@link getFormattedConflicts, getFormattedInheritedMethods},
- * and {@link getFormattedInheritedVars} are called to complete vital
- * template setup.}}
- */
- function convertClass(&$element)
- {
- $this->class = $element->getName();
- $this->class_data = &$this->newSmarty();
- $this->class_data->assign("class_name",$element->getName());
- $this->class_data->assign("vars",array());
- $this->class_data->assign("methods",array());
- $this->class_data->assign("consts",array());
- $this->class_data->assign("is_interface", $element->isInterface());
- $this->class_data->assign("implements", $this->getFormattedImplements($element));
- $this->class_data->assign("package",$element->docblock->package);
- $this->class_data->assign("line_number",$element->getLineNumber());
- $this->class_data->assign("source_location",$element->getSourceLocation($this));
- $this->class_data->assign("page_link",$this->getCurrentPageLink());
- $docblock = $this->prepareDocBlock($element, false);
- $this->class_data->assign("sdesc",$docblock['sdesc']);
- $this->class_data->assign("desc",$docblock['desc']);
- $this->class_data->assign("access", $docblock['access']);
- $this->class_data->assign("abstract", $docblock['abstract']);
- $this->class_data->assign("tags",$docblock['tags']);
- $this->class_data->assign("api_tags",$docblock['api_tags']);
- $this->class_data->assign("info_tags",$docblock['info_tags']);
- $this->class_data->assign("utags",$docblock['utags']);
- if ($this->hasSourceCode($element->getPath())) {
- $this->class_data->assign("class_slink",$this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true));
- }
-
- else
- $this->class_data->assign("class_slink",false);
- $this->class_data->assign("children", $this->generateChildClassList($element));
- $this->class_data->assign("class_tree", $this->generateFormattedClassTree($element));
- $this->class_data->assign("conflicts", $this->getFormattedConflicts($element,"classes"));
- $inherited_methods = $this->getFormattedInheritedMethods($element);
- if (!empty($inherited_methods))
- {
- $this->class_data->assign("imethods",$inherited_methods);
- } else
- {
- $this->class_data->assign("imethods",false);
- }
- $inherited_vars = $this->getFormattedInheritedVars($element);
- if (!empty($inherited_vars))
- {
- $this->class_data->assign("ivars",$inherited_vars);
- } else
- {
- $this->class_data->assign("ivars",false);
- }
- $inherited_consts = $this->getFormattedInheritedConsts($element);
- if (!empty($inherited_consts))
- {
- $this->class_data->assign("iconsts",$inherited_consts);
- } else
- {
- $this->class_data->assign("iconsts",false);
- }
- }
-
-
- /**
- * Converts method for template output
- *
- * This function must be called by a child converter with any extra
- * template variables needed in the parameter $addition
- * @param parserMethod
- */
- function convertMethod(&$element, $additions = array())
- {
- $fname = $element->getName();
- $docblock = $this->prepareDocBlock($element);
- $returntype = 'void';
- if ($element->isConstructor) $returntype = $element->class;
- if ($element->docblock->return)
- {
- $a = $element->docblock->return->Convert($this);
- $returntype = $element->docblock->return->converted_returnType;
- }
- $params = $param_i = array();
- if (count($element->docblock->params))
- foreach($element->docblock->params as $param => $val)
- {
- $a = $val->Convert($this);
- $params[] = $param_i[$param] = array("var" => $param,"datatype" => $val->converted_returnType,"data" => $a);
- }
-
- if ($element->docblock->hasaccess)
- $acc = $element->docblock->tags['access'][0]->value;
- else
- $acc = 'public';
-
-
- if ($this->hasSourceCode($element->getPath()))
- $additions["slink"] = $this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true);
- $this->class_data->append('methods',array_merge(
- array('sdesc' => $docblock['sdesc'],
- 'desc' => $docblock['desc'],
- 'access' => $docblock['access'],
- 'abstract' => $docblock['abstract'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'utags' => $docblock['utags'],
- 'constructor' => $element->isConstructor,
- 'access' => $acc,
- 'function_name' => $fname,
- 'function_return' => $returntype,
- 'function_call' => $element->getFunctionCall(),
- 'ifunction_call' => $element->getIntricateFunctionCall($this, $param_i),
- 'descmethod' => $this->getFormattedDescMethods($element),
- 'method_overrides' => $this->getFormattedOverrides($element),
- 'line_number' => $element->getLineNumber(),
- 'id' => $this->getId($element),
- 'params' => $params),
- $additions));
- }
-
- /**
- * Converts class variables for template output.
- *
- * This function must be called by a child converter with any extra
- * template variables needed in the parameter $addition
- * @param parserVar
- */
- function convertVar(&$element, $additions = array())
- {
- $docblock = $this->prepareDocBlock($element);
- $b = 'mixed';
-
- if ($element->docblock->hasaccess)
- $acc = $element->docblock->tags['access'][0]->value;
- else
- $acc = 'public';
-
- if ($element->docblock->var)
- {
- $b = $element->docblock->var->converted_returnType;
- }
- if ($this->hasSourceCode($element->getPath()))
- $additions["slink"] = $this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true);
- $this->class_data->append('vars',array_merge(
- array('sdesc' => $docblock['sdesc'],
- 'desc' => $docblock['desc'],
- 'abstract' => $docblock['abstract'],
- 'utags' => $docblock['utags'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'var_name' => $element->getName(),
- 'var_default' => $this->postProcess($element->getValue()),
- 'var_type' => $b,
- 'access' => $acc,
- 'line_number' => $element->getLineNumber(),
- 'descvar' => $this->getFormattedDescVars($element),
- 'var_overrides' => $this->getFormattedOverrides($element),
- 'id' => $this->getId($element)),
- $additions));
- }
-
- /**
- * Converts class constants for template output.
- *
- * This function must be called by a child converter with any extra
- * template variables needed in the parameter $addition
- * @param parserConst
- */
- function convertConst(&$element, $additions = array())
- {
- $docblock = $this->prepareDocBlock($element);
-
- if ($element->docblock->hasaccess)
- $acc = $element->docblock->tags['access'][0]->value;
- else
- $acc = 'public';
-
- if ($this->hasSourceCode($element->getPath()))
- $additions["slink"] = $this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true);
- $this->class_data->append('consts',array_merge(
- array('sdesc' => $docblock['sdesc'],
- 'desc' => $docblock['desc'],
- 'access' => $docblock['access'],
- 'abstract' => $docblock['abstract'],
- 'utags' => $docblock['utags'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'const_name' => $element->getName(),
- 'const_value' => $this->postProcess($element->getValue()),
- 'access' => $acc,
- 'line_number' => $element->getLineNumber(),
- 'id' => $this->getId($element)),
- $additions));
- }
-
- /**
- * Default Page Handler
- *
- * {@internal In addition to setting up the smarty template with {@link newSmarty()},
- * this class uses {@link getSourceLocation()} and {@link getClassesOnPage()}
- * to set template variables. Also used is {@link getPageName()}, to get
- * a Converter-specific name for the page.}}
- * @param parserPage
- */
- function convertPage(&$element)
- {
- $this->page_data = &$this->newSmarty(true);
- $this->page = $this->getPageName($element->parent);
- $this->path = $element->parent->getPath();
- $this->curpage = &$element->parent;
- $this->page_data->assign("source_location",$element->parent->getSourceLocation($this));
- $this->page_data->assign("functions",array());
- $this->page_data->assign("includes",array());
- $this->page_data->assign("defines",array());
- $this->page_data->assign("globals",array());
- $this->page_data->assign("classes",$this->getClassesOnPage($element));
- $this->page_data->assign("name", $element->parent->getFile());
- if ($t = $element->getTutorial())
- {
- $this->page_data->assign("tutorial",$this->returnSee($t));
- } else
- {
- $this->page_data->assign("tutorial",false);
- }
- if ($element->docblock)
- {
- $docblock = $this->prepareDocBlock($element, false);
- $this->page_data->assign("sdesc",$docblock['sdesc']);
- $this->page_data->assign("desc",$docblock['desc']);
- $this->page_data->assign("tags",$docblock['tags']);
- $this->page_data->assign("api_tags",$docblock['api_tags']);
- $this->page_data->assign("info_tags",$docblock['info_tags']);
- $this->page_data->assign("utags",$docblock['utags']);
- }
- }
-
- /**
- * Converts global variables for template output
- *
- * This function must be called by a child converter with any extra
- * template variables needed in the parameter $addition
- * {@internal
- * In addition to using {@link prepareDocBlock()}, this method also
- * uses utility functions {@link getGlobalValue(), getFormattedConflicts()}}}
- * @param parserGlobal
- * @uses postProcess() on global_value template value, makes it displayable
- * @param array any additional template variables should be in this array
- */
- function convertGlobal(&$element, $addition = array())
- {
- $docblock = $this->prepareDocBlock($element);
- $value = $this->getGlobalValue($element->getValue());
- if ($this->hasSourceCode($element->getPath()))
- $addition["slink"] = $this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true);
- $this->page_data->append('globals',array_merge(
- array('sdesc' => $docblock['sdesc'],
- 'desc' => $docblock['desc'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'utags' => $docblock['utags'],
- 'global_name' => $element->getName(),
- 'global_type' => $element->getDataType($this),
- 'global_value' => $this->postProcess($value),
- 'line_number' => $element->getLineNumber(),
- 'global_conflicts' => $this->getFormattedConflicts($element,"global variables"),
- 'id' => $this->getId($element)),
- $addition));
- }
-
- /**
- * Converts defines for template output
- *
- * This function must be called by a child converter with any extra
- * template variables needed in the parameter $addition
- * {@internal
- * In addition to using {@link prepareDocBlock()}, this method also
- * uses utility functions {@link getGlobalValue(), getFormattedConflicts()}}}
- * @param parserDefine
- * @uses postProcess() on define_value template value, makes it displayable
- * @param array any additional template variables should be in this array
- */
- function convertDefine(&$element, $addition = array())
- {
- $docblock = $this->prepareDocBlock($element);
- if ($this->hasSourceCode($element->getPath()))
- $addition["slink"] = $this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true);
- $this->page_data->append('defines',array_merge(
- array('sdesc' => $docblock['sdesc'],
- 'desc' => $docblock['desc'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'utags' => $docblock['utags'],
- 'define_name' => $element->getName(),
- 'line_number' => $element->getLineNumber(),
- 'define_value' => $this->postProcess($element->getValue()),
- 'define_conflicts' => $this->getFormattedConflicts($element,"defines"),
- 'id' => $this->getId($element)),
- $addition));
- }
-
-
- /**
- * Converts includes for template output
- *
- * This function must be called by a child converter with any extra
- * template variables needed in the parameter $addition
- * @see prepareDocBlock()
- * @param parserInclude
- */
- function convertInclude(&$element, $addition = array())
- {
- $docblock = $this->prepareDocBlock($element);
- $per = $this->getIncludeValue($element->getValue(), $element->getPath());
-
- if ($this->hasSourceCode($element->getPath()))
- $addition["slink"] = $this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true);
- $this->page_data->append('includes',array_merge(
- array('sdesc' => $docblock['sdesc'],
- 'desc' => $docblock['desc'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'utags' => $docblock['utags'],
- 'include_name' => $element->getName(),
- 'line_number' => $element->getLineNumber(),
- 'include_value' => $per),
- $addition));
- }
-
- /**
- * Converts function for template output
- *
- * This function must be called by a child converter with any extra
- * template variables needed in the parameter $addition
- * @see prepareDocBlock()
- * @param parserFunction
- */
- function convertFunction(&$element, $addition = array())
- {
- $docblock = $this->prepareDocBlock($element);
- $fname = $element->getName();
- $params = $param_i = array();
- if (count($element->docblock->params))
- foreach($element->docblock->params as $param => $val)
- {
- $a = $val->Convert($this);
- $params[] = $param_i[$param] = array("var" => $param,"datatype" => $val->converted_returnType,"data" => $a);
- }
- $returntype = 'void';
- if ($element->docblock->return)
- {
- $a = $element->docblock->return->Convert($this);
- $returntype = $element->docblock->return->converted_returnType;
- }
-
- if ($this->hasSourceCode($element->getPath()))
- $addition["slink"] = $this->getSourceAnchor($element->getPath(),$element->getLineNumber(),$element->getLineNumber(),true);
- $this->page_data->append('functions',array_merge(
- array('sdesc' => $docblock['sdesc'],
- 'desc' => $docblock['desc'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'utags' => $docblock['utags'],
- 'function_name' => $fname,
- 'function_return' => $returntype,
- 'function_conflicts' => $this->getFormattedConflicts($element,"functions"),
- 'ifunction_call' => $element->getIntricateFunctionCall($this, $param_i),
- 'function_call' => $element->getFunctionCall(),
- 'line_number' => $element->getLineNumber(),
- 'id' => $this->getId($element),
- 'params' => $params),
- $addition));
- }
- /**#@-*/
-
- /**
- * convert the element's DocBlock for output
- *
- * This function converts all tags and descriptions for output
- * @param mixed any descendant of {@link parserElement}, or {@link parserData}
- * @param array used to translate tagnames into other tags
- * @param boolean set to false for pages and classes, the only elements allowed to specify @package
- * @return array
- *
- * Format:
- * <pre>
- * array('sdesc' => DocBlock summary
- * 'desc' => DocBlock detailed description
- * 'tags' => array('keyword' => tagname, 'data' => tag description)
- * known tags
- * 'api_tags' => array('keyword' => tagname, 'data' => tag description)
- * known api documentation tags
- * 'info_tags' => array('keyword' => tagname, 'data' => tag description)
- * known informational tags
- * [ 'utags' => array('keyword' => tagname, 'data' => tag description
- * unknown tags ]
- * [ 'vartype' => type from @var/@return tag ]
- * [ 'var_descrip' => description from @var/@return tag ]
- * )
- * </pre>
- */
- function prepareDocBlock(&$element, $names = array(),$nopackage = true)
- {
- $tagses = $element->docblock->listTags();
- $tags = $ret = $api_tags = $info_tags = array();
- $api_tags_arr = array("abstract", "access", "deprecated", "example", "filesource",
- "global", "internal", "name", "return", "see", "static",
- "staticvar", "uses", "var");
- if (!$nopackage)
- {
- $tags[] = array('keyword' => 'package','data' => $element->docblock->package);
- if (!empty($element->docblock->subpackage)) $tags[] = array('keyword' => 'subpackage','data' => $element->docblock->subpackage);
- }
- if ($element->docblock->var)
- {
- $a = $element->docblock->var->Convert($this);
- $ret['vartype'] = $element->docblock->var->converted_returnType;
- if (!empty($a))
- {
- $tags[] = array('keyword' => 'var', 'data' => $a);
- $ret["var_descrip"] = $a;
- }
- }
- if ($element->docblock->return)
- {
- $a = $element->docblock->return->Convert($this);
- $ret['vartype'] = $element->docblock->return->converted_returnType;
- if (!empty($a))
- {
- $tags[] = $api_tags[] = array('keyword' => 'return', 'data' => $a);
- $ret["var_descrip"] = $a;
- }
- }
- if ($element->docblock->funcglobals)
- foreach($element->docblock->funcglobals as $global => $val)
- {
- if ($a = $this->getGlobalLink($global,$element->docblock->package))
- {
- $global = $a;
- }
- $b = Converter::getLink($val[0]);
- if (is_object($b) && phpDocumentor_get_class($b) == 'classlink')
- {
- $val[0] = $this->returnSee($b);
- }
- $tags[] = $api_tags[] = array('keyword' => 'global','data' => $val[0].' '.$global.': '.$val[1]->Convert($this));
- }
- if ($element->docblock->statics)
- foreach($element->docblock->statics as $static => $val)
- {
- $a = $val->Convert($this);
- $tags[] = $api_tags[] = array('keyword' => 'staticvar','data' => $val->converted_returnType.' '.$static.': '.$a);
- }
- foreach($tagses as $tag)
- {
- if (isset($names[$tag->keyword])) $tag->keyword = $names[$tag->keyword];
- if ($tag->keyword)
- $tags[] = array("keyword" => $tag->keyword,"data" => $tag->Convert($this));
- if (in_array($tag->keyword, $api_tags_arr))
- $api_tags[] = array("keyword" => $tag->keyword,"data" => $tag->Convert($this));
- else
- $info_tags[] = array("keyword" => $tag->keyword,"data" => $tag->Convert($this));
- }
- $utags = array();
- foreach($element->docblock->unknown_tags as $keyword => $tag)
- {
- foreach($tag as $t)
- $utags[] = array('keyword' => $keyword, 'data' => $t->Convert($this));
- }
- $ret['abstract'] = FALSE;
- $ret['access'] = 'public';
- foreach($tags as $tag)
- {
- if ($tag['keyword'] == 'access')
- $ret['access'] = $tag['data'];
- if ($tag['keyword'] == 'abstract')
- $ret['abstract'] = TRUE;
- }
- $ret['sdesc'] = $element->docblock->getSDesc($this);
- $ret['desc'] = $element->docblock->getDesc($this);
- $ret['tags'] = $tags;
- $ret['api_tags'] = $api_tags;
- $ret['info_tags'] = $info_tags;
- $ret['utags'] = $utags;
- return $ret;
- }
-
- /**
- * gets a list of all classes declared on a procedural page represented by
- * $element, a {@link parserData} class
- * @param parserData &$element
- * @return array links to each classes documentation
- *
- * Format:
- * <pre>
- * array('name' => class name,
- * 'sdesc' => summary of the class
- * 'link' => link to the class's documentation)
- * </pre>
- */
- function getClassesOnPage(&$element)
- {
- global $_phpDocumentor_setting;
- $a = $element->getClasses($this);
- $classes = array();
- foreach($a as $package => $clas)
- {
- if (isset($_phpDocumentor_setting['packageoutput']))
- {
- $packages = explode(',',$_phpDocumentor_setting['packageoutput']);
- if (!in_array($package, $packages)) continue;
- }
- for($i=0; $i<count($clas); $i++)
- {
- if ($this->parseprivate || ! ($clas[$i]->docblock && $clas[$i]->docblock->hasaccess && $clas[$i]->docblock->tags['access'][0]->value == 'private'))
- {
- $sdesc = '';
- $r = array();
- $sdesc = $clas[$i]->docblock->getSDesc($this);
- if ($clas[$i]->docblock->hasaccess)
- $r['access'] = $clas[$i]->docblock->tags['access'][0]->value;
- else
- $r['access'] = 'public';
- if (isset ($clas[$i]->docblock->tags['abstract']))
- $r['abstract'] = TRUE;
- else
- $r['abstract'] = FALSE;
- $r['name'] = $clas[$i]->getName();
- $r['sdesc'] = $sdesc;
- $r['link'] = $this->getClassLink($clas[$i]->getName(),$package,$clas[$i]->getPath());
- $classes[] = $r;
- }
- }
- }
- return $classes;
- }
-
- /**
- * returns an array containing the class inheritance tree from the root
- * object to the class.
- *
- * This method must be overridden, or phpDocumentor will halt with a fatal
- * error
- * @return string Converter-specific class tree for an individual class
- * @param parserClass class variable
- * @abstract
- */
-
- function generateFormattedClassTree($class)
- {
- addErrorDie(PDERROR_CONVERTER_OVR_GFCT,phpDocumentor_get_class($this));
- }
-
- /**
- * returns an array containing the class inheritance tree from the root
- * object to the class.
- *
- * This method must be overridden, or phpDocumentor will halt with a fatal
- * error
- * @return string Converter-specific class tree for an individual class
- * @param parserClass class variable
- * @abstract
- */
-
- function getFormattedImplements($el)
- {
- $ret = array();
- foreach ($el->getImplements() as $interface)
- {
- $ret[] = $this->returnSee($this->getLink($interface));
- }
- return $ret;
- }
-
- /**
- * @param mixed {@link parserClass, parserFunction, parserDefine} or
- * {@link parserGlobal}
- * @param string type to display. either 'class','function','define'
- * or 'global variable'
- * @return array links to conflicting elements, or empty array
- * @uses parserClass::getConflicts()
- * @uses parserFunction::getConflicts()
- * @uses parserDefine::getConflicts()
- * @uses parserGlobal::getConflicts()
- */
- function getFormattedConflicts(&$element,$type)
- {
- $conflicts = $element->getConflicts($this);
- $r = array();
- if (!$conflicts) return false;
- foreach($conflicts as $package => $class)
- {
- $r[] = $class->getLink($this,$class->docblock->package);
- }
- if (!empty($r)) $r = array('conflicttype' => $type, 'conflicts' => $r);
- return $r;
- }
-
- /**
- * Get a list of methods in child classes that override this method
- * @return array empty array or array(array('link'=>link to method,
- * 'sdesc'=>short description of the method),...)
- * @uses parserMethod::getOverridingMethods()
- * @param parserMethod
- */
- function getFormattedDescMethods(&$element)
- {
- $meths = $element->getOverridingMethods($this);
- $r = array();
- for($i=0; $i<count($meths); $i++)
- {
- $ms = array();
- $ms['link'] = $meths[$i]->getLink($this);
- $ms['sdesc'] = $meths[$i]->docblock->getSDesc($this);
- $r[] = $ms;
- }
- return $r;
- }
-
- /**
- * Get a list of vars in child classes that override this var
- * @return array empty array or array('link'=>link to var,
- * 'sdesc'=>short description of the method
- * @uses parserVar::getOverridingVars()
- * @param parserVar
- */
- function getFormattedDescVars(&$element)
- {
- $vars = $element->getOverridingVars($this);
- $r = array();
- for($i=0; $i<count($vars); $i++)
- {
- $vs = array();
- $vs['link'] = $vars[$i]->getLink($this);
- $vs['sdesc'] = $vars[$i]->docblock->getSDesc($this);
- $r[] = $vs;
- }
- return $r;
- }
-
- /**
- * Get the method this method overrides, if any
- * @return array|false array('link'=>link to overridden method,
- * 'sdesc'=>short description
- * @see parserMethod::getOverrides()
- * @param parserMethod
- */
- function getFormattedOverrides(&$element)
- {
- $ovr = $element->getOverrides($this);
- if (!$ovr) return false;
- $sdesc = $ovr->docblock->getSDesc($this);
- return array('link' => $ovr->getLink($this),'sdesc' => $sdesc);
- }
-
- /**
- * returns a list of child classes
- *
- * @param parserClass class variable
- * @uses parserClass::getChildClassList()
- */
-
- function generateChildClassList($class)
- {
- $kids = $class->getChildClassList($this);
- $list = array();
- if (count($kids))
- {
- for($i=0; $i<count($kids); $i++)
- {
- $lt['link'] = $kids[$i]->getLink($this);
- $lt['sdesc'] = $kids[$i]->docblock->getSDesc($this);
-
- if ($kids[$i]->docblock->hasaccess)
- $lt['access'] = $kids[$i]->docblock->tags['access'][0]->value;
- else
- $lt['access'] = 'public';
-
- $lt['abstract'] = isset ($kids[$i]->docblock->tags['abstract'][0]);
-
- $list[] = $lt;
- }
- } else return false;
- return $list;
- }
-
- /**
- * Return template-enabled list of inherited variables
- *
- * uses parserVar helper function getInheritedVars and generates a
- * template-enabled list using getClassLink()
- * @param parserVar $child class method
- * @see getClassLink(), parserVar::getInheritedVars()
- * @return array Format:
- * <pre>
- * array(
- * array('parent_class' => link to parent class's documentation,
- * 'ivars' =>
- * array(
- * array('name' => inherited variable name,
- * 'link' => link to inherited variable's documentation,
- * 'default' => default value of inherited variable,
- * 'sdesc' => summary of inherited variable),
- * ...),
- * ...)
- * </pre>
- */
-
- function getFormattedInheritedVars($child)
- {
- $package = $child->docblock->package;
- $subpackage = $child->docblock->subpackage;
- $ivars = $child->getInheritedVars($this);
- $results = array();
- if (!count($ivars)) return $results;
- foreach($ivars as $parent => $vars)
- {
- $file = $vars['file'];
- $vars = $vars['vars'];
- $par = $this->classes->getClass($parent,$file);
- $package = $par->docblock->package;
- usort($vars,array($this,"sortVar"));
- $result['parent_class'] = $this->getClassLink($parent,$package);
- foreach($vars as $var)
- {
- $info = array();
-
- if ($var->docblock->hasaccess)
- $info['access'] = $var->docblock->tags['access'][0]->value;
- else
- $info['access'] = 'public';
-
- $info['abstract'] = isset ($var->docblock->tags['abstract'][0]);
-
- $info['name'] = $var->getName();
- $info['link'] = $var->getLink($this);
- $info['default'] = $this->postProcess($var->getValue());
- if ($var->docblock)
- $info['sdesc'] = $var->docblock->getSDesc($this);
- $result["ivars"][] = $info;
- }
- $results[] = $result;
- $result = array();
- }
- return $results;
- }
-
- /**
- * Return template-enabled list of inherited methods
- *
- * uses parserMethod helper function getInheritedMethods and generates a
- * template-enabled list using getClassLink()
- * @param parserMethod $child class method
- * @see getClassLink(), parserMethod::getInheritedMethods()
- * @return array Format:
- * <pre>
- * array(
- * array('parent_class' => link to parent class's documentation,
- * 'ivars' =>
- * array(
- * array('name' => inherited variable name,
- * 'link' => link to inherited variable's documentation,
- * 'function_call' => {@link parserMethod::getIntricateFunctionCall()}
- * returned array,
- * 'sdesc' => summary of inherited variable),
- * ...),
- * ...)
- * </pre>
- */
-
- function getFormattedInheritedMethods($child)
- {
- $package = $child->docblock->package;
- $subpackage = $child->docblock->subpackage;
- $imethods = $child->getInheritedMethods($this);
- $results = array();
- if (!count($imethods)) return $results;
- foreach($imethods as $parent => $methods)
- {
- $file = $methods['file'];
- $methods = $methods['methods'];
- $par = $this->classes->getClass($parent,$file);
- $package = $par->docblock->package;
- usort($methods,array($this,"sortMethod"));
- $result['parent_class'] = $this->getClassLink($parent,$package);
- foreach($methods as $method)
- {
- $info = array();
-
- if ($method->docblock->hasaccess)
- $info['access'] = $method->docblock->tags['access'][0]->value;
- else
- $info['access'] = 'public';
-
- $info['abstract'] = isset ($method->docblock->tags['abstract'][0]);
-
- if ($method->isConstructor) $info['constructor'] = 1;
- $info['link'] = $method->getLink($this);
- $info['name'] = $method->getName();
- if ($method->docblock)
- $info['sdesc'] = $method->docblock->getSDesc($this);
- $params = array();
- if (count($method->docblock->params))
- foreach($method->docblock->params as $param => $val)
- {
- $a = $val->Convert($this);
- $params[$param] = array("var" => $param,"datatype" => $val->converted_returnType,"data" => $a);
- }
-
- $info['function_call'] = $method->getIntricateFunctionCall($this,$params);
- $result["imethods"][] = $info;
- }
- $results[] = $result;
- $result = array();
- }
- return $results;
- }
-
- /**
- * Return template-enabled list of inherited class constants
- *
- * uses parserConst helper function getInheritedConsts and generates a
- * template-enabled list using getClassLink()
- * @param parserConst $child class constant
- * @see getClassLink(), parserMethod::getInheritedConsts()
- * @return array Format:
- * <pre>
- * array(
- * array('parent_class' => link to parent class's documentation,
- * 'ivars' =>
- * array(
- * array('name' => inherited constant name,
- * 'link' => link to inherited constant's documentation,
- * 'value' => constant value,
- * 'sdesc' => summary of inherited constant),
- * ...),
- * ...)
- * </pre>
- */
-
- function getFormattedInheritedConsts($child)
- {
- $package = $child->docblock->package;
- $subpackage = $child->docblock->subpackage;
- $ivars = $child->getInheritedConsts($this);
- $results = array();
- if (!count($ivars)) return $results;
- foreach($ivars as $parent => $vars)
- {
- $file = $vars['file'];
- $vars = $vars['consts'];
- $par = $this->classes->getClass($parent,$file);
- $package = $par->docblock->package;
- usort($vars,array($this,"sortVar"));
- $result['parent_class'] = $this->getClassLink($parent,$package);
- foreach($vars as $var)
- {
- $info = array();
-
- if ($var->docblock->hasaccess)
- $info['access'] = $var->docblock->tags['access'][0]->value;
- else
- $info['access'] = 'public';
-
- $info['name'] = $var->getName();
- $info['link'] = $var->getLink($this);
- $info['value'] = $this->postProcess($var->getValue());
- if ($var->docblock)
- $info['sdesc'] = $var->docblock->getSDesc($this);
- $result["iconsts"][] = $info;
- }
- $results[] = $result;
- $result = array();
- }
- return $results;
- }
-
- /**
- * Return a Smarty template object to operate with
- *
- * This returns a Smarty template with pre-initialized variables for use.
- * If the method "SmartyInit()" exists, it is called.
- * @return Smarty
- */
- function &newSmarty()
- {
- $templ = new Smarty;
- $templ->use_sub_dirs = false;
- $templ->template_dir = realpath($this->smarty_dir . PATH_DELIMITER . 'templates');
- $templ->compile_dir = realpath($this->smarty_dir . PATH_DELIMITER . 'templates_c');
- $templ->config_dir = realpath($this->smarty_dir . PATH_DELIMITER . 'configs');
- $templ->assign("date",date("r",time()));
- $templ->assign("maintitle",$this->title);
- $templ->assign("package",$this->package);
- $templ->assign("phpdocversion",PHPDOCUMENTOR_VER);
- $templ->assign("phpdocwebsite",PHPDOCUMENTOR_WEBSITE);
- $templ->assign("subpackage",$this->subpackage);
- if (method_exists($this,'SmartyInit')) return $this->SmartyInit($templ);
- return $templ;
- }
-
- /**
- * do all necessary output
- * @see Converter
- * @abstract
- */
- function Output($title)
- {
- phpDocumentor_out("WARNING: Generic Converter::Output was used, no output will be generated");
- }
-
- /**
- * Set the template directory with a different template base directory
- * @tutorial phpDocumentor.howto.pkg#using.command-line.templatebase
- * @param string template base directory
- * @param string template name
- */
- function setTemplateBase($base, $dir)
- {
- // remove trailing /'s from the base path, if any
- $base = str_replace('\\','/',$base);
- while ($base{strlen($base) - 1} == '/') $base = substr($base,0,strlen($base) - 1);
- $this->templateName = substr($dir,0,strlen($dir) - 1);
- $this->templateDir = $base . "/Converters/" . $this->outputformat . "/" . $this->name . "/templates/" . $dir;
- if (!is_dir($this->templateDir))
- {
- addErrorDie(PDERROR_TEMPLATEDIR_DOESNT_EXIST, $this->templateDir);
- }
-
- $this->smarty_dir = $this->templateDir;
- if (file_exists($this->templateDir . PATH_DELIMITER . 'options.ini'))
- {
- // retrieve template options, allow array creation
- $this->template_options = phpDocumentor_parse_ini_file($this->templateDir . PATH_DELIMITER . 'options.ini',true);
- }
- }
-
- /**
- * sets the template directory based on the {@link $outputformat} and {@link $name}
- * Also sets {@link $templateName} to the $dir parameter
- * @param string subdirectory
- */
- function setTemplateDir($dir)
- {
- if ('@DATA-DIR@' != '@'.'DATA-DIR@') {
- $templateBase = str_replace('\\', '/', '@DATA-DIR@/PhpDocumentor/phpDocumentor');
- } else {
- $templateBase = str_replace('\\','/',$GLOBALS['_phpDocumentor_install_dir']) . '/phpDocumentor';
- }
- $this->setTemplateBase($templateBase, $dir);
- }
-
- /**
- * Get the absolute path to the converter's base directory
- * @return string
- */
- function getConverterDir()
- {
- if (/*@donotremove*/0) {
- return str_replace('\\', '/', "@DATA-DIR@/PhpDocumentor/phpDocumentor/Converters/") . $this->outputformat . "/" . $this->name;
- } else {
- return str_replace('\\','/',$GLOBALS['_phpDocumentor_install_dir']) ."/phpDocumentor/Converters/" . $this->outputformat . "/" . $this->name;
- }
- }
-
- /**
- * Parse a global variable's default value for class initialization.
- *
- * If a global variable's default value is "new class" as in:
- * <code>
- * $globalvar = new Parser
- * </code>
- * This method will document it not as "new Parser" but instead as
- * "new {@link Parser}". For examples, see {@link phpdoc.inc}.
- * Many global variables are classes, and phpDocumentor links to their
- * documentation
- * @return string default global variable value with link to class if
- * it's "new Class"
- * @param string default value of a global variable.
- */
- function getGlobalValue($value)
- {
- if (strpos($value,'new') === 0)
- {
- preg_match('/new([^(]*)(.*)/',$value,$newval);
- if (isset($newval[1]))
- {
- $a = Converter::getLink(trim($newval[1]));
- if (!isset($newval[2])) $newval[2] = '';
- if ($a && phpDocumentor_get_class($a) == 'classlink') $value = 'new '.$this->returnSee($a).$newval[2];
- }
- }
- return $value;
- }
-
- /**
- * Parse an include's file to see if it is a file documented in this project
- *
- * Although not very smart yet, this method will try to look for the
- * included file file.ext:
- *
- * <code>
- * include ("file.ext");
- * </code>
- *
- * If it finds it, it will return a link to the file's documentation. As of
- * 1.2.0rc1, phpDocumentor is smarty enough to find these cases:
- * <ul>
- * <li>absolute path to file</li>
- * <li>./file.ext or ../file.ext</li>
- * <li>relpath/to/file.ext if relpath is a subdirectory of the base parse
- * directory</li>
- * </ul>
- * For examples, see {@link Setup.inc.php} includes.
- * Every include auto-links to the documentation for the file that is included
- * @return string included file with link to docs for file, if found
- * @param string file included by include statement.
- * @param string path of file that has the include statement
- */
- function getIncludeValue($value, $ipath)
- {
- preg_match('/"([^"\']*\.[^"\']*)"/',$value,$match);
- if (!isset($match[1]))
- preg_match('/\'([^"\']*\.[^"\']*)\'/',$value,$match);
- if (isset($match[1]))
- {
- $fancy_per = $this->proceduralpages->pathMatchesParsedFile($match[1],$ipath);
- if ($fancy_per)
- {
- $link = $this->addLink($fancy_per);
- if (is_object($link) && phpDocumentor_get_class($link) == 'pagelink' &&
- isset($this->all_packages[$link->package]))
- {
- $value = $this->returnSee($link,$value);
- }
- } else
- {
- $per = Converter::getLink($match[1]);
- if (is_object($per) && phpDocumentor_get_class($per) == 'pagelink')
- $value = $this->returnSee($per);
- }
- }
- return $value;
- }
-
- /**
- * Recursively creates all subdirectories that don't exist in the $dir path
- * @param string $dir
- */
- function createParentDir($dir)
- {
- if (empty($dir)) return;
- $tmp = explode(SMART_PATH_DELIMITER,$dir);
- array_pop($tmp);
- $parent = implode(SMART_PATH_DELIMITER,$tmp);
- if ($parent != '' && !file_exists($parent))
- {
- $test = @mkdir($parent,0775);
- if (!$test)
- {
- $this->createParentDir($parent);
- $test = @mkdir($parent,0775);
- phpDocumentor_out("Creating Parent Directory $parent\n");
- } else
- {
- phpDocumentor_out("Creating Parent Directory $parent\n");
- }
- }
- }
-
- /**
- * Sets the output directory for generated documentation
- * @param string $dir the output directory
- */
- function setTargetDir($dir)
- {
- if (strlen($dir) > 0)
- {
- $this->targetDir = $dir;
- // if directory does exist create it, this should have more error checking in the future
- if (!file_exists($dir))
- {
- $tmp = str_replace(array("/","\\"),SMART_PATH_DELIMITER,$dir);
- if (substr($tmp,-1) == SMART_PATH_DELIMITER)
- {
- $tmp = substr($tmp,0,(strlen($tmp)-1));
- }
- $this->createParentDir($tmp);
- phpDocumentor_out("Creating Directory $dir\n");
- mkdir($dir,0775);
- }
- else if (!is_dir($dir))
- {
- echo "Output path: '$dir' is not a directory\n";
- die();
- }
- } else {
- echo "a target directory must be specified\n try phpdoc -h\n";
- die();
- }
- }
-
- /**
- * Writes a file to target dir
- * @param string
- * @param string
- * @param boolean true if the data is binary and not text
- */
- function writeFile($file,$data,$binary = false)
- {
- if (!file_exists($this->targetDir))
- {
- mkdir($this->targetDir,0775);
- }
- $string = '';
- if ($binary) $string = 'binary file ';
- phpDocumentor_out(" Writing $string".$this->targetDir . PATH_DELIMITER . $file . "\n");
- flush();
- $write = 'w';
- if ($binary) $write = 'wb';
- $fp = fopen($this->targetDir . PATH_DELIMITER . $file,$write);
- set_file_buffer( $fp, 0 );
- fwrite($fp,$data,strlen($data));
- fclose($fp);
- }
-
- /**
- * Copies a file from the template directory to the target directory
- * thanks to Robert Hoffmann for this fix
- * @param string
- */
- function copyFile($file, $subdir = '')
- {
- if (!file_exists($this->targetDir))
- {
- mkdir($this->targetDir,0775);
- }
- copy($this->templateDir . $subdir . PATH_DELIMITER . $file, $this->targetDir . PATH_DELIMITER . $file);
- }
-
- /**
- * Return parserStringWithInlineTags::Convert() cache state
- * @see parserStringWithInlineTags::Convert()
- * @abstract
- */
- function getState()
- {
- return true;
- }
-
- /**
- * Compare parserStringWithInlineTags::Convert() cache state to $state
- * @param mixed
- * @see parserStringWithInlineTags::Convert()
- * @abstract
- */
- function checkState($state)
- {
- return true;
- }
-
-}
-
-/**
- * @access private
- * @see Converter::getSortedClassTreeFromClass()
- */
-function rootcmp($a, $b)
-{
- return strnatcasecmp($a['class'],$b['class']);
-}
-
-/**
- * @access private
- * @global string used to make the first tutorials converted the default package tutorials
- */
-function tutorialcmp($a, $b)
-{
- global $phpDocumentor_DefaultPackageName;
- if ($a == $phpDocumentor_DefaultPackageName) return -1;
- if ($b == $phpDocumentor_DefaultPackageName) return 1;
- return strnatcasecmp($a, $b);
-}
-
-/**
- * smart htmlentities, doesn't entity the allowed tags list
- * Since version 1.1, this function uses htmlspecialchars instead of
- * htmlentities, for international support
- * This function has been replaced by functionality in {@link ParserDescCleanup.inc}
- * @param string $s
- * @return string browser-displayable page
- * @deprecated As of v1.2, No longer needed, as valid tags are parsed out of the source,
- * and everything else is {@link Converter::postProcess()} handled
- */
-function adv_htmlentities($s)
-{
- return;
- global $phpDocumentor___html,$_phpDocumentor_html_allowed;
- $result = htmlspecialchars($s);
- $entities = array_flip(get_html_translation_table(HTML_SPECIALCHARS));
- $result = strtr($result,$phpDocumentor___html);
- $matches = array();
- preg_match_all('/(&lt;img.*&gt;)/U',$result,$matches);
- for($i=0;$i<count($matches[1]);$i++)
- {
- $result = str_replace($matches[1][$i],strtr($matches[1][$i],array_flip(get_html_translation_table(HTML_SPECIALCHARS))),$result);
- }
- preg_match_all('/(&lt;font.*&gt;)/U',$result,$matches);
- for($i=0;$i<count($matches[1]);$i++)
- {
- $result = str_replace($matches[1][$i],strtr($matches[1][$i],array_flip(get_html_translation_table(HTML_SPECIALCHARS))),$result);
- }
- preg_match_all('/(&lt;ol.*&gt;)/U',$result,$matches);
- for($i=0;$i<count($matches[1]);$i++)
- {
- $result = str_replace($matches[1][$i],strtr($matches[1][$i],array_flip(get_html_translation_table(HTML_SPECIALCHARS))),$result);
- }
- preg_match_all('/(&lt;ul.*&gt;)/U',$result,$matches);
- for($i=0;$i<count($matches[1]);$i++)
- {
- $result = str_replace($matches[1][$i],strtr($matches[1][$i],array_flip(get_html_translation_table(HTML_SPECIALCHARS))),$result);
- }
- preg_match_all('/(&lt;li.*&gt;)/U',$result,$matches);
- for($i=0;$i<count($matches[1]);$i++)
- {
- $result = str_replace($matches[1][$i],strtr($matches[1][$i],array_flip(get_html_translation_table(HTML_SPECIALCHARS))),$result);
- }
- preg_match_all('/(&lt;a .*&gt;)/U',$result,$matches);
- for($i=0;$i<count($matches[1]);$i++)
- {
- $result = str_replace($matches[1][$i],strtr($matches[1][$i],array_flip(get_html_translation_table(HTML_SPECIALCHARS))),$result);
- }
- return $result;
-}
-
-/**
- * Used solely for setting up the @uses list
- * @package ignore
- * @ignore
- */
-class __dummyConverter extends Converter
-{
- function setTemplateDir(){}
- function setTargetDir(){}
- function getPageName(&$element)
- {
- if (phpDocumentor_get_class($element) == 'parserpage') return '_'.$element->getName();
- return '_'.$element->parent->getName();
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc
deleted file mode 100644
index 87674ac0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc
+++ /dev/null
@@ -1,1755 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-/**
- * CHM (Compiled Help Manual) output converter for Smarty Template.
- *
- * @package Converters
- * @subpackage CHMdefault
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: CHMdefaultConverter.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-/**
- * Generates files that MS HTML Help Worshop can use to create a MS Windows
- * compiled help file (CHM)
- *
- * The free MS HTML Help compiler takes the project file (phpdoc.hhp) and reads
- * the table of contents file specified in the project (which is always contents.hhc
- * in phpDocumentor). When the converter reaches stable state, it will also
- * output an index file index.hhk. The free download for MS HTML Help Workshop
- * is available below
- * @link http://www.microsoft.com/downloads/release.asp?releaseid=33071 MS HTML Help Workshop download
- * @package Converters
- * @subpackage CHMdefault
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Revision: 1.1 $
- */
-class CHMdefaultConverter extends Converter
-{
- /**
- * CHMdefaultConverter wants elements sorted by type as well as alphabetically
- * @see Converter::$sort_page_contents_by_type
- * @var boolean
- */
- var $sort_page_contents_by_type = true;
- /** @var string */
- var $outputformat = 'CHM';
- /** @var string */
- var $name = 'default';
- /**
- * indexes of elements by package that need to be generated
- * @var array
- */
- var $leftindex = array('classes' => true, 'pages' => true, 'functions' => true, 'defines' => false, 'globals' => false);
-
- /**
- * output directory for the current procedural page being processed
- * @var string
- */
- var $page_dir;
-
- /**
- * target directory passed on the command-line.
- * {@link $targetDir} is malleable, always adding package/ and package/subpackage/ subdirectories onto it.
- * @var string
- */
- var $base_dir;
-
- /**
- * output directory for the current class being processed
- * @var string
- */
- var $class_dir;
-
- /**
- * array of converted package page names.
- * Used to link to the package page in the left index
- * @var array Format: array(package => 1)
- */
- var $package_pages = array();
-
- /**
- * controls formatting of parser informative output
- *
- * Converter prints:
- * "Converting /path/to/file.php... Procedural Page Elements... Classes..."
- * Since CHMdefaultConverter outputs files while converting, it needs to send a \n to start a new line. However, if there
- * is more than one class, output is messy, with multiple \n's just between class file output. This variable prevents that
- * and is purely cosmetic
- * @var boolean
- */
- var $juststarted = false;
-
- /**
- * contains all of the template procedural page element loop data needed for the current template
- * @var array
- */
- var $current;
-
- /**
- * contains all of the template class element loop data needed for the current template
- * @var array
- */
- var $currentclass;
- var $wrote = false;
- var $ric_set = array();
- /**
- * Table of Contents entry for index.hhk
- * @var array
- */
- var $KLinks = array();
-
- /**
- * sets {@link $base_dir} to $targetDir
- * @see Converter()
- */
- function CHMdefaultConverter(&$allp, &$packp, &$classes, &$procpages, $po, $pp, $qm, $targetDir, $templateDir, $title)
- {
- Converter::Converter($allp, $packp, $classes, $procpages,$po, $pp, $qm, $targetDir, $templateDir, $title);
- $this->base_dir = $targetDir;
- }
-
- /**
- * @deprecated in favor of PHP 4.3.0+ tokenizer-based source highlighting
- */
- function unmangle($sourcecode)
- {
- $sourcecode = str_replace('<code>','<pre>',$sourcecode);
- $sourcecode = str_replace('</code>','</pre>',$sourcecode);
- $sourcecode = str_replace('<br />',"\n",$sourcecode);
- $sourcecode = str_replace('&nbsp;',' ',$sourcecode);
- $sourcecode = str_replace('&lt;','<',$sourcecode);
- $sourcecode = str_replace('&gt;','>',$sourcecode);
- $sourcecode = str_replace('&amp;','&',$sourcecode);
- return $sourcecode;
- }
-
- /**
- * @param string full path to the source file
- * @param string fully highlighted source code
- */
- function writeSource($path, $value)
- {
- $templ = &$this->newSmarty();
- $pathinfo = $this->proceduralpages->getPathInfo($path, $this);
- $templ->assign('source',$value);
- $templ->assign('package',$pathinfo['package']);
- $templ->assign('subpackage',$pathinfo['subpackage']);
- $templ->assign('name',$pathinfo['name']);
- $templ->assign('source_loc',$pathinfo['source_loc']);
- $templ->assign('docs',$pathinfo['docs']);
- $templ->assign("subdir",'../');
- $templ->register_outputfilter('CHMdefault_outputfilter');
- $this->setTargetDir($this->getFileSourcePath($this->base_dir));
- //$this->addSourceTOC($pathinfo['name'],$this->getFileSourceName($path),$pathinfo['package'],$pathinfo['subpackage'], true);
- phpDocumentor_out("\n");
- $this->setSourcePaths($path);
- $this->writefile($this->getFileSourceName($path).'.html',$templ->fetch('filesource.tpl'));
- }
-
- function writeExample($title, $path, $source)
- {
- $templ = &$this->newSmarty();
- $templ->assign('source',$source);
- if (empty($title))
- {
- $title = 'example';
- addWarning(PDERROR_EMPTY_EXAMPLE_TITLE, $path, $title);
- }
- $templ->assign('title',$title);
- $templ->assign('file',$path);
- $templ->assign("subdir",'../');
- $templ->register_outputfilter('CHMdefault_outputfilter');
- $pathinfo = $this->proceduralpages->getPathInfo($path, $this);
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . '__examplesource');
- //$this->addSourceTOC($title,'exsource_'.$path,$pathinfo['package'],$pathinfo['subpackage'], false);
- phpDocumentor_out("\n");
- $this->writefile('exsource_'.$path.'.html',$templ->fetch('examplesource.tpl'));
- }
-
- function getExampleLink($path, $title)
- {
- return $this->returnLink('{$subdir}__examplesource' . PATH_DELIMITER . 'exsource_'.$path.'.html',$title);
- }
-
- function getSourceLink($path)
- {
- // fix 1171583
- $x = str_replace(PATH_DELIMITER, '', $this->getFileSourcePath('{$subdir}')) .
- PATH_DELIMITER;
- return $this->returnLink($x .
- $this->getFileSourceName($path).'.html','Source Code for this file');
- }
-
- /**
- * Used to convert the <<code>> tag in a docblock
- * @param string
- * @param boolean
- * @return string
- */
- function ProgramExample($example, $tutorial = false, $inlinesourceparse = null/*false*/,
- $class = null/*false*/, $linenum = null/*false*/, $filesourcepath = null/*false*/)
- {
- return $this->PreserveWhiteSpace(parent::ProgramExample($example, $tutorial, $inlinesourceparse, $class, $linenum, $filesourcepath));
- }
-
- /**
- * @param string
- */
- function TutorialExample($example)
- {
- $trans = $this->template_options['desctranslate'];
- $this->template_options['desctranslate'] = array();
- $example = '<ol>' . parent::TutorialExample($example)
- .'</ol>';
- $this->template_options['desctranslate'] = $trans;
- if (!isset($this->template_options['desctranslate'])) return $example;
- if (!isset($this->template_options['desctranslate']['code'])) return $example;
- $example = $this->template_options['desctranslate']['code'] . $example;
- if (!isset($this->template_options['desctranslate']['/code'])) return $example;
- return $example . $this->template_options['desctranslate']['/code'];
- }
-
- /**
- * Retrieve a Converter-specific anchor to a segment of a source code file
- * parsed via a {@tutorial tags.filesource.pkg} tag.
- * @param string full path to source file
- * @param string name of anchor
- * @param string link text, if this is a link
- * @param boolean returns either a link or a destination based on this
- * parameter
- * @return string link to an anchor, or the anchor
- */
- function getSourceAnchor($sourcefile,$anchor,$text = '',$link = false)
- {
- if ($link) {
- $x = str_replace(PATH_DELIMITER, '', $this->getFileSourcePath('{$subdir}')) .
- PATH_DELIMITER;
- return $this->returnLink($x .
- $this->getFileSourceName($sourcefile).'.html#a'.$anchor, $text);
- } else
- return '<a name="a'.$anchor.'"></a>';
- }
-
- function getCurrentPageLink()
- {
- return $this->curname . '.html';
- }
-
- /**
- * Uses htmlspecialchars() on the input
- */
- function postProcess($text)
- {
- return htmlspecialchars($text);
- }
-
- /**
- * Use the template tutorial_toc.tpl to generate a table of contents for HTML
- * @return string table of contents formatted for use in the current output format
- * @param array format: array(array('tagname' => section, 'link' => returnsee link, 'id' => anchor name, 'title' => from title tag),...)
- */
- function formatTutorialTOC($toc)
- {
- $template = &$this->newSmarty();
- $template->assign('toc',$toc);
- return $template->fetch('tutorial_toc.tpl');
- }
-
- function &SmartyInit(&$templ)
- {
- if (!isset($this->package_index))
- foreach($this->all_packages as $key => $val)
- {
- if (isset($this->pkg_elements[$key]))
- {
- if (!isset($start)) $start = $key;
- $this->package_index[] = array('link' => "li_$key.html", 'title' => $key);
- }
- }
- $templ->assign("packageindex",$this->package_index);
- $templ->assign("subdir",'');
- return $templ;
- }
-
-
- /**
- * Writes out the template file of {@link $class_data} and unsets the template to save memory
- * @see registerCurrentClass()
- * @see parent::endClass()
- */
- function endClass()
- {
- $a = '../';
- if (!empty($this->subpackage)) $a .= '../';
- if ($this->juststarted)
- {
- $this->juststarted = false;
- phpDocumentor_out("\n");
- flush();
- }
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir);
- $this->class_data->assign("subdir",$a);
- $this->class_data->register_outputfilter('CHMdefault_outputfilter');
- $this->addTOC($this->class,$this->class,$this->package,$this->subpackage, true);
- $this->writefile($this->class . '.html',$this->class_data->fetch('class.tpl'));
- unset($this->class_data);
- }
-
- /**
- * Writes out the template file of {@link $page_data} and unsets the template to save memory
- * @see registerCurrent()
- * @see parent::endPage()
- */
- function endPage()
- {
- $this->package = $this->curpage->package;
- $this->subpackage = $this->curpage->subpackage;
- $a = '../';
- if (!empty($this->subpackage)) $a .= '../';
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->page_data->assign("package",$this->package);
- $this->page_data->assign("subdir",$a);
- $this->page_data->register_outputfilter('CHMdefault_outputfilter');
- //$this->addTOC($this->curpage->file,$this->page,$this->package,$this->subpackage);
- $this->writefile($this->page . '.html',$this->page_data->fetch('page.tpl'));
- unset($this->page_data);
- }
-
- /**
- * @param string
- * @param string
- * @return string &lt;a href="'.$link.'">'.$text.'</a&gt;
- */
- function returnLink($link,$text)
- {
- return '<a href="'.$link.'">'.$text.'</a>';
- }
-
- /**
- * CHMdefaultConverter chooses to format both package indexes and the complete index here
- *
- * This function formats output for the elementindex.html and pkgelementindex.html template files. It then
- * writes them to the target directory
- * @see generateElementIndex(), generatePkgElementIndex()
- */
- function formatPkgIndex()
- {
- list($package_indexes,$packages,$mletters) = $this->generatePkgElementIndexes();
- for($i=0;$i<count($package_indexes);$i++)
- {
- $template = &$this->newSmarty();
- $this->package = $package_indexes[$i]['package'];
- $this->subpackage = '';
- $template->assign("index",$package_indexes[$i]['pindex']);
- $template->assign("package",$package_indexes[$i]['package']);
- $template->assign("letters",$mletters[$package_indexes[$i]['package']]);
- $template->assign("title","Package ".$package_indexes[$i]['package']." Element Index");
- $template->assign("subdir",'../');
- $template->register_outputfilter('CHMdefault_outputfilter');
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $package_indexes[$i]['package']);
- $this->addTOC($package_indexes[$i]['package']." Alphabetical Index",'elementindex_'.$package_indexes[$i]['package'],$package_indexes[$i]['package'],'');
- $this->writefile('elementindex_'.$package_indexes[$i]['package'].'.html',$template->fetch('pkgelementindex.tpl'));
- }
- phpDocumentor_out("\n");
- flush();
- }
-
- /**
- * CHMdefaultConverter uses this function to format template index.html and packages.html
- *
- * This function generates the package list from {@link $all_packages}, eliminating any
- * packages that don't have any entries in their package index (no files at all, due to @ignore
- * or other factors). Then it uses the default package name as the first package index to display.
- * It sets the right pane to be either a blank file with instructions on making package-level docs,
- * or the package-level docs for the default package.
- * @global string Used to set the starting package to display
- */
- function formatIndex()
- {
- global $phpDocumentor_DefaultPackageName;
- list($elindex,$mletters) = $this->generateElementIndex();
- $template = &$this->newSmarty();
- $template->assign("index",$elindex);
- $template->assign("letters",$mletters);
- $template->assign("title","Element Index");
- $template->assign("date",date("r",time()));
- $template->register_outputfilter('CHMdefault_outputfilter');
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- $this->addTOC("Alphabetical Index Of All Elements",'elementindex',"Index",'');
- $this->writefile('elementindex.html',$template->fetch('elementindex.tpl'));
- usort($this->package_index,"CHMdefault_pindexcmp");
- $index = &$this->newSmarty();
- foreach($this->all_packages as $key => $val)
- {
- if (isset($this->pkg_elements[$key]))
- {
- if (!isset($start)) $start = $key;
- if (!isset($this->package_pages[$key])) $this->writeNewPPage($key);
- }
- }
- $this->setTargetDir($this->base_dir);
- // Created index.html
- if (isset($this->pkg_elements[$phpDocumentor_DefaultPackageName])) $start = $phpDocumentor_DefaultPackageName;
- $this->package = $start;
- $this->subpackage = '';
- $setalready = false;
- if (isset($this->tutorials[$start]['']['pkg']))
- {
- foreach($this->tutorials[$start]['']['pkg'] as $tute)
- {
- if ($tute->name == $start . '.pkg')
- {
- $setalready = true;
- $this->addTOC("Start page",$start.'/tutorial_'.$tute->name,"Index",'');
- }
- }
- }
- if (!$setalready)
- {
- if (isset($this->package_pages[$start]))
- {
- $this->addTOC("Start page",'package_'.$start,"Index",'');
- }
- else
- {
- $index->assign("blank","blank");
- $blank = &$this->newSmarty();
- $blank->assign('package',$phpDocumentor_DefaultPackageName);
- $this->addTOC("Start page",'blank',"Index",'');
- $this->writefile("blank.html",$blank->fetch('blank.tpl'));
- Converter::writefile('index.html',$blank->fetch('tutorial.tpl'));
- }
- }
- phpDocumentor_out("\n");
- flush();
-
- unset($index);
- }
-
- function writeNewPPage($key)
- {
- return;
- $template = &$this->newSmarty();
- $this->package = $key;
- $this->subpackage = '';
- $template->assign("date",date("r",time()));
- $template->assign("title",$this->title);
- $template->assign("package",$key);
- $template->register_outputfilter('CHMdefault_outputfilter');
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
-
- //$this->addTOC("$key Index","li_$key",$key,'');
- $this->writefile("li_$key.html",$template->fetch('index.tpl'));
- unset($template);
- }
-
- /**
- * Generate indexes for li_package.html and classtree output files
- *
- * This function generates the li_package.html files from the template file left.html. It does this by
- * iterating through each of the $page_elements, $class_elements and $function_elements arrays to retrieve
- * the pre-sorted {@link abstractLink} descendants needed for index generation. Conversion of these links to
- * text is done by {@link returnSee()}. The {@link $local} parameter is set to false to ensure that paths are correct.
- *
- * Then it uses {@link generateFormattedClassTrees()} to create class trees from the template file classtrees.html. Output
- * filename is classtrees_packagename.html. This function also unsets {@link $elements} and {@link $pkg_elements} to free
- * up the considerable memory these two class vars use
- * @see $page_elements, $class_elements, $function_elements
- */
- function formatLeftIndex()
- {
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- if (0)//!isset($this->left))
- {
- debug("Nothing parsed, check the command-line");
- die();
- }
- foreach($this->all_packages as $package => $rest)
- {
- if (!isset($this->pkg_elements[$package])) continue;
-
- // Create class tree page
- $template = &$this->newSmarty();
- $template->assign("classtrees",$this->generateFormattedClassTrees($package));
- $template->assign("package",$package);
- $template->assign("date",date("r",time()));
- $template->register_outputfilter('CHMdefault_outputfilter');
- $this->addTOC("$package Class Trees","classtrees_$package",$package,'');
- $this->writefile("classtrees_$package.html",$template->fetch('classtrees.tpl'));
- phpDocumentor_out("\n");
- flush();
- }
- // free up considerable memory
- unset($this->elements);
- unset($this->pkg_elements);
- }
-
- /**
- * This function takes an {@link abstractLink} descendant and returns an html link
- *
- * @param abstractLink a descendant of abstractlink should be passed, and never text
- * @param string text to display in the link
- * @param boolean this parameter is not used, and is deprecated
- * @param boolean determines whether the returned text is enclosed in an <a> tag
- */
- function returnSee(&$element, $eltext = false, $with_a = true)
- {
- if (!$element) return false;
- if (!$with_a) return $this->getId($element, false);
- if (!$eltext)
- {
- $eltext = '';
- switch($element->type)
- {
- case 'tutorial' :
- $eltext = strip_tags($element->title);
- break;
- case 'method' :
- case 'var' :
- case 'const' :
- $eltext .= $element->class.'::';
- case 'page' :
- case 'define' :
- case 'class' :
- case 'function' :
- case 'global' :
- default :
- $eltext .= $element->name;
- if ($element->type == 'function' || $element->type == 'method') $eltext .= '()';
- break;
- }
- }
- return '<a href="'.$this->getId($element).'">'.$eltext.'</a>';
- }
-
- function getId($element, $fullpath = true)
- {
- if (phpDocumentor_get_class($element) == 'parserdata')
- {
- $element = $this->addLink($element->parent);
- $elp = $element->parent;
- } elseif (is_a($element, 'parserbase'))
- {
- $elp = $element;
- $element = $this->addLink($element);
- }
- $c = '';
- if (!empty($element->subpackage))
- {
- $c = '/'.$element->subpackage;
- }
- $b = '{$subdir}';
- switch ($element->type)
- {
- case 'page' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->fileAlias.'.html';
- return 'top';
- break;
- case 'define' :
- case 'global' :
- case 'function' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->fileAlias.'.html#'.$element->type.$element->name;
- return $element->type.$element->name;
- break;
- case 'class' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->name.'.html';
- return 'top';
- break;
- case 'method' :
- case 'var' :
- case 'const' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->class.'.html#'.$element->type.$element->name;
- return $element->type.$element->name;
- break;
- case 'tutorial' :
- $d = '';
- if ($element->section)
- {
- $d = '#'.$element->section;
- }
- return $b.$element->package.$c.'/tutorial_'.$element->name.'.html'.$d;
- }
- }
-
- function ConvertTodoList()
- {
- $todolist = array();
- foreach($this->todoList as $package => $alltodos)
- {
- foreach($alltodos as $todos)
- {
- $converted = array();
- $converted['link'] = $this->returnSee($todos[0]);
- if (!is_array($todos[1]))
- {
- $converted['todos'][] = $todos[1]->Convert($this);
- } else
- {
- foreach($todos[1] as $todo)
- {
- $converted['todos'][] = $todo->Convert($this);
- }
- }
- $todolist[$package][] = $converted;
- }
- }
- $templ = &$this->newSmarty();
- $templ->assign('todos',$todolist);
- $templ->register_outputfilter('CHMdefault_outputfilter');
- $this->setTargetDir($this->base_dir);
- $this->addTOC('Todo List','todolist','Index','',false,true);
- $this->addKLink('Todo List', 'todolist', '', 'Development');
- $this->writefile('todolist.html',$templ->fetch('todolist.tpl'));
- }
-
- /**
- * Convert README/INSTALL/CHANGELOG file contents to output format
- * @param README|INSTALL|CHANGELOG
- * @param string contents of the file
- */
- function Convert_RIC($name, $contents)
- {
- $template = &$this->newSmarty();
- $template->assign('contents',$contents);
- $template->assign('name',$name);
- $this->setTargetDir($this->base_dir);
- $this->addTOC($name,'ric_'.$name,'Index','',false,true);
- $this->addKLink($name, 'ric_'.$name, '', 'Development');
- $this->writefile('ric_'.$name . '.html',$template->fetch('ric.tpl'));
- $this->ric_set[$name] = true;
- }
-
- /**
- * Create errors.html template file output
- *
- * This method takes all parsing errors and warnings and spits them out ordered by file and line number.
- * @global ErrorTracker We'll be using it's output facility
- */
- function ConvertErrorLog()
- {
- global $phpDocumentor_errors;
- $allfiles = array();
- $files = array();
- $warnings = $phpDocumentor_errors->returnWarnings();
- $errors = $phpDocumentor_errors->returnErrors();
- $template = &$this->newSmarty();
- foreach($warnings as $warning)
- {
- $file = '##none';
- $linenum = 'Warning';
- if ($warning->file)
- {
- $file = $warning->file;
- $allfiles[$file] = 1;
- $linenum .= ' on line '.$warning->linenum;
- }
- $files[$file]['warnings'][] = array('name' => $linenum, 'listing' => $warning->data);
- }
- foreach($errors as $error)
- {
- $file = '##none';
- $linenum = 'Error';
- if ($error->file)
- {
- $file = $error->file;
- $allfiles[$file] = 1;
- $linenum .= ' on line '.$error->linenum;
- }
- $files[$file]['errors'][] = array('name' => $linenum, 'listing' => $error->data);
- }
- $i=1;
- $af = array();
- foreach($allfiles as $file => $num)
- {
- $af[$i++] = $file;
- }
- $allfiles = $af;
- usort($allfiles,'strnatcasecmp');
- $allfiles[0] = "Post-parsing";
- foreach($allfiles as $i => $a)
- {
- $allfiles[$i] = array('file' => $a);
- }
- $out = array();
- foreach($files as $file => $data)
- {
- if ($file == '##none') $file = 'Post-parsing';
- $out[$file] = $data;
- }
- $template->assign("files",$allfiles);
- $template->assign("all",$out);
- $template->assign("title","phpDocumentor Parser Errors and Warnings");
- $this->setTargetDir($this->base_dir);
- $this->writefile("errors.html",$template->fetch('errors.tpl'));
- unset($template);
- phpDocumentor_out("\n\nTo view errors and warnings, look at ".$this->base_dir. PATH_DELIMITER . "errors.html\n");
- flush();
- }
-
- function getCData($value)
- {
- return '<pre>'.htmlentities($value).'</pre>';
- }
-
- function getTutorialId($package,$subpackage,$tutorial,$id)
- {
- return $id;
- }
-
- /**
- * Converts package page and sets its package as used in {@link $package_pages}
- * @param parserPackagePage
- */
- function convertPackagepage(&$element)
- {
- phpDocumentor_out("\n");
- flush();
- $this->package = $element->package;
- $this->subpackage = '';
- $contents = $element->Convert($this);
- $this->package_pages[$element->package] = str_replace('{$subdir}','../',$contents);
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package);
- $this->addTOC($element->package." Tutorial",'package_'.$element->package,$element->package,'');
- $this->writeFile('package_'.$element->package.'.html',str_replace('{$subdir}','../',$contents));
- $this->setTargetDir($this->base_dir);
- Converter::writefile('index.html',str_replace('{$subdir}','',$contents));
- $this->addKLink($element->package." Tutorial", 'package_'.$element->package, '', 'Tutorials');
- }
-
- /**
- * @param parserTutorial
- */
- function convertTutorial(&$element)
- {
- phpDocumentor_out("\n");
- flush();
- $template = &parent::convertTutorial($element);
- $a = '../';
- if ($element->subpackage) $a .= '../';
- $template->assign('subdir',$a);
- $template->register_outputfilter('CHMdefault_outputfilter');
- $contents = $template->fetch('tutorial.tpl');
- if ($element->package == $GLOBALS['phpDocumentor_DefaultPackageName'] && empty($element->subpackage) && ($element->name == $element->package . '.pkg'))
- {
- $template->assign('subdir','');
- $this->setTargetDir($this->base_dir);
- Converter::writefile('index.html',$template->fetch('tutorial.tpl'));
- }
- $a = '';
- if ($element->subpackage) $a = PATH_DELIMITER . $element->subpackage;
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package . $a);
- $this->addTOC($a = strip_tags($element->getTitle($this)), 'tutorial_'.$element->name,
- $element->package, $element->subpackage, false, true);
- $this->writeFile('tutorial_'.$element->name.'.html',$contents);
- $this->addKLink($element->getTitle($this), $element->package . $a . PATH_DELIMITER . 'tutorial_'.$element->name,
- '', 'Tutorials');
- }
-
- /**
- * Converts class for template output
- * @see prepareDocBlock(), generateChildClassList(), generateFormattedClassTree(), getFormattedConflicts()
- * @see getFormattedInheritedMethods(), getFormattedInheritedVars()
- * @param parserClass
- */
- function convertClass(&$element)
- {
- parent::convertClass($element);
- $this->class_dir = $element->docblock->package;
- if (!empty($element->docblock->subpackage)) $this->class_dir .= PATH_DELIMITER . $element->docblock->subpackage;
- $a = '../';
- if ($element->docblock->subpackage != '') $a = "../$a";
-
- $this->class_data->assign('subdir',$a);
- $this->class_data->assign("title","Docs For Class " . $element->getName());
- $this->class_data->assign("page",$element->getName() . '.html');
- $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER . $this->class, '', 'Classes');
- }
-
-
- /**
- * Converts class variables for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertVar(&$element)
- {
- parent::convertVar($element, array('var_dest' => $this->getId($element,false)));
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir);
- $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER .$this->class, $this->getId($element,false), $element->class.' Properties');
- }
-
- /**
- * Converts class constants for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertConst(&$element)
- {
- parent::convertConst($element, array('const_dest' => $this->getId($element,false)));
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir);
- $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER .$this->class, $this->getId($element,false), $element->class.' Constants');
- }
-
- /**
- * Converts class methods for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertMethod(&$element)
- {
- parent::convertMethod($element, array('method_dest' => $this->getId($element,false)));
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir);
- $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER .$this->class, $this->getId($element,false), $element->class.' Methods');
- }
-
- /**
- * Converts function for template output
- * @see prepareDocBlock(), parserFunction::getFunctionCall(), getFormattedConflicts()
- * @param parserFunction
- */
- function convertFunction(&$element)
- {
- $funcloc = $this->getId($this->addLink($element));
- parent::convertFunction($element,array('function_dest' => $this->getId($element,false)));
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->addKLink($element->name, $this->page_dir . PATH_DELIMITER . $this->page, $this->getId($element,false), 'Functions');
- }
-
- /**
- * Converts include elements for template output
- * @see prepareDocBlock()
- * @param parserInclude
- */
- function convertInclude(&$element)
- {
- parent::convertInclude($element, array('include_file' => '_'.strtr($element->getValue(),array('"' => '', "'" => '','.' => '_'))));
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->addKLink(str_replace('"', '', $element->getValue()), $this->page_dir . PATH_DELIMITER . $this->page, '', ucfirst($element->name));
- }
-
- /**
- * Converts defines for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertDefine(&$element)
- {
- parent::convertDefine($element, array('define_link' => $this->getId($element,false)));
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->addKLink($element->name, $this->page_dir . PATH_DELIMITER . $this->page, $this->getId($element,false), 'Constants');
- }
-
- /**
- * Converts global variables for template output
- * @param parserGlobal
- */
- function convertGlobal(&$element)
- {
- parent::convertGlobal($element, array('global_link' => $this->getId($element,false)));
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->addKLink($element->name, $this->page_dir . PATH_DELIMITER . $this->page, $this->getId($element,false), 'Global Variables');
- }
-
- /**
- * converts procedural pages for template output
- * @see prepareDocBlock(), getClassesOnPage()
- * @param parserData
- */
- function convertPage(&$element)
- {
- parent::convertPage($element);
- $this->juststarted = true;
- $this->page_dir = $element->parent->package;
- if (!empty($element->parent->subpackage)) $this->page_dir .= PATH_DELIMITER . $element->parent->subpackage;
- // registering stuff on the template
- $this->page_data->assign("page",$this->getPageName($element) . '.html');
- $this->page_data->assign("title","Docs for page ".$element->parent->getFile());
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->addKLink($element->parent->file, $this->page_dir . PATH_DELIMITER . $this->page, '', 'Files');
- }
-
- function getPageName(&$element)
- {
- if (phpDocumentor_get_class($element) == 'parserpage') return '_'.$element->getName();
- return '_'.$element->parent->getName();
- }
-
- /**
- * returns an array containing the class inheritance tree from the root object to the class
- *
- * @param parserClass class variable
- * @return array Format: array(root,child,child,child,...,$class)
- * @uses parserClass::getParentClassTree()
- */
-
- function generateFormattedClassTree($class)
- {
- $tree = $class->getParentClassTree($this);
- $out = '';
- if (count($tree) - 1)
- {
- $result = array($class->getName());
- $parent = $tree[$class->getName()];
- $distance[] = '';
- while ($parent)
- {
- $x = $parent;
- if (is_object($parent))
- {
- $subpackage = $parent->docblock->subpackage;
- $package = $parent->docblock->package;
- $x = $parent;
- $x = $parent->getLink($this);
- if (!$x) $x = $parent->getName();
- }
- $result[] =
- $x;
- $distance[] =
- "\n%s|\n" .
- "%s--";
- if (is_object($parent))
- $parent = $tree[$parent->getName()];
- elseif (isset($tree[$parent]))
- $parent = $tree[$parent];
- }
- $nbsp = ' ';
- for($i=count($result) - 1;$i>=0;$i--)
- {
- $my_nbsp = '';
- for($j=0;$j<count($result) - $i;$j++) $my_nbsp .= $nbsp;
- $distance[$i] = sprintf($distance[$i],$my_nbsp,$my_nbsp);
- }
- return array('classes'=>array_reverse($result),'distance'=>array_reverse($distance));
- } else
- {
- return array('classes'=>$class->getName(),'distance'=>array(''));
- }
- }
-
- /** @access private */
- function sortVar($a, $b)
- {
- return strnatcasecmp($a->getName(),$b->getName());
- }
-
- /** @access private */
- function sortMethod($a, $b)
- {
- if ($a->isConstructor) return -1;
- if ($b->isConstructor) return 1;
- return strnatcasecmp($a->getName(),$b->getName());
- }
-
- /**
- * returns a template-enabled array of class trees
- *
- * @param string $package package to generate a class tree for
- * @see $roots, HTMLConverter::getRootTree()
- */
- function generateFormattedClassTrees($package)
- {
- if (!isset($this->roots[$package])) return array();
- $roots = $trees = array();
- $roots = $this->roots[$package];
- for($i=0;$i<count($roots);$i++)
- {
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- return $trees;
- }
-
- /**
- * return formatted class tree for the Class Trees page
- *
- * @param array $tree output from {@link getSortedClassTreeFromClass()}
- * @see Classes::$definitechild, generateFormattedClassTrees()
- * @return string
- */
- function getRootTree($tree,$package)
- {
- if (!$tree) return '';
- $my_tree = '';
- $cur = '#root';
- $lastcur = array(false);
- $kids = array();
- $dopar = false;
- if ($tree[$cur]['parent'])
- {
- $dopar = true;
- if (!is_object($tree[$cur]['parent']))
- {
-// debug("parent ".$tree[$cur]['parent']." not found");
- $my_tree .= '<li>' . $tree[$cur]['parent'] .'<ul>';
- }
- else
- {
-// debug("parent ".$this->returnSee($tree[$cur]['parent'])." in other package");
- $my_tree .= '<li>' . $this->returnSee($tree[$cur]['parent']);
- if ($tree[$cur]['parent']->package != $package) $my_tree .= ' <b>(Different package)</b><ul>';
- }
- }
- do
- {
-// fancy_debug($cur,$lastcur,$kids);
- if (count($tree[$cur]['children']))
- {
-// debug("$cur has children");
- if (!isset($kids[$cur]))
- {
-// debug("set $cur kids");
- $kids[$cur] = 1;
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
- $my_tree .= '<ul>'."\n";
- }
- array_push($lastcur,$cur);
- list(,$cur) = each($tree[$cur]['children']);
-// var_dump('listed',$cur);
- if ($cur)
- {
- $cur = $cur['package'] . '#' . $cur['class'];
-// debug("set cur to child $cur");
-// $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
- continue;
- } else
- {
-// debug("end of children for $cur");
- $cur = array_pop($lastcur);
- $cur = array_pop($lastcur);
- $my_tree .= '</ul></li>'."\n";
- if ($dopar && ($cur == '#root' || !$cur)) $my_tree .= '</ul></li>';
- }
- } else
- {
-// debug("$cur has no children");
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link'])."</li>";
- if ($dopar && $cur == '#root') $my_tree .= '</ul></li>';
- $cur = array_pop($lastcur);
- }
- } while ($cur);
- return $my_tree;
- }
- /**
- * Generate indexing information for given element
- *
- * @param parserElement descendant of parserElement
- * @see generateElementIndex()
- * @return array
- */
- function getIndexInformation($elt)
- {
- $Result['type'] = $elt->type;
- $Result['file_name'] = $elt->file;
- $Result['path'] = $elt->getPath();
-
- if (isset($elt->docblock))
- {
- $Result['description'] = $elt->docblock->getSDesc($this);
-
- if ($elt->docblock->hasaccess)
- $Result['access'] = $elt->docblock->tags['access'][0]->value;
- else
- $Result['access'] = 'public';
-
- $Result['abstract'] = isset ($elt->docblock->tags['abstract'][0]);
- }
- else
- $Result['description'] = '';
-
- $aa = $Result['description'];
- if (!empty($aa)) $aa = "<br>&nbsp;&nbsp;&nbsp;&nbsp;$aa";
-
- switch($elt->type)
- {
- case 'class':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Class';
- $Result['link'] = $this->getClassLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', class '.$Result['link']."$aa";
- break;
- case 'define':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Constant';
- $Result['link'] = $this->getDefineLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', constant '.$Result['link']."$aa";
- break;
- case 'global':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Global';
- $Result['link'] = $this->getGlobalLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', global variable '.$Result['link']."$aa";
- break;
- case 'function':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Function';
- $Result['link'] = $this->getFunctionLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName().'()');
- $Result['listing'] = 'in file '.$elt->file.', function '.$Result['link']."$aa";
- break;
- case 'method':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Method';
- $Result['link'] = $this->getMethodLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName().'()'
- );
- if ($elt->isConstructor) $Result['constructor'] = 1;
- $Result['listing'] = 'in file '.$elt->file.', method '.$Result['link']."$aa";
- break;
- case 'var':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Variable';
- $Result['link'] = $this->getVarLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', variable '.$Result['link']."$aa";
- break;
- case 'const':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Variable';
- $Result['link'] = $this->getConstLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', class constant '.$Result['link']."$aa";
- break;
- case 'page':
- $Result['name'] = $elt->getFile();
- $Result['title'] = 'Page';
- $Result['link'] = $this->getPageLink($elt->getFile(),
- $elt->package,
- $elt->getPath(),
- $elt->getFile());
- $Result['listing'] = 'procedural page '.$Result['link'];
- break;
- case 'include':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Include';
- $Result['link'] = $elt->getValue();
- $Result['listing'] = 'include '.$Result['name'];
- break;
- }
-
- return $Result;
- }
- /**
- * Generate alphabetical index of all elements
- *
- * @see $elements, walk()
- */
- function generateElementIndex()
- {
- $elementindex = array();
- $letters = array();
- $used = array();
- foreach($this->elements as $letter => $nutoh)
- {
- foreach($this->elements[$letter] as $i => $yuh)
- {
- if ($this->elements[$letter][$i]->type != 'include')
- {
- if (!isset($used[$letter]))
- {
- $letters[]['letter'] = $letter;
- $elindex['letter'] = $letter;
- $used[$letter] = 1;
- }
-
- $elindex['index'][] = $this->getIndexInformation($this->elements[$letter][$i]);
- }
- }
- if (isset($elindex['index']))
- {
- $elementindex[] = $elindex;
- } else
- {
- unset($letters[count($letters) - 1]);
- }
- $elindex = array();
- }
- return array($elementindex,$letters);
- }
-
- function setTemplateDir($dir)
- {
- Converter::setTemplateDir($dir);
- $this->smarty_dir = $this->templateDir;
- }
-
- function copyMediaRecursively($media,$targetdir,$subdir = '')
- {
- if (!is_array($media)) {
- return;
- }
- foreach($media as $dir => $files)
- {
- if ($dir === '/')
- {
- $this->copyMediaRecursively($files,$targetdir);
- } else
- {
- if (!is_numeric($dir))
- {
- // create the subdir
- phpDocumentor_out("creating $targetdir/$dir\n");
- Converter::setTargetDir($targetdir . PATH_DELIMITER . $dir);
- if (!empty($subdir)) $subdir .= PATH_DELIMITER;
- $this->copyMediaRecursively($files,"$targetdir/$dir",$subdir . $dir);
- } else
- {
- // copy the file
- phpDocumentor_out("copying $targetdir/".$files['file']."\n");
- $this->copyFile($files['file'],$subdir);
- }
- }
- }
- }
-
- /**
- * calls the converter setTargetDir, and then copies any template images and the stylesheet if they haven't been copied
- * @see Converter::setTargetDir()
- */
- function setTargetDir($dir)
- {
- Converter::setTargetDir($dir);
- if ($this->wrote) return;
- $this->wrote = true;
- $template_images = array();
- $stylesheets = array();
- $tdir = $dir;
- $dir = $this->templateDir;
- $this->templateDir = $this->templateDir.'templates/';
- $info = new Io;
- $this->copyMediaRecursively($info->getDirTree($this->templateDir.'media',$this->templateDir),$tdir);
- }
-
- /**
- * Generate alphabetical index of all elements by package and subpackage
- *
- * @param string $package name of a package
- * @see $pkg_elements, walk(), generatePkgElementIndexes()
- */
- function generatePkgElementIndex($package)
- {
-// var_dump($this->pkg_elements[$package]);
- $elementindex = array();
- $letters = array();
- $letterind = array();
- $used = array();
- $subp = '';
- foreach($this->pkg_elements[$package] as $subpackage => $els)
- {
- if (empty($els)) continue;
- if (!empty($subpackage)) $subp = " (<b>subpackage:</b> $subpackage)"; else $subp = '';
- foreach($els as $letter => $yuh)
- {
- foreach($els[$letter] as $i => $yuh)
- {
- if ($els[$letter][$i]->type != 'include')
- {
- if (!isset($used[$letter]))
- {
- $letters[]['letter'] = $letter;
- $letterind[$letter] = count($letters) - 1;
- $used[$letter] = 1;
- }
- $elindex[$letter]['letter'] = $letter;
-
- $elindex[$letter]['index'][] = $this->getIndexInformation($els[$letter][$i]);
- }
- }
- }
- }
- ksort($elindex);
- usort($letters,'CHMdefault_lettersort');
- if (isset($elindex))
- {
- while(list($letter,$tempel) = each($elindex))
- {
- if (!isset($tempel))
- {
- unset($letters[$letterind[$tempel['letter']]]);
- } else
- $elementindex[] = $tempel;
- }
- } else $letters = array();
- return array($elementindex,$letters);
- }
-
- /**
- *
- * @see generatePkgElementIndex()
- */
- function generatePkgElementIndexes()
- {
- $packages = array();
- $package_names = array();
- $pkg = array();
- $letters = array();
- foreach($this->pkg_elements as $package => $trash)
- {
- $pkgs['package'] = $package;
- $pkg['package'] = $package;
- list($pkg['pindex'],$letters[$package]) = $this->generatePkgElementIndex($package);
- if (count($pkg['pindex']))
- {
- $packages[] = $pkg;
- $package_names[] = $pkgs;
- }
- unset($pkgs);
- unset($pkg);
- }
- foreach($packages as $i => $package)
- {
- $pnames = array();
- for($j=0;$j<count($package_names);$j++)
- {
- if ($package_names[$j]['package'] != $package['package']) $pnames[] = $package_names[$j];
- }
- $packages[$i]['packageindexes'] = $pnames;
- }
- return array($packages,$package_names,$letters);
- }
-
- /**
- * @param string name of class
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the class's documentation
- * @see parent::getClassLink()
- */
- function getClassLink($expr,$package, $file = false,$text = false, $with_a = true)
- {
- $a = Converter::getClassLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text, $with_a);
- }
-
- /**
- * @param string name of function
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the function's documentation
- * @see parent::getFunctionLink()
- */
- function getFunctionLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getFunctionLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of define
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the define's documentation
- * @see parent::getDefineLink()
- */
- function getDefineLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getDefineLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of global variable
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the global variable's documentation
- * @see parent::getGlobalLink()
- */
- function getGlobalLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getGlobalLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of procedural page
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the procedural page's documentation
- * @see parent::getPageLink()
- */
- function getPageLink($expr,$package, $path = false,$text = false)
- {
- $a = Converter::getPageLink($expr,$package,$path);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of method
- * @param string class containing method
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the method's documentation
- * @see parent::getMethodLink()
- */
- function getMethodLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getMethodLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of var
- * @param string class containing var
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the var's documentation
- * @see parent::getVarLink()
- */
- function getVarLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getVarLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of class constant
- * @param string class containing class constant
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the var's documentation
- * @see parent::getVarLink()
- */
- function getConstLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getConstLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * does a nat case sort on the specified second level value of the array
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- */
- function rcNatCmp ($a, $b)
- {
- $aa = strtoupper($a[$this->rcnatcmpkey]);
- $bb = strtoupper($b[$this->rcnatcmpkey]);
-
- return strnatcasecmp($aa, $bb);
- }
-
- /**
- * does a nat case sort on the specified second level value of the array.
- * this one puts constructors first
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- */
- function rcNatCmp1 ($a, $b)
- {
- $aa = strtoupper($a[$this->rcnatcmpkey]);
- $bb = strtoupper($b[$this->rcnatcmpkey]);
-
- if (strpos($aa,'CONSTRUCTOR') === 0)
- {
- return -1;
- }
- if (strpos($bb,'CONSTRUCTOR') === 0)
- {
- return 1;
- }
- if (strpos($aa,strtoupper($this->class)) === 0)
- {
- return -1;
- }
- if (strpos($bb,strtoupper($this->class)) === 0)
- {
- return -1;
- }
- return strnatcasecmp($aa, $bb);
- }
-
- /**
- * Write a file to disk, and add it to the {@link $hhp_files} list of files
- * to include in the generated CHM
- *
- * {@source}
- */
- function writefile($file,$contents)
- {
- $this->addHHP($this->targetDir . PATH_DELIMITER . $file);
- Converter::writefile($file,$contents);
- }
-
- /**
- * @uses $hhp_files creates the array by adding parameter $file
- */
- function addHHP($file)
- {
- $file = str_replace($this->base_dir . PATH_DELIMITER, '', $file);
- $file = str_replace('\\',PATH_DELIMITER,$file);
- $file = str_replace('//',PATH_DELIMITER,$file);
- $file = str_replace(PATH_DELIMITER,'\\',$file);
- $this->hhp_files[]['name'] = $file;
- }
-
- function generateTOC()
- {
- $comppack = '';
- $templ = &$this->newSmarty();
- foreach($this->TOC as $package => $TOC1)
- {
- $comp_subs = '';
- $comp_subs1 = false;
- foreach($TOC1 as $subpackage => $files)
- {
- $comp_types = '';
- $comp = '';
- $templ1 = &$this->newSmarty();
- $templ1->assign('entry', array());
- $type = 'Classes';
- //foreach($types as $type => $files)
- //{
- foreach($files as $file)
- {
- //use book icon for classes
- if ($type == 'Classes') {
- $templ1->append('entry', array('paramname' => $file[0],'outputfile' => $file[1],'isclass' => 1));
- } else {
- $templ1->append('entry', array('paramname' => $file[0],'outputfile' => $file[1]));
- }
- }
- $templ = &$this->newSmarty();
- $templ->assign('tocsubentries',$templ1->fetch('tocentry.tpl'));
- $templ->assign('entry', array(array('paramname' => $type)));
- $comp_types .= $templ->fetch('tocentry.tpl');
- //}
- if (!empty($subpackage))
- {
- $templ = &$this->newSmarty();
- $templ->assign('tocsubentries',$comp_types);
- $templ->assign('entry', array(array('paramname' => $subpackage)));
- $comp_subs .= $templ->fetch('tocentry.tpl');
- } else
- {
- $comp_subs1 = $comp_types;
- }
- }
- if ($comp_subs1)
- $templ->assign('tocsubentries',$comp_subs1);
- if (!empty($comp_subs))
- $templ->assign('entry', array(array('paramname' => $package, 'tocsubentries' => $comp_subs)));
- else
- $templ->assign('entry', array(array('paramname' => $package)));
- $comppack .= $templ->fetch('tocentry.tpl');
- }
- return $comppack;
- }
-
- function addSourceTOC($name, $file, $package, $subpackage, $source = false)
- {
- $file = str_replace($this->base_dir . PATH_DELIMITER, '', $this->targetDir)
- . PATH_DELIMITER . $file . '.html';
- $file = str_replace('\\',PATH_DELIMITER,$file);
- $file = str_replace('//',PATH_DELIMITER,$file);
- $file = str_replace(PATH_DELIMITER,'\\',$file);
- $sub = $source ? 'Source Code' : 'Examples';
- $this->TOC[$package][$subpackage][$sub][] = array($name, $file);
- }
-
- function addTOC($name,$file,$package,$subpackage,$class = false,$tutorial = false)
- {
- $file = str_replace($this->base_dir . PATH_DELIMITER, '', $this->targetDir)
- . PATH_DELIMITER . $file . '.html';
- $file = str_replace('\\',PATH_DELIMITER,$file);
- $file = str_replace('//',PATH_DELIMITER,$file);
- $file = str_replace(PATH_DELIMITER,'\\',$file);
- $file = str_replace($this->base_dir . '\\', '', $file);
- $sub = $class ? 'Classes' : 'Files';
- if ($tutorial) $sub = 'Manual';
- if($class)
- $this->TOC[$package][$subpackage][] = array($name,$file);
- }
-
- /**
- * Add an item to the index.hhk file
- * @param string $name index entry name
- * @param string $file filename containing index
- * @param string $bookmark html anchor of location in file, if any
- * @param string $group group this entry with a string
- * @uses $KLinks tracks the index
- * @author Andrew Eddie <eddieajau@users.sourceforge.net>
- */
- function addKLink($name, $file, $bookmark='', $group='')
- {
- $file = $file . '.html';
- $file = str_replace('\\',PATH_DELIMITER,$file);
- $file = str_replace('//',PATH_DELIMITER,$file);
- $file = str_replace(PATH_DELIMITER,'\\',$file);
-// debug("added $name, $file, $bookmark, $group ");
- $link = $file;
- $link .= $bookmark ? "#$bookmark" :'';
- if ($group) {
- $this->KLinks[$group]['grouplink'] = $file;
- $this->KLinks[$group][] = array($name,$link);
- }
- $this->KLinks[] = array($name,$link);
- }
-
- /**
- * Get the table of contents for index.hhk
- * @return string contents of tocentry.tpl generated from $KLinks
- * @author Andrew Eddie <eddieajau@users.sourceforge.net>
- */
- function generateKLinks()
- {
- $templ = &$this->newSmarty();
- $templ->assign('entry', array());
- foreach($this->KLinks as $group=>$link)
- {
- if (isset($link['grouplink'])) {
- $templg = &$this->newSmarty();
- $templg->assign('entry', array());
- foreach($link as $k=>$sublink)
- {
- if ($k != 'grouplink') {
- $templg->append('entry', array('paramname' => $sublink[0],'outputfile' => $sublink[1]));
- }
- }
- $templ->append('entry', array('paramname' => $group, 'outputfile' => $link['grouplink'], 'tocsubentries' => $templg->fetch('tocentry.tpl') ));
- } else {
- $templ->append('entry', array('paramname' => $link[0],'outputfile' => $link[1]));
- }
- }
- return $templ->fetch('tocentry.tpl');
- }
-
- /**
- * Create the phpdoc.hhp, contents.hhc files needed by MS HTML Help Compiler
- * to create a CHM file
- *
- * The output function generates the table of contents (contents.hhc)
- * and file list (phpdoc.hhp) files used to create a .CHM by the
- * free MS HTML Help compiler.
- * {@internal
- * Using {@link $hhp_files}, a list of all separate .html files
- * is created in CHM format, and written to phpdoc.hhp. This list was
- * generated by {@link writefile}.
- *
- * Next, a call to the table of contents:
- *
- * {@source 12 2}
- *
- * finishes things off}}
- * @todo use to directly call html help compiler hhc.exe
- * @link http://www.microsoft.com/downloads/release.asp?releaseid=33071
- * @uses generateTOC() assigns to the toc template variable
- */
- function Output()
- {
- $templ = &$this->newSmarty();
- $templ->assign('files',$this->hhp_files);
- $this->setTargetDir($this->base_dir);
- Converter::writefile('phpdoc.hhp',$templ->fetch('hhp.tpl'));
- $templ = &$this->newSmarty();
- $templ->assign('toc',$this->generateTOC());
- Converter::writefile('contents.hhc',$templ->fetch('contents.hhc.tpl'));
- $templ->assign('klinks',$this->generateKLinks());
- Converter::writefile('index.hhk',$templ->fetch('index.hhk.tpl'));
- phpDocumentor_out("NOTE: to create the documentation.chm file, you must now run Microsoft Help Workshop on phpdoc.hhp\n");
- phpDocumentor_out("To get the free Microsoft Help Workshop, browse to: http://go.microsoft.com/fwlink/?LinkId=14188\n");
- flush();
- }
-}
-
-/**
- * @access private
- * @global string name of the package to set as the first package
- */
-function CHMdefault_pindexcmp($a, $b)
-{
- global $phpDocumentor_DefaultPackageName;
- if ($a['title'] == $phpDocumentor_DefaultPackageName) return -1;
- if ($b['title'] == $phpDocumentor_DefaultPackageName) return 1;
- return strnatcasecmp($a['title'],$b['title']);
-}
-
-/** @access private */
-function CHMdefault_lettersort($a, $b)
-{
- return strnatcasecmp($a['letter'],$b['letter']);
-}
-
-/** @access private */
-function CHMdefault_outputfilter($src, &$smarty)
-{
- return str_replace('{$subdir}',$smarty->_tpl_vars['subdir'],$src);
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini
deleted file mode 100644
index 4566db60..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini
+++ /dev/null
@@ -1,577 +0,0 @@
-preservedocbooktags = false
-
-;; used to highlight the {@source} inline tag, @filesource tag, and @example tag
-[highlightSourceTokens]
-;; format:
-;; T_CONSTANTNAME = open
-;; /T_CONSTANTNAME = close
-
-T_INCLUDE = <span class="src-inc">
-/T_INCLUDE = </span>
-T_INCLUDE_ONCE = <span class="src-inc">
-/T_INCLUDE_ONCE = </span>
-T_REQUIRE_ONCE = <span class="src-inc">
-/T_REQUIRE_ONCE = </span>
-T_REQUIRE_ONCE = <span class="src-inc">
-/T_REQUIRE_ONCE = </span>
-
-T_CONSTANT_ENCAPSED_STRING = <span class="src-str">
-/T_CONSTANT_ENCAPSED_STRING = </span>
-T_STRING_VARNAME = <span class="src-str">
-/T_STRING_VARNAME = </span>
-
-T_STRING = <span class="src-id">
-/T_STRING = </span>
-
-T_DNUMBER = <span class="src-num">
-/T_DNUMBER = </span>
-T_LNUMBER = <span class="src-num">
-/T_LNUMBER = </span>
-
-T_VARIABLE = <span class="src-var">
-/T_VARIABLE = </span>
-
-T_COMMENT = <span class="src-comm">
-/T_COMMENT = </span>
-T_ML_COMMENT = <span class="src-comm">
-/T_ML_COMMENT = </span>
-
-T_OBJECT_OPERATOR = <span class="src-sym">
-/T_OBJECT_OPERATOR = </span>
-
-T_ABSTRACT = <span class="src-key">
-/T_ABSTRACT = </span>
-T_CLONE = <span class="src-key">
-/T_CLONE = </span>
-T_HALT_COMPILER = <span class="src-key">
-/T_HALT_COMPILER = </span>
-T_ARRAY = <span class="src-key">
-/T_ARRAY = </span>
-T_AS = <span class="src-key">
-/T_AS = </span>
-T_BREAK = <span class="src-key">
-/T_BREAK = </span>
-T_CLASS = <span class="src-key">
-/T_CLASS = </span>
-T_CASE = <span class="src-key">
-/T_CASE = </span>
-T_CONST = <span class="src-key">
-/T_CONST = </span>
-T_CONTINUE = <span class="src-key">
-/T_CONTINUE = </span>
-T_DECLARE = <span class="src-key">
-/T_DECLARE = </span>
-T_DEFAULT = <span class="src-key">
-/T_DEFAULT = </span>
-T_ELSE = <span class="src-key">
-/T_ELSE = </span>
-T_ELSEIF = <span class="src-key">
-/T_ELSEIF = </span>
-T_EMPTY = <span class="src-key">
-/T_EMPTY = </span>
-T_ENDDECLARE = <span class="src-key">
-/T_ENDDECLARE = </span>
-T_ENDFOR = <span class="src-key">
-/T_ENDFOR = </span>
-T_ENDSWITCH = <span class="src-key">
-/T_ENDSWITCH = </span>
-T_ENDFOREACH = <span class="src-key">
-/T_ENDFOREACH = </span>
-T_ENDIF = <span class="src-key">
-/T_ENDIF = </span>
-T_ENDWHILE = <span class="src-key">
-/T_ENDWHILE = </span>
-T_EXIT = <span class="src-key">
-/T_EXIT = </span>
-T_EXTENDS = <span class="src-key">
-/T_EXTENDS = </span>
-T_FINAL = <span class="src-key">
-/T_FINAL = </span>
-T_FOR = <span class="src-key">
-/T_FOR = </span>
-T_FOREACH = <span class="src-key">
-/T_FOREACH = </span>
-T_FUNCTION = <span class="src-key">
-/T_FUNCTION = </span>
-T_GLOBAL = <span class="src-key">
-/T_GLOBAL = </span>
-T_IF = <span class="src-key">
-/T_IF = </span>
-T_IMPLEMENTS = <span class="src-key">
-/T_IMPLEMENTS = </span>
-T_INTERFACE = <span class="src-key">
-/T_INTERFACE = </span>
-T_LOGICAL_AND = <span class="src-key">
-/T_LOGICAL_AND = </span>
-T_LOGICAL_OR = <span class="src-key">
-/T_LOGICAL_OR = </span>
-T_LOGICAL_XOR = <span class="src-key">
-/T_LOGICAL_XOR = </span>
-T_NEW = <span class="src-key">
-/T_NEW = </span>
-T_PRIVATE = <span class="src-key">
-/T_PRIVATE = </span>
-T_PROTECTED = <span class="src-key">
-/T_PROTECTED = </span>
-T_PUBLIC = <span class="src-key">
-/T_PUBLIC = </span>
-T_RETURN = <span class="src-key">
-/T_RETURN = </span>
-T_STATIC = <span class="src-key">
-/T_STATIC = </span>
-T_SWITCH = <span class="src-key">
-/T_SWITCH = </span>
-T_VAR = <span class="src-key">
-/T_VAR = </span>
-T_WHILE = <span class="src-key">
-/T_WHILE = </span>
-
-T_DOUBLE_COLON = <span class="src-sym">
-/T_DOUBLE_COLON = </span>
-
-T_OPEN_TAG = <span class="src-php">
-/T_OPEN_TAG = </span>
-T_OPEN_TAG_WITH_ECHO = <span class="src-php">
-/T_OPEN_TAG_WITH_ECHO = </span>
-T_CLOSE_TAG = <span class="src-php">
-/T_CLOSE_TAG = </span>
-
-
-[highlightSource]
-;; this is for highlighting things that aren't tokens like "&"
-;; format:
-;; word = open
-;; /word = close
-@ = <span class="src-sym">
-/@ = </span>
-& = <span class="src-sym">
-/& = </span>
-[ = <span class="src-sym">
-/[ = </span>
-] = <span class="src-sym">
-/] = </span>
-! = <span class="src-sym">
-/! = </span>
-";" = <span class="src-sym">
-/; = </span>
-( = <span class="src-sym">
-/( = </span>
-) = <span class="src-sym">
-/) = </span>
-, = <span class="src-sym">
-/, = </span>
-{ = <span class="src-sym">
-/{ = </span>
-} = <span class="src-sym">
-/} = </span>
-""" = <span class="src-str">
-/" = </span>
-
-[highlightDocBlockSourceTokens]
-;; this is for docblock tokens, using by phpDocumentor_HighlightParser
-;; tagphptype is for "string" in @param string description, for example
-docblock = <span class="src-doc">
-/docblock = </span>
-tagphptype = <span class="src-doc-type">
-/tagphptype = </span>
-tagvarname = <span class="src-doc-var">
-/tagvarname = </span>
-coretag = <span class="src-doc-coretag">
-/coretag = </span>
-tag = <span class="src-doc-tag">
-/tag = </span>
-inlinetag = <span class="src-doc-inlinetag">
-/inlinetag = </span>
-internal = <span class="src-doc-internal">
-/internal = </span>
-closetemplate = <span class="src-doc-close-template">
-/closetemplate = </span>
-docblocktemplate = <span class="src-doc-template">
-/docblocktemplate = </span>
-
-[highlightTutorialSourceTokens]
-;; this is for XML DocBook-based tutorials, highlighted by phpDocumentor_TutorialHighlightParser
-;; <tag>
-opentag = <span class="tute-tag">
-/opentag = </span>
-;; </tag>
-closetag = <span class="tute-tag">
-/closetag = </span>
-;; <tag attribute="value">
-attribute = <span class="tute-attribute-name">
-/attribute = </span>
-;; <tag attribute="value">
-attributevalue = <span class="tute-attribute-value">
-/attributevalue = </span>
-;; &entity;
-entity = <span class="tute-entity">
-/entity = </span>
-;; <!-- comment -->
-comment = <span class="tute-comment">
-/comment = </span>
-;; {@inline tag}
-itag = <span class="tute-inline-tag">
-/itag = </span>
-
-;; used for translation of html in DocBlocks
-[desctranslate]
-ul = <ul>
-/ul = </ul>
-ol = <ol>
-/ol = </ol>
-li = <li>
-/li = </li>
-code = <div class="listing"><pre>
-/code = </pre></div>
-var = <var>
-/var = </var>
-samp = <samp>
-/samp = </samp>
-kbd = <kbd>
-/kbd = </kbd>
-pre = <pre>
-/pre = </pre>
-p = <p>
-/p = </p>
-b = <strong>
-/b = </strong>
-i = <em>
-/i = </em>
-br = <br />
-
-[ppage]
-;; this is the DocBook package page translation section. All DocBook tags
-;; that have a corresponding html tag must be listed here. Entities should
-;; also be listed here
-;;
-;; examples:
-;; 1)
-;; tagname = newtagname
-;;
-;; This is the simplest case, where all attributes will be added into the
-;; starting tag and the ending tag will be html/xml style </tranlatedtagname>
-;; <tagname></tagname> becomes <newtagname></newtagname> and
-;; <tagname attr="value"></tagname> becomes
-;; <newtagname attr="value"></newtagname>
-;;
-;; 2)
-;; tagname = newtagname
-;; tagname->attr = newattrname
-;;
-;; in this case, everything will be like the first case, except tags like:
-;; <tagname attr="value"></tagname> will become
-;; <newtagname newattrname="value"></newtagname>
-;;
-;; 3)
-;; tagname = newtagname
-;; tagname->attr = newattrname
-;; tagname->attr+value = newvalue
-;;
-;; in this case, the value is also translated to another. This can be useful
-;; for instances such as focus="middle" changing to align="center" or something
-;; of that nature.
-;; <tagname attr="value"></tagname> will become
-;; <newtagname newattrname="newvalue"></newtagname>
-;;
-;; 4)
-;; tagname = newtagname
-;; tagname->attr1 = newattrname
-;; tagname->attr2 = newattrname
-;; tagname->attr1+value|attr2+value = newvalue
-;;
-;; in this case, two attributes combine to make one new attribute, and the combined
-;; value is translated into a new value
-;; <tagname attr1="value1" attr2="value2"></tagname> will become
-;; <newtagname newattrname="newvalue"></newtagname>
-;;
-;; 5)
-;; tagname = newtagname
-;; tagname!attr = dummy
-;;
-;; here, the attribute will be ignored. dummy is not used and may be any value
-;; <tagname attr="value"></tagname> will become
-;; <newtagname></newtagname>
-;;
-;; 6)
-;; tagname = newtagname
-;; tagname! = dummy
-;;
-;; here, all attributes will be ignored. dummy is not used and may be any value
-;; <tagname attr1="value" attr2="foo"></tagname> will become
-;; <newtagname></newtagname>
-;;
-;; 7)
-;; tagname = newtagname
-;; tagname/ = 1
-;;
-;; here, the tag will be translated as a single tag with no closing tag, and all
-;; attributes
-;; <tagname attr="val">{text text}</tagname> will become
-;; <newtagname attr="val" />
-;;
-;; 8)
-;; tagname = <starttaginfo />
-;; /tagname = closetagtext
-;;
-;; in this case, the text <starttaginfo> will be inserted exactly as entered for
-;; <tagname> and closetagtext for </tagname>
-;; <tagname attr="val"></tagname> will become
-;; <starttaginfo />closetagtext
-;;
-;; 9)
-;; $attr$my_attribute = newattrname
-;;
-;; tagname = newtagname
-;;
-;; in this case, all occurences of my_attribute in any tag will be changed to
-;; newattrname. This is useful for changing things like role="php" to
-;; class="php," for example. Note that the text "$attr$" MUST be on the line
-;; start for phpDocumentor to recognize it.
-;;
-;; 10)
-;; &entity; = translation text
-;; &quot; = &quot;
-;; &quot; = """
-;; &lt; = <
-;;
-;; Use this to control translation of entities to their appropriate values
-
-&nbsp; = &nbsp;
-&quot; = &quot;
-&rdquo; = &rdquo;
-&ldquo; = &ldquo;
-&amp; = &amp;
-&lt; = &lt;
-&gt; = &gt;
-&copy; = &copy;
-
-$attr$role = class
-
-abbrev = abbr
-
-blockquote = blockquote
-
-arg = span
-arg->choice = class
-
-author = <span class="author">
-/author = </span>
-author! = 0
-
-authorblurb = <div class="author-blurb">
-/authorblurb = </div>
-
-authorgroup = <div class="authors"><h2 class="title">Authors</h2>
-/authorgroup = </div>
-authorgroup! = 0
-
-caution = <span class="warning">
-/caution = </span>
-caution! = 0
-
-cmdsynopsis = <div class="cmd-synopsis">
-/cmdsynopsis = </div>
-
-command = <span class="cmd-title">
-/command = </span>
-
-copyright = <div class="notes">
-/copyright = </div>
-
-emphasis = strong
-
-example = <pre class="example">
-/example = </pre>
-example! = 0
-
-function =
-/function = ()
-
-formalpara = p
-
-graphic = img
-graphic->fileref = src
-graphic/ =
-
-important = strong
-
-informalequation = blockquote
-
-informalexample = div
-
-inlineequation = em
-
-itemizedlist = ul
-
-listitem = li
-
-literal = code
-
-literallayout = span
-
-option = " "
-/option =
-
-orderedlist = ol
-
-para = p
-
-programlisting = <pre class="listing">
-/programlisting = </pre>
-programlisting! = 0
-
-refentry = div
-
-refnamediv = <div class="ref-title-box">
-/refnamediv = </div>
-refnamediv! = 0
-
-refname = <h1 class="ref-title">
-/refname = </h1>
-
-refpurpose = <h2 class="ref-purpose">
-/refpurpose = </h2>
-
-refsynopsisdiv = <div class="ref-synopsis">
-/refsynopsisdiv = </div>
-refsynopsisdiv! = 0
-
-refsect1 = span
-
-refsect2 =
-/refsect2 = <hr />
-
-refsect3 =
-/refsect3 = <br />
-
-releaseinfo = <div class="release-info">(
-/releaseinfo = )</div>
-
-simpara =
-/simpara = <br />
-simpara! = 0
-
-subscript = sub
-
-superscript = super
-
-table = table
-
-table->colsep = rules
-table->rowsep = rules
-table->colsep+1|rowsep+1 = all
-table->colsep+1|rowsep+0 = cols
-table->colsep+0|rowsep+1 = rows
-
-table->frame = frame
-table->frame+all = border
-table->frame+none = void
-table->frame+sides = vsides
-table->frame+top = above
-table->frame+topbot = hsides
-
-thead = thead
-
-tfoot = tfoot
-
-tbody = tbody
-
-colspec = col
-
-tgroup = colgroup
-tgroup/ = 1
-tgroup->cols = span
-
-row = tr
-
-entry = td
-entry->morerows = colspan
-entry->morerows+1 = 2
-entry->morerows+2 = 3
-entry->morerows+3 = 4
-entry->morerows+4 = 5
-entry->morerows+5 = 6
-entry->morerows+6 = 7
-entry->morerows+7 = 8
-entry->morerows+8 = 9
-entry->morerows+9 = 10
-entry->morerows+10 = 11
-;; add more if you need more colspans
-
-warning = <span class="warning">
-/warning = </span>
-warning! = 0
-
-;; now begins the attributes that should be tags in cdata
-[$attr$id]
-open = a
-;close = /a
-cdata! = true
-quotevalues = true
-separator = "="
-;separateall = true
-$id = name
-
-;; now begins the sections that deal with <title>
-[refsynopsisdiv_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h1 class="title">
-close = </h1>
-
-[refsect1_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h2 class="title">
-close = </h2>
-
-[refsect2_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h3 class="title">
-close = </h3>
-
-[refsect3_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h4 class="title">
-close = </h4>
-
-[para_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <div class="title">
-close = </div>
-
-[formalpara_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <div class="title">
-close = </div>
-
-[example_title]
-;tag_attr = true
-;attr_name = title
-;cdata_start = true
-cdata_end = true
-open = </td></tr><tr><td><strong>
-close = </strong>
-
-[table_title]
-;tag_attr = true
-;attr_name = true
-cdata_start = true
-open = <caption>
-close = </caption>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/__tags.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/__tags.tpl
deleted file mode 100644
index 221830c4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/__tags.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="tag-list">
- {section name=tag loop=$tags}
- {if $tags[tag].keyword != "abstract" &&
- $tags[tag].keyword != "access" &&
- $tags[tag].keyword != "static" &&
- $tags[tag].keyword != "version"
- }
-
- <strong>{$tags[tag].keyword|capitalize}:</strong>
- {$tags[tag].data}<br />
- {/if}
- {/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_declaration.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_declaration.tpl
deleted file mode 100644
index d7fe2f82..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_declaration.tpl
+++ /dev/null
@@ -1,38 +0,0 @@
-<hr size="1" noshade="noshade"/>
-<div class="class-declaration">
- {if count($tags) > 0}
- {section name=tag loop=$tags}
- {if $tags[tag].keyword == "abstract"}
- abstract
- {/if}
- {/section}
- {/if}
-
- {if $is_interface}
- interface
- {else}
- class
- {/if}
-
- <strong>{$class_name}</strong>
-
- {if count($class_tree) > 1}
- {section name=tree loop=$class_tree.classes}
- {if $smarty.section.tree.last}
- extends {$class_tree.classes[$smarty.section.tree.index_prev]}
- {/if}
- {/section}
- {/if}
-
- {if $implements}
- <br/>
- implements
- {foreach item="interface" from=$implements}
- {if !$smarty.foreach.interface.first}
- , {$interface}
- {else}
- {$interface}
- {/if}
- {/foreach}
- {/if}
-</div> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_description.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_description.tpl
deleted file mode 100644
index 12025c1c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_description.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="class-description">
- <p>{$sdesc}</p>
-
- {if $desc != ""}{$desc}{/if}
-</div>
-
-{include file="_tags.tpl" tags=$tags}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_list.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_list.tpl
deleted file mode 100644
index d6a1d398..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_class_list.tpl
+++ /dev/null
@@ -1 +0,0 @@
-{eval var=$compiledclassindex} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_details.tpl
deleted file mode 100644
index bca71e17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_details.tpl
+++ /dev/null
@@ -1,33 +0,0 @@
-{if $consts}
- <hr size="1" noshade="noshade"/>
- <a name="constant-details"></a>
- <table class="constant-details" cellspacing="1">
- <tr>
- <th>Constant Details</th>
- </tr>
- {section name=const loop=$consts}
- <tr>
- <td>
- <a name="{$consts[const].const_dest}"></a>
-
- <h3>{$consts[const].const_name}</h3>
-
- <p>{$consts[const].sdesc}</p>
-
- {if $consts[const].desc}
- {$consts[const].desc}
- {/if}
-
- <div class="tag-list">
- <h4 class="tag">Type:</h4>
- <div class="tag-data">{include file="_get_constant_type.tpl" const=$consts[const].const_value}</div>
- <h4 class="tag">Value:</h4>
- <div class="tag-data">{$consts[const].const_value}</div>
- </div>
- {include file="_tags.tpl" tags=$consts[const].tags}
- <p/>
- </td>
- </tr>
- {/section}
- </table>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_summary.tpl
deleted file mode 100644
index 8049c4b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constant_summary.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-{if $consts || $iconsts}
- <hr size="1" noshade="noshade"/>
- <a name="constant-summary"></a>
- <table class="constant-summary" cellspacing="1">
- <tr>
- <th colspan="3">Constant Summary</th>
- </tr>
- {section name=const loop=$consts}
- <tr>
- <td class="type" nowrap="nowrap">{strip}{include file="_get_constant_type.tpl" const=$consts[const].const_value}{/strip}</td>
- <td class="name"><a href="{$consts[const].id}">{$consts[const].const_name}</a></td>
- <td class="description" width="100%">
- {$consts[const].sdesc}
-
- {if $consts[const].desc}
- {$consts[const].desc}
- {/if}
- </td>
- </tr>
- {/section}
- </table>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_details.tpl
deleted file mode 100644
index ec4fd0a2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_details.tpl
+++ /dev/null
@@ -1,55 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__construct"}
- <hr size="1" noshade="noshade"/>
- <a name="sec-method"></a>
- <table class="method-details" cellspacing="1">
- <tr>
- <th colspan="3">Constructor Details</th>
- </tr>
- <tr>
- <td class="method-data">
- <a name="{$methods[method].method_dest}"></a>
-
- <h2>{$methods[method].function_name}</h2>
-
- <table class="method-detail" cellspacing="0">
- <tr>
- <td nowrap="nowrap">{strip}
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].access == "public"}
- public&nbsp;
- {/if}
-
- {if $methods[method].abstract == "1"}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == "1"}
- static&nbsp;
- {/if}
-
- <strong>{$methods[method].function_name}</strong>
- {/strip}</td>
- <td nowrap="nowrap">{strip}
- {$methods[method].ifunction_call.params}
- {/strip}</td>
- </tr>
- </table>
-
- <p>{$methods[method].sdesc}</p>
-
- {if $methods[method].desc}
- {$methods[method].desc}
- {/if}
-
- {include file="_tags.tpl" tags=$methods[method].tags}
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_summary.tpl
deleted file mode 100644
index 8819f63e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_constructor_summary.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__construct"}
- <hr size="1" noshade="noshade"/>
- <a name="constructor-summary"></a>
- <table class="method-summary" cellspacing="1">
- <tr>
- <th colspan="2">Constructor Summary</th>
- </tr>
- <tr>
- <td class="type" nowrap="nowrap" width="1%">{$methods[method].access}</td>
- <td>
- <div class="declaration">
- <a href="{$methods[method].id}">{$methods[method].function_name}</a>
- {$methods[method].ifunction_call.params}
- </div>
- <div class="description">
- {$methods[method].sdesc}
- </div>
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_details.tpl
deleted file mode 100644
index 3cb5534a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_details.tpl
+++ /dev/null
@@ -1,55 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__destruct"}
- <hr size="1" noshade="noshade"/>
- <a name="sec-method"></a>
- <table class="method-details" cellspacing="1">
- <tr>
- <th colspan="3">Destructor Details</th>
- </tr>
- <tr>
- <td class="method-data">
- <a name="{$methods[method].method_dest}"></a>
-
- <h2>{$methods[method].function_name}</h2>
-
- <table class="method-detail" cellspacing="0">
- <tr>
- <td nowrap="nowrap">{strip}
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].access == "public"}
- public&nbsp;
- {/if}
-
- {if $methods[method].abstract == "1"}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == "1"}
- static&nbsp;
- {/if}
-
- <strong>{$methods[method].function_name}</strong>
- {/strip}</td>
- <td nowrap="nowrap">{strip}
- {build_argument_list args=$methods[method].ifunction_call.params style="vertical"}
- {/strip}</td>
- </tr>
- </table>
-
- <p>{$methods[method].sdesc}</p>
-
- {if $methods[method].desc}
- {$methods[method].desc}
- {/if}
-
- {include file="_tags.tpl" tags=$methods[method].tags}
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_summary.tpl
deleted file mode 100644
index 53e8f1d2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_destructor_summary.tpl
+++ /dev/null
@@ -1,27 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__destruct"}
- <hr size="1" noshade="noshade"/>
- <a name="desructor-summary"></a>
- <table class="method-summary" cellspacing="1">
- <tr>
- <th colspan="2">Destructor Summary</th>
- </tr>
- <tr>
- <td class="type" nowrap="nowrap" width="1%">{strip}
- {$methods[method].access}
- {/strip}</td>
- <td>
- <div class="declaration">{strip}
- <a href="{$methods[method].id}">{$methods[method].function_name}</a>
- {$methods[method].ifunction_call.params}
- {/strip}</div>
- <div class="description">
- {$methods[method].sdesc}
- </div>
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_footer.tpl
deleted file mode 100644
index 0c2eddc2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_footer.tpl
+++ /dev/null
@@ -1 +0,0 @@
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_get_constant_type.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_get_constant_type.tpl
deleted file mode 100644
index 48301da4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_get_constant_type.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{if is_numeric(strtolower(trim($const)))}
- int
-{elseif strtolower(trim($const)) == "true" ||
- strtolower(trim($const)) == "false"}
- bool
-{elseif strtolower(trim($const)) == "null"}
- null
-{else}
- string
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_header.tpl
deleted file mode 100644
index f92571a4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_header.tpl
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="bar" nowrap="nowrap">
- {include file="_class_list.tpl"}
-</div>
-<div id="content1">
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_constants.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_constants.tpl
deleted file mode 100644
index 66c37633..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_constants.tpl
+++ /dev/null
@@ -1,34 +0,0 @@
-{if $iconsts}
- {section name=iconst loop=$iconsts}
- <table class="inherited-constants" cellspacing="1">
- <tr>
- <th>Constants Inherited From {$iconsts[iconst].parent_class}</th>
- </tr>
- <tr>
- <td>
- {assign var="_consts" value=""}
-
- {section name=_const loop=$iconsts[iconst].iconsts}
- {if $_consts != ""},
- {* append var="_consts" value=", "*}
- {/if}
- <a href="{$href}">{$iconsts[iconst].iconsts[_const].name}</a>{if !$smarty.section.name.last},{/if}
- {*
- {extract_attribute attribute="href"
- element=$iconsts[iconst].iconsts[_const].link
- var="href" append="no"}
-
- {append var="_consts" value="<a href=\""}
- {append var="_consts" value=$href}
- {append var="_consts" value="\">"}
- {append var="_consts" value=$iconsts[iconst].iconsts[_const].name}
- {append var="_consts" value="</a>"}
- *}
-{/section}
-
- {*$_consts*}
- </td>
- </tr>
- </table>
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_methods.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_methods.tpl
deleted file mode 100644
index 55aafb17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inherited_methods.tpl
+++ /dev/null
@@ -1,42 +0,0 @@
-{if $imethods}
- {section name=imethod loop=$imethods}
- {if count($imethods[imethod].imethods) > 1 ||
- ($imethods[imethod].imethods[0].name != "__construct" &&
- $imethods[imethod].imethods[0].name != "__destruct" &&
- $imethods[imethod].imethods[0].abstract != "1")}
- <table class="inherited-methods" cellspacing="1">
- <tr>
- <th>Methods Inherited From {$imethods[imethod].parent_class}</th>
- </tr>
- <tr>
- <td>
- {* assign var="_methods" value="" *}
-
- {section name=_method loop=$imethods[imethod].imethods}
- {if $imethods[imethod].imethods[_method].name != "__construct" &&
- $imethods[imethod].imethods[_method].abstract != "1"}
- {*
- {if $_methods != ""}
- {append var="_methods" value=", "}
- {/if}
-
- {extract_attribute attribute="href"
- element=$imethods[imethod].imethods[_method].link
- var="href" append="no"}
-
- {append var="_methods" value="<a href=\""}
- {append var="_methods" value=$href}
- {append var="_methods" value="\">"}
- {append var="_methods" value=$imethods[imethod].imethods[_method].name}
- {append var="_methods" value="</a>"}
- *}
- {$imethods[imethod].imethods[_method].link}{if !$smarty.section._method.last},{/if}
- {/if}
- {/section}
-
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inheritence_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inheritence_tree.tpl
deleted file mode 100644
index 471c7972..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_inheritence_tree.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="inheritence-tree">
- <pre>{section name=tree loop=$class_tree.classes}{if $smarty.section.tree.last}<strong>{$class_tree.classes[tree]}</strong>{else}{$class_tree.classes[tree]}{/if}{$class_tree.distance[tree]}{/section}</pre>
-</div> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_details.tpl
deleted file mode 100644
index b5ddfb10..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_details.tpl
+++ /dev/null
@@ -1,101 +0,0 @@
-{if $methods && (count($methods) > 1 ||
- ($methods[0].function_name != "__construct" &&
- $methods[0].function_name != "__destruct"))}
-
- <hr size="1" noshade="noshade"/>
- <a name="method-details"></a>
- <table class="method-details" cellspacing="1">
- <tr>
- <th>Method Details</th>
- </tr>
- {section name=method loop=$methods}
- {if $methods[method].function_name != "__construct" &&
- $methods[method].function_name != "__destruct"}
-
- <tr>
- <td class="method-data">
-
- <a name="{$methods[method].method_dest}"></a>
-
- <h2>{$methods[method].function_name}</h2>
-
- <table class="method-detail" cellspacing="0">
- <tr>
- <td nowrap="nowrap">{strip}
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].access == "public"}
- public&nbsp;
- {/if}
-
- {if $methods[method].abstract == 1}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == 1}
- static&nbsp;
- {/if}
-
- {$methods[method].function_return}&nbsp;
-
-
- <strong>{$methods[method].function_name}</strong>
- {/strip}</td>
- <td width="100%">{strip}
- (
- {if $methods[method].ifunction_call.params}
- {foreach item=param name="method" from=$methods[method].ifunction_call.params}
- {$param.type} {$param.name} {if !$smarty.foreach.method.last}, {/if}
- {/foreach}
-
- {/if}
- )
- {/strip}</td>
- </tr>
- </table>
-
- <p>{$methods[method].sdesc}</p>
-
- {if $methods[method].desc}
- {$methods[method].desc}
- {/if}
- {* $methods[method]|print_r *}
- <div class="tag-list"><table class="method-summary" cellspacing="1">
- {if $methods[method].ifunction_call.params}
- <tr><th colspan="3" class="small">Input</th></tr>
- {foreach item=param name="method" from=$methods[method].ifunction_call.params}
- <tr><td valign="top">{$param.type}</td><td valign="top"><strong>{$param.name}</strong><td valign="top">{$param.description}</td></tr>
- {/foreach}
- {/if}
- {if $methods[method].tags}
- <tr><th colspan="3" class="small">Output</th></tr>
-
- {foreach item=param name="method" from=$methods[method].tags}
- {if $param.keyword == "return"}
- <tr><td valign="top">
- {$methods[method].function_return}
- </td><td valign="top" colspan="2">{$param.data}</td></tr>
- {/if}
- {/foreach}
- {/if}
- {if $methods[method].tags}
- <tr><th colspan="3" class="small">Exception</th></tr>
-
- {foreach item=param name="method" from=$methods[method].tags}
- {if $param.keyword == "throws"}
- <tr><td valign="top">{$param.keyword}</td><td valign="top" colspan="2">{$param.data}</td></tr>
- {/if}
- {/foreach}
- {/if}
- </table></div>
-
- {* include file="_tags.tpl" tags=$methods[method].tags *}
- <p/>
- </td>
- </tr>
- {/if}
- {/section}
- </table>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_summary.tpl
deleted file mode 100644
index 8fefd671..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_method_summary.tpl
+++ /dev/null
@@ -1,61 +0,0 @@
-{if $methods || $imethods}
- <hr size="1" noshade="noshade"/>
- <a name="method-summary"></a>
- <table class="method-summary" cellspacing="1">
- <tr>
- <th colspan="2">Method Summary</th>
- </tr>
- {section name=method loop=$methods}
- {if $methods[method].function_name != "__construct" &&
- $methods[method].function_name != "__destruct"}
- {*
- {if trim(substr($methods[method].function_call, 0, 1)) == "&"}
- {assign var="ref" value="true"}
- {assign var="css" value=" class=\"reference\""}
- {else}
- {assign var="ref" value="false"}
- {assign var="css" value=""}
- {/if}
- *}
- <tr>
- <td class="type" nowrap="nowrap" width="1%">
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].abstract == 1}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == 1}
- static&nbsp;
- {/if}
-
- {$methods[method].function_return}
-{*
- {if $ref == "true"}
- &nbsp;&amp;
- {/if}
-*}
- </td>
- <td>
- <div class="declaration">
- <a href="{$methods[method].id}">{$methods[method].function_name}</a>
- ({strip}
- {if $methods[method].ifunction_call.params}
- {foreach item=param name="method" from=$methods[method].ifunction_call.params}
- {$param.type} {$param.name}{if !$smarty.foreach.method.last}, {/if}
- {/foreach}
-
- {/if}
- {/strip})
- </div>
- <div class="description">
- {$methods[method].sdesc}
- </div>
- </td>
- </tr>
- {/if}
- {/section}
- </table>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_sub_classes.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_sub_classes.tpl
deleted file mode 100644
index e605b314..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_sub_classes.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{if $children}
- <div class="sub-classes">
- {if $is_interface}
- <h4>Direct Known Sub-interfaces:</h4>
- {else}
- <h4>Direct Known Sub-classes:</h4>
- {/if}
-
- <div><small>
- {section name=child loop=$children}
- {if !$smarty.section.child.first}
- , {$children[child].link}
- {else}
- {$children[child].link}
- {/if}
- {/section}
- </small></div>
- </div>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_tags.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_tags.tpl
deleted file mode 100644
index 221830c4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/_tags.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="tag-list">
- {section name=tag loop=$tags}
- {if $tags[tag].keyword != "abstract" &&
- $tags[tag].keyword != "access" &&
- $tags[tag].keyword != "static" &&
- $tags[tag].keyword != "version"
- }
-
- <strong>{$tags[tag].keyword|capitalize}:</strong>
- {$tags[tag].data}<br />
- {/if}
- {/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl
deleted file mode 100644
index 37e94343..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-{section name=letter loop=$letters}
- [ <a href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a> ]
-{/section}
-
-{section name=index loop=$index}
- <hr />
- <a name="{$index[index].letter}"></a>
- <div>
- <h2>{$index[index].letter}</h2>
- <dl>
- {section name=contents loop=$index[index].index}
- <dt><b>{$index[index].index[contents].name}</b></dt>
- <dd>{$index[index].index[contents].listing}</dd>
- {/section}
- </dl>
- </div>
- <a href="{$indexname}.html#top">top</a><br>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl
deleted file mode 100644
index b503c142..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<div align="center"><h1>{$maintitle}</h1></div>
-<b>Welcome to {$package}!</b><br />
-<br />
-This documentation was generated by <a href="{$phpdocwebsite}">phpDocumentor v{$phpdocversion}</a><br />
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl
deleted file mode 100644
index 49e8c142..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl
+++ /dev/null
@@ -1,31 +0,0 @@
-{include file="header.tpl" eltype="class" hasel=true contents=$classcontents}
-
-<h1><a href="../../../classdoc/{$class_name}.html">{if $is_interface}Interface{else}Class{/if} {$class_name}</a>
-<span style="font-size:11pt">(<a href="../../../classdoc/{$class_name}.html">Class Overview</a>)</span>
-</h1>
-
-{*inheritence tree*}
-<div class="inheritence-tree">
- <pre>{section name=tree loop=$class_tree.classes}{if $smarty.section.tree.last}<strong>{$class_tree.classes[tree]}</strong>{else}{$class_tree.classes[tree]}{/if}{$class_tree.distance[tree]}{/section}</pre>
-</div>
-
-{include file="_sub_classes.tpl"}
-{include file="_class_description.tpl"}
-{include file="_inherited_constants.tpl"}
-
-{include file="_constructor_summary.tpl"}
-{* include file="_destructor_summary.tpl" *}
-
-{include file="_method_summary.tpl"}
-
-{include file="_inherited_methods.tpl"}
-{include file="_constant_summary.tpl"}
-{include file="_constructor_details.tpl"}
-
-{* include file="_destructor_details.tpl" *}
-
-{include file="_method_details.tpl"}
-
-{include file="_constant_details.tpl"}
-
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl
deleted file mode 100644
index c07fc33a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{foreach key=subpackage item=files from=$classleftindex}
- <div class="package">
- {if $subpackage != ""}{$subpackage}<br />{/if}
- {section name=files loop=$files}
- {if $subpackage != ""}&nbsp;&nbsp;{/if}
- {if $files[files].link != ''}<a href="{$files[files].link}">{/if}{$files[files].title}{if $files[files].link != ''}</a>{/if}<br />
- {/section}
- </div>
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl
deleted file mode 100644
index 4020e3a8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<h1>{$title}</h1>
-{section name=classtrees loop=$classtrees}
-<hr />
-<div class="classtree">Root class {$classtrees[classtrees].class}</div><br>
-{$classtrees[classtrees].class_tree}
-{/section}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl
deleted file mode 100644
index 88856c4b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{section name=consts loop=$consts}
-{if $show == 'summary'}
- var {$consts[consts].const_name}, {$consts[consts].sdesc}<br>
-{else}
- <a name="{$consts[consts].const_dest}"></a>
- <p></p>
- <h4>{$consts[consts].const_name} = <span class="value">{$consts[consts].const_value|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</span></h4>
- <p>[line {if $consts[consts].slink}{$consts[consts].slink}{else}{$consts[consts].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$consts[consts].sdesc desc=$consts[consts].desc tags=$consts[consts].tags}
-
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div><br />
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl
deleted file mode 100644
index a1c71a0d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl
+++ /dev/null
@@ -1 +0,0 @@
-{$toc} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl
deleted file mode 100644
index 04ce5b48..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-{if count($defines) > 0}
-{section name=def loop=$defines}
-{if $show == 'summary'}
-define constant <a href="{$defines[def].id}">{$defines[def].define_name}</a> = {$defines[def].define_value}, {$defines[def].sdesc}<br>
-{else}
- <hr />
- <a name="{$defines[def].define_link}"></a>
- <h3>{$defines[def].define_name} <span class="smalllinenumber">[line {if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}]</span></h3>
- <div class="tags">
- <table width="90%" border="0" cellspacing="0" cellpadding="1"><tr><td class="code_border">
- <table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td class="code">
- <code>{$defines[def].define_name} = {$defines[def].define_value}</code>
- </td></tr></table>
- </td></tr></table>
-
- {include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags}
- <br />
- {if $defines[def].define_conflicts.conflict_type}
- <p><b>Conflicts with defines:</b>
- {section name=me loop=$defines[def].define_conflicts.conflicts}
- {$defines[def].define_conflicts.conflicts[me]}<br />
- {/section}
- </p>
- {/if}
-{* original {if $defines[def].define_conflicts != ""
- <b>Conflicts:</b> {$defines[def].define_conflicts<br /><br />
- {/if *}
- </div>
- <div class="top">[ <a href="#top">Top</a> ]</div><br /><br />
-{/if}
-{/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl
deleted file mode 100644
index 09a603f8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-{if $sdesc != ''}{$sdesc|default:''}<br /><br />{/if}
-{if $desc != ''}{$desc|default:''}<br />{/if}
-{if count($tags) > 0}
-<br /><br />
-<h4>Tags:</h4>
-<div class="tags">
-<table border="0" cellspacing="0" cellpadding="0">
-{section name=tag loop=$tags}
- <tr>
- <td><b>{$tags[tag].keyword}:</b>&nbsp;&nbsp;</td><td>{$tags[tag].data}</td>
- </tr>
-{/section}
-</table>
-</div>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl
deleted file mode 100644
index 175a5136..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<a name="top"></a>
-<h1>Index of all elements</h1>
-{include file="basicindex.tpl" indexname="elementindex"}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl
deleted file mode 100644
index 1576a822..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl
+++ /dev/null
@@ -1,21 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-{section name=files loop=$files}
-<a href="#{$files[files].file}">{$files[files].file}</a><br>
-{/section}
-{foreach key=file item=issues from=$all}
-<a name="{$file}"></a>
-<h1>{$file}</h1>
-{if count($issues.warnings)}
-<h2>Warnings:</h2><br>
-{section name=warnings loop=$issues.warnings}
-<b>{$issues.warnings[warnings].name}</b> - {$issues.warnings[warnings].listing}<br>
-{/section}
-{/if}
-{if count($issues.errors)}
-<h2>Errors:</h2><br>
-{section name=errors loop=$issues.errors}
-<b>{$issues.errors[errors].name}</b> - {$issues.errors[errors].listing}<br>
-{/section}
-{/if}
-{/foreach}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/examplesource.tpl
deleted file mode 100644
index fb85654b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/examplesource.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl" title=$title}
-<h1 align="center">{$title}</h1>
-<div class="php">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl
deleted file mode 100644
index 50f108d7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{foreach key=subpackage item=files from=$fileleftindex}
- {if $subpackage != ""}subpackage <b>{$subpackage}</b><br>{/if}
- <div class="package">
- {section name=files loop=$files}
- {if $files[files].link != ''}<a href="{$files[files].link}">{/if}
- {$files[files].title}
- {if $files[files].link != ''}</a>{/if}<br>
- {/section}
- </div><br />
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl
deleted file mode 100644
index b23076a0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{capture name="tutle"}File Source for {$name}{/capture}
-{include file="header.tpl" title=$smarty.capture.tutle}
-<h1 align="center">Source for file {$name}</h1>
-<p>Documentation is available at {$docs}</p>
-<div class="php">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl
deleted file mode 100644
index 0b744c20..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-<div id="footer">
- Copyright &copy; 2006 by Prado Software Group.
-</div>
-
-</div><!-- page -->
-
-
-</body>
-</html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl
deleted file mode 100644
index 098aeb17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl
+++ /dev/null
@@ -1,48 +0,0 @@
-{section name=func loop=$functions}
-{if $show == 'summary'}
-function {$functions[func].id}, {$functions[func].sdesc}<br />
-{else}
- <hr />
- <a name="{$functions[func].function_dest}"></a>
- <h3>{$functions[func].function_name} <span class="smalllinenumber">[line {if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}]</span></h3>
- <div class="function">
- <table width="90%" border="0" cellspacing="0" cellpadding="1"><tr><td class="code_border">
- <table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td class="code">
- <code>{$functions[func].function_return} {if $functions[func].ifunction_call.returnsref}&amp;{/if}{$functions[func].function_name}(
-{if count($functions[func].ifunction_call.params)}
-{section name=params loop=$functions[func].ifunction_call.params}
-{if $smarty.section.params.iteration != 1}, {/if}{if $functions[func].ifunction_call.params[params].default != ''}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].default != ''} = {$functions[func].ifunction_call.params[params].default|escape:"html"}]{/if}
-{/section}
-{/if})</code>
- </td></tr></table>
- </td></tr></table><br />
-
- {include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags}
- <br /><br />
- {if $functions[func].function_conflicts.conflict_type}
- <p><b>Conflicts with functions:</b>
- {section name=me loop=$functions[func].function_conflicts.conflicts}
- {$functions[func].function_conflicts.conflicts[me]}<br />
- {/section}
- </p>
- {/if}
-{* original {if $functions[func].function_conflicts != ""
- <b>Conflicts:</b> {$functions[func].function_conflicts<br /><br />
- {/if *}
-
- {if count($functions[func].params) > 0}
- <h4>Parameters</h4>
- <table border="0" cellspacing="0" cellpadding="0">
- {section name=params loop=$functions[func].params}
- <tr>
- <td class="type">{$functions[func].params[params].datatype}&nbsp;&nbsp;</td>
- <td><b>{$functions[func].params[params].var}</b>&nbsp;&nbsp;</td>
- <td>{$functions[func].params[params].data}</td>
- </tr>
- {/section}
- </table>
- {/if}
- <div class="top">[ <a href="#top">Top</a> ]</div><br /><br />
- </div>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl
deleted file mode 100644
index 1053f748..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-{if count($globals) > 0}
-{section name=glob loop=$globals}
-{if $show == 'summary'}
-global variable <a href="{$globals[glob].id}">{$globals[glob].global_name}</a> = {$globals[glob].global_value}, {$globals[glob].sdesc}<br>
-{else}
- <hr />
- <a name="{$globals[glob].global_link}"></a>
- <h4><i>{$globals[glob].global_type}</i> {$globals[glob].global_name} <span class="smalllinenumber">[line {if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}]</span></h4>
- <div class="tags">
- {if $globals[glob].sdesc != ""}
- {include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags}
- {/if}
-
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><b>Default value:</b>&nbsp;&nbsp;</td>
- <td>{$globals[glob].global_value|replace:" ":"&nbsp;"|replace:"\n":"<br />\n"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</td>
- </tr>
- {if $globals[glob].global_conflicts.conflict_type}
- <tr>
- <td><b>Conflicts with globals:</b>&nbsp;&nbsp;</td>
- <td>
- {section name=me loop=$globals[glob].global_conflicts.conflicts}
- {$globals[glob].global_conflicts.conflicts[me]}<br />
- {/section}
- </td>
- </tr>
- {/if}
-{* original {if $globals[glob].global_conflicts != ""
- <tr>
- <td><b>Conflicts:</b>&nbsp;&nbsp;</td>
- <td>{$globals[glob].global_conflicts</td>
- </tr>
- {/if *}
- </table>
- </div><br /><br />
- <div class="top">[ <a href="#top">Top</a> ]</div><br /><br />
-{/if}
-{/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl
deleted file mode 100644
index 83b0c66b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl
+++ /dev/null
@@ -1,23 +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" xml:lang="en" >
-
-<head>
-<title>PRADO API Manual: {$title}</title>
-
-<meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT"/>
-<meta http-equiv="Pragma" content="no-cache"/>
-<meta http-equiv="Cache-Control" content="no-cache"/>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta http-equiv="content-language" content="en"/>
-<meta name="Keywords" content="PRADO PHP framework component template delphi asp.net event property OOP PHP5 object oriented programming Web programming development" />
-<meta name="Description" content="PRADO is a component-based and event-driven framework for Web application development in PHP 5." />
-<meta name="Author" content="Qiang Xue" />
-<meta name="Subject" content="Web programming, PHP framework" />
-<meta name="Language" content="en" />
-<link rel="stylesheet" type="text/css" href="{$subdir}media/style.css" />
-<link rel="stylesheet" type="text/css" href="{$subdir}media/manual.css" />
-</head>
-<body>
-
-<div id="page">
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl
deleted file mode 100644
index a68f02b1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-[OPTIONS]
-Compatibility=1.1 or later
-Compiled file=documentation.chm
-Contents file=contents.hhc
-Default topic=index.html
-Display compile progress=No
-Index file=Index.hhk
-Language=0x409 English (United States)
-
-
-[FILES]
-{section name=files loop=$files}
-{$files[files].name}
-{/section}
-
-[INFOTYPES]
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl
deleted file mode 100644
index cff067db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{if count($includes) > 0}
-<h4>Includes:</h4>
-<div class="tags">
-{section name=includes loop=$includes}
-{$includes[includes].include_name}({$includes[includes].include_value}) [line {if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}]<br />
-{include file="docblock.tpl" sdesc=$includes[includes].sdesc desc=$includes[includes].desc tags=$includes[includes].tags}
-{/section}
-</div>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl
deleted file mode 100644
index 8b31a11d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="phpDocumentor {$phpdocversion} {$phpdocwebsite}">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-{$klinks}
-</BODY></HTML>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl
deleted file mode 100644
index 60c74b47..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{include file="header.tpl"}
-{if $contents}
-{$contents}
-{else}
-{include file="blank.tpl"}
-{/if}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.png
deleted file mode 100644
index 19fdf05d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/manual.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/manual.css
deleted file mode 100644
index 8aaa937d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/manual.css
+++ /dev/null
@@ -1,260 +0,0 @@
-/* thanks to symfony for a great base template for phpdoc */
-/* symfony-project.com */
-
-#page
-{
- width: 99%;
-}
-
-div.credit
-{
- font-size: 10px;
- color: #888;
-}
-
-.inherited-methods
-{
- background-color: #ddd;
- font-size: 1.0em;
- margin-top: 10px;
- width: 100%;
-}
-
-.inherited-methods td
-{
- background-color: #FFFFFF;
- font-family: "courier new", courier;
- font-size: 1.1em;
- padding: 5px;
-}
-
-.inherited-methods th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- padding: 5px;
- text-align: left;
-}
-
-.method-detail
-{
- font-size: 1.0em;
-}
-
-.method-detail a
-{
- font-weight: bold;
-}
-
-.method-detail td
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
- padding-top: 10px;
- vertical-align: top;
-}
-
-.method-details
-{
- background-color: #ddd;
- font-size: 1.0em;
- width: 100%;
-}
-
-.method-details td
-{
- background-color: #FFFFFF;
-}
-
-.method-details td.method-data
-{
- padding: 5px;
-}
-
-.method-details h2
-{
- color: #750000;
-}
-
-.method-details th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.method-summary
-{
- background-color: #aaa;
- font-size: 1.0em;
- width: 100%;
-}
-
-.method-summary td
-{
- background-color: #FFFFFF;
- padding: 5px;
-}
-
-.method-summary td a
-{
- font-weight: bold;
-}
-
-.method-summary td.type
-{
- font-family: "courier new", courier;
- font-size: 1.0em;
- text-align: right;
- vertical-align: top;
-}
-
-.method-summary div.declaration
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
-}
-
-.method-summary th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.method-summary th.small
-{
- font-size: 1.0em;
-}
-
-.method-summary tr.reference td {
- background-color: #FFEDED;
-}
-
-
-.constant-details
-{
- background-color: #ddd;
- font-size: 1.0em;
- width: 100%;
-}
-
-.constant-details h3
-{
- color: #750000;
-}
-
-.constant-details td
-{
- background-color: #FFFFFF;
- padding: 5px;
-}
-
-.constant-details th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.constant-summary
-{
- background-color: #ddd;
- font-size: 1.0em;
- width: 100%;
-}
-
-.constant-summary td
-{
- background-color: #FFFFFF;
- padding: 5px;
-}
-
-.constant-summary td.name a
-{
- font-family: "courier new", courier;
- font-size: 1.0em;
- font-weight: bold;
-}
-
-.constant-summary td.type
-{
- font-family: "courier new", courier;
- font-size: 1.0em;
-}
-
-.constant-summary th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.inherited-constants
-{
- background-color: #eee;
- font-size: 1.0em;
- margin-top: 10px;
- width: 100%;
-}
-
-.inherited-constants td
-{
- background-color: #FFFFFF;
- font-family: "courier new", courier;
- font-size: 1.1em;
- padding: 5px;
-}
-
-.inherited-constants th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- padding: 5px;
- text-align: left;
-}
-
-.class-declaration
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
-}
-
-.class-description
-{
- background-color: #F0F0F0;
- margin-top: 10px;
- padding: 1px 8px 1px 8px;
- margin-bottom: 5px;
-}
-
-.inheritence-tree pre
-{
- margin-bottom: 0;
-}
-
-.sub-classes h4
-{
- margin: 10px 0 0 0;
-}
-
-.sub-classes div
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
- margin: 5px 0 0 40px;
-}
-
-.sub-classes div small
-{
- font-size: 1.0em;
-}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/style.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/style.css
deleted file mode 100644
index 918d43e4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/style.css
+++ /dev/null
@@ -1,598 +0,0 @@
-/**
- * PradoSoft profile by Carl G. Mathisen and Stefan A. Petrov
- * http://decart.no
- */
-
-body
-{
- text-align: center;
-}
-
-body, div, span, p, input
-{
- font-family: Verdana, sans-serif, Arial;
- font-size: 10pt;
- color: #333333;
-}
-
-h1, h2, h3, h4
-{
- font-family: Verdana, Helvetica, Arial, Lucida Grande, Trebuchet MS;
- padding: 0px;
- margin: 0px;
- margin-bottom: 10px;
- color: #821B18;
- font-weight: normal;
-}
-
-h2
-{
- font-size: 18px;
-}
-
-h3
-{
- font-size: 16px;
-}
-
-div
-{
- text-align: left;
-}
-
-.instructions
-{
- background-color: #EEEEEE;
-}
-
-img
-{
- border: none;
-}
-
-a
-{
- color: #CD2C27;
- text-decoration: none;
-}
-
-a:hover
-{
- color: #821B18;
- text-decoration: underline;
-}
-
-#page
-{
- margin: 0 auto;
- padding: 0;
- position: relative;
-}
-
-#header
-{
- position: relative;
- height: 98px;
-}
-
-#logo
-{
- height: 99px;
-}
-
-/* main page */
-
-div.intro
-{
- height: 190px;
- background-image: url('bigmantis.jpg');
- background-repeat: no-repeat;
- background-position: top right;
- background-color: #fff;
-}
-
-div.statements
-{
- height: 135px;
- background-image: url('statementsbg.gif');
- background-repeat: repeat-x;
- position: relative;
- border-bottom : 1px solid #EEE;
-}
-
-div.statements div
-{
- position: absolute;
- width: 250px;
- top: 20px;
-}
-
-div.statements div p
-{
- font-size: 13px;
- color: #818181;
-}
-
-div.statements div.whatis
-{
- left: 20px;
-}
-
-div.statements div.whatreq
-{
- left: 290px;
-}
-
-div.statements div.cani
-{
- left: 600px;
- width: 210px;
-}
-
-/* navbar */
-#navbar
-{
- border-bottom: 2px solid #E9EEEF;
- height: 30px;
- margin-bottom: 20px;
-}
-
-#navbar ul
-{
- margin-left: 0;
- padding-left: 0;
- display: inline;
-}
-
-#navbar ul li
-{
- margin-left: 0px;
- list-style: none;
- display: inline;
-}
-
-#navbar ul li a
-{
- display: block;
- float: left;
- font-size: 14px;
- font-weight: bold;
- padding-right: 14px;
- padding-top: 5px;
- color: #CD2B26;
- text-decoration: none;
- height: 29px;
-}
-
-#navbar ul li a.active, #navbar ul li a.hover
-{
- color: #821B18;
-}
-
-/* infobar */
-div#infobar
-{
- float: right;
- width: 200px;
- padding-left: 20px;
- border-left: 2px solid #E9EEEF;
-}
-
-div#infobar div
-{
- margin-bottom: 20px;
-}
-
-div#infobar div#featured img
-{
- margin-top: 10px;
-}
-
-/* articles */
-
-div#articles
-{
- width: 560px;
- float: left;
-}
-
-/* article */
-
-div.article
-{
- margin-bottom: 40px;
-}
-
-div.article .date
-{
- color: #9F9291;
-}
-
-div.article .more
-{
- margin-right: 10px;
- display: block;
- text-align: right;
-}
-
-.logo
-{
- position: absolute;
- margin-left: 15px;
- margin-top: 0px;
- z-index: 1;
-}
-
-#main
-{
- padding: 20px;
- padding-top: 20px;
- background-color: #fff;
-}
-
-div.mantis
-{
- height: 190px;
- background-color: #fff;
- border-bottom: 1px solid #DCDCDC;
-}
-
-div.releases
-{
- float: left;
- width: 240px;
- height: 190px;
-}
-
-div.releases div.official
-{
- width: 190px;
- position: relative;
- left: 52px;
- top: 128px;
- font-size: 8pt;
- color: #6D6D6D;
-}
-
-div.releases div.official a
-{
- display: block;
-}
-
-div.whyprado
-{
- display: block;
- float: left;
-}
-
-div.whyprado ul.list
-{
- margin-top: 40px;
- margin-left: 40px;
-}
-
-div.whyprado ul.list li
-{
- display: block;
- margin: 5px;
- padding: 0px;
- font-size: 18px;
- background-repeat: no-repeat;
- background-position: bottom left;
- padding-left: 30px;
- list-style: none;
-}
-
-
-#footer
-{
- border-top: 1px solid #e9eeef;
- background-color: #fff;
- clear: both;
- color: #A7A7A7;
- font-size: 8pt;
- text-align: center;
- padding-top: 10px;
- padding-bottom: 30px;
- background-repeat: repeat-x;
- background-position: bottom;
-}
-
-#features
-{
- margin-left: 610px;
- padding: 10px;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #BEDD75;
- color: #344A1E;
- font-size: 9pt;
-}
-
-#features ul
-{
- margin: 10px;
- padding: 0px;
-}
-
-#features ul li
-{
- font-size: 8pt;
- padding: 0px;
- margin: 0px;
- margin-top: 8px;
-}
-
-#features h3
-{
- margin: 0px;
- padding: 0px;
- font-size: 10pt;
- color: #292E1D;
- text-align: center;
- border-bottom: 1px solid silver;
-}
-
-#news
-{
- float: left;
- width: 590px;
-}
-
-.newstitle
-{
- font-size: 12pt;
- font-weight: bold;
- color: #555;
- margin-top: 10px;
- margin-bottom: 0px;
- border-bottom: 1px solid silver;
-}
-
-.newscontentmore
-{
- margin-right: 10px;
- display: block;
- color: #50811A;
- text-align: right;
-}
-
-.newscontentmore:hover
-{
- color: red;
-}
-
-.newstime
-{
- margin: 0px;
- font-size:0.8em;
- color:#aaa;
- padding-left:10px;
- text-align: right;
-}
-
-.newscontent
-{
- margin-top: 5px;
-}
-
-#leftpanel
-{
- float: left;
- width: 550px;
-}
-
-#topics
-{
- border: 1px solid #804040;
- margin-left: 610px;
- padding-bottom: 10px;
-}
-
-#topicsheader
-{
- text-align:center;
- font-weight:bold;
- background-color:#804040;
- color:#FFFFBC;
- padding: 3px;
- margin-bottom:0px;
-}
-
-.topicitem
-{
- padding: 5px;
-}
-
-.topicitem a:hover
-{
- text-decoration: underline;
-}
-
-.topicitem p
-{
- margin: 0px;
- font-size:0.8em;
- color:#aaa;
- padding-left:10px;
- white-space:nowrap;
-}
-
-.reference
-{
-}
-
-.reference img
-{
- margin: 10px;
-}
-
-.reference h3
-{
-}
-
-
-.download
-{
- width: 100%;
- background-color: #aaa;
-}
-
-.download td
-{
- background-color: #FFFFFF;
- padding: 5px;
- font-size: 9pt;
-}
-
-.download td a
-{
- font-weight: bold;
-}
-
-.download td.type
-{
- font-family: "courier new", courier;
- text-align: right;
- vertical-align: top;
-}
-
-.download div.declaration
-{
- font-family: "courier new", courier;
-}
-
-
-.download th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- padding: 5px;
- text-align: left;
-}
-
-.download th.small
-{
- font-size: 1.0em;
-}
-
-.download tr.reference td {
- background-color: #FFEDED;
-}
-
-
-.doc-title
-{
- font-size: 14pt;
- font-weight: bold;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.doc-subtitle
-{
- font-size: 11pt;
- font-weight: bold;
- background-color: #EEE;
- padding: 5px;
- margin-top: 20px;
-}
-
-.doc-namespace
-{
- font-size: 8pt;
-}
-
-
-.doc-menu
-{
-}
-
-.doc-classes
-{
-}
-
-.doc-ancestors
-{
- font-size: 8pt;
-}
-
-.doc-properties
-{
- font-size: 9pt;
-}
-
-.doc-properties table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-properties td, .doc-properties th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-events
-{
- font-size: 9pt;
-}
-
-.doc-events table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-events td, .doc-events th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-methods
-{
- font-size: 9pt;
-}
-
-.doc-methods table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-methods td, .doc-methods th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-derived
-{
-}
-
-.doc-inherited
-{
-}
-
-.doc-native td
-{
- background-color: lightyellow;
-}
-
-.forum-topic
-{
- padding: 10px;
- border:1px solid silver;
- margin-bottom: 10px;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css
deleted file mode 100644
index 7dc9d148..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css
+++ /dev/null
@@ -1,728 +0,0 @@
-BODY, DIV, SPAN, PRE, CODE, TD, TH {
- line-height: 140%;
- font-size: 10pt;
- font-family: verdana,arial,sans-serif;
-}
-
-H1 {
- font-size: 12pt;
-}
-
-H4 {
- font-size: 10pt;
- font-weight: bold;
-}
-
-P.label {
- margin-bottom: 5px;
-}
-P.dt {
- margin-top: 0px;
- margin-bottom: 0px;
-}
-P.indent {
- margin-top: 0px;
- margin-left: 20px;
- margin-bottom: 0px;
-}
-P.method {
- background-color: #f0f0f0;
- padding: 2px;
- border: 1px #cccccc solid;
-}
-
-A {
- text-decoration: none;
-}
-
-A:link{
- color: #336699;
-}
-
-A:visited {
- color: #003366;
-}
-
-A:active, A:hover {
- color: #6699CC;
-}
-
-A:hover{
- text-decoration: underline;
-}
-
-SPAN.type {
- color: #336699;
- font-size: xx-small;
- font-weight: normal;
- }
-
-PRE {
- background-color: #EEEEEE;
- padding: 10px;
- border-width: 1px;
- border-color: #336699;
- border-style: solid;
-}
-
-HR {
- color: #336699;
- background-color: #336699;
- border-width: 0px;
- height: 1px;
- filter: Alpha (opacity=100,finishopacity=0,style=1);
-}
-
-DIV.sdesc {
- font-weight: bold;
- background-color: #EEEEEE;
- padding: 10px;
- border-width: 1px;
- border-color: #336699;
- border-style: solid;
-}
-
-DIV.desc {
- font-family: monospace;
- background-color: #EEEEEE;
- padding: 10px;
- border-width: 1px;
- border-color: #336699;
- border-style: solid;
-}
-
-SPAN.code {
- font-family: monospace;
-}
-
-CODE.varsummarydefault{
- padding: 1px;
- border-width: 1px;
- border-style: dashed;
- border-color: #336699;
-}
-
-UL.tute {
- margin: 0px;
- padding: 0px;
- padding-left: 5px;
- }
-
-LI.tute {
- line-height: 140%;
- font-size: 10pt;
- text-indent: -15px;
- padding-bottom: 2px;
- padding-left: 14px;
-}
-
-.small{
- font-size: 9pt;
-}
-
-
-.tute-tag { color: #009999 }
-.tute-attribute-name { color: #0000FF }
-.tute-attribute-value { color: #0099FF }
-.tute-entity { font-weight: bold; }
-.tute-comment { font-style: italic }
-.tute-inline-tag { color: #636311; font-weight: bold }
-
-/**
- * PradoSoft profile by Carl G. Mathisen and Stefan A. Petrov
- * http://decart.no
- */
-
-body
-{
- text-align: center;
-}
-
-body, div, span, p, input
-{
- font-family: Verdana, sans-serif, Arial;
- font-size: 10pt;
- color: #333333;
-}
-
-h1, h2, h3, h4
-{
- font-family: Verdana, Helvetica, Arial, Lucida Grande, Trebuchet MS;
- padding: 0px;
- margin: 0px;
- margin-bottom: 10px;
- color: #821B18;
- font-weight: normal;
-}
-
-h2
-{
- font-size: 18px;
-}
-
-h3
-{
- font-size: 16px;
-}
-
-div
-{
- text-align: left;
-}
-
-.instructions
-{
- background-color: #EEEEEE;
-}
-
-img
-{
- border: none;
-}
-
-a
-{
- color: #CD2C27;
- text-decoration: none;
-}
-
-a:hover
-{
- color: #821B18;
- text-decoration: underline;
-}
-
-#page
-{
- margin: 0 auto;
- padding: 0;
- position: relative;
-}
-
-#header
-{
- position: relative;
- height: 98px;
-}
-
-#logo
-{
- height: 99px;
-}
-
-/* main page */
-
-div.intro
-{
- height: 190px;
- background-image: url('bigmantis.jpg');
- background-repeat: no-repeat;
- background-position: top right;
- background-color: #fff;
-}
-
-div.statements
-{
- height: 135px;
- background-image: url('statementsbg.gif');
- background-repeat: repeat-x;
- position: relative;
- border-bottom : 1px solid #EEE;
-}
-
-div.statements div
-{
- position: absolute;
- width: 250px;
- top: 20px;
-}
-
-div.statements div p
-{
- font-size: 13px;
- color: #818181;
-}
-
-div.statements div.whatis
-{
- left: 20px;
-}
-
-div.statements div.whatreq
-{
- left: 290px;
-}
-
-div.statements div.cani
-{
- left: 600px;
- width: 210px;
-}
-
-/* navbar */
-#navbar
-{
- border-bottom: 2px solid #E9EEEF;
- height: 30px;
- margin-bottom: 20px;
-}
-
-#navbar ul
-{
- margin-left: 0;
- padding-left: 0;
- display: inline;
-}
-
-#navbar ul li
-{
- margin-left: 0px;
- list-style: none;
- display: inline;
-}
-
-#navbar ul li a
-{
- display: block;
- float: left;
- font-size: 14px;
- font-weight: bold;
- padding-right: 14px;
- padding-top: 5px;
- color: #CD2B26;
- text-decoration: none;
- height: 29px;
-}
-
-#navbar ul li a.active, #navbar ul li a.hover
-{
- color: #821B18;
-}
-
-/* infobar */
-div#infobar
-{
- float: right;
- width: 200px;
- padding-left: 20px;
- border-left: 2px solid #E9EEEF;
-}
-
-div#infobar div
-{
- margin-bottom: 20px;
-}
-
-div#infobar div#featured img
-{
- margin-top: 10px;
-}
-
-/* articles */
-
-div#articles
-{
- width: 560px;
- float: left;
-}
-
-/* article */
-
-div.article
-{
- margin-bottom: 40px;
-}
-
-div.article .date
-{
- color: #9F9291;
-}
-
-div.article .more
-{
- margin-right: 10px;
- display: block;
- text-align: right;
-}
-
-.logo
-{
- position: absolute;
- margin-left: 15px;
- margin-top: 0px;
- z-index: 1;
-}
-
-#main
-{
- padding: 20px;
- padding-top: 20px;
- background-color: #fff;
-}
-
-div.mantis
-{
- height: 190px;
- background-color: #fff;
- border-bottom: 1px solid #DCDCDC;
-}
-
-div.releases
-{
- float: left;
- width: 240px;
- height: 190px;
-}
-
-div.releases div.official
-{
- width: 190px;
- position: relative;
- left: 52px;
- top: 128px;
- font-size: 8pt;
- color: #6D6D6D;
-}
-
-div.releases div.official a
-{
- display: block;
-}
-
-div.whyprado
-{
- display: block;
- float: left;
-}
-
-div.whyprado ul.list
-{
- margin-top: 40px;
- margin-left: 40px;
-}
-
-div.whyprado ul.list li
-{
- display: block;
- margin: 5px;
- padding: 0px;
- font-size: 18px;
- background-repeat: no-repeat;
- background-position: bottom left;
- padding-left: 30px;
- list-style: none;
-}
-
-
-#footer
-{
- border-top: 1px solid #e9eeef;
- background-color: #fff;
- clear: both;
- color: #A7A7A7;
- font-size: 8pt;
- text-align: center;
- padding-top: 10px;
- padding-bottom: 30px;
- background-repeat: repeat-x;
- background-position: bottom;
-}
-
-#features
-{
- margin-left: 610px;
- padding: 10px;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #BEDD75;
- color: #344A1E;
- font-size: 9pt;
-}
-
-#features ul
-{
- margin: 10px;
- padding: 0px;
-}
-
-#features ul li
-{
- font-size: 8pt;
- padding: 0px;
- margin: 0px;
- margin-top: 8px;
-}
-
-#features h3
-{
- margin: 0px;
- padding: 0px;
- font-size: 10pt;
- color: #292E1D;
- text-align: center;
- border-bottom: 1px solid silver;
-}
-
-#news
-{
- float: left;
- width: 590px;
-}
-
-.newstitle
-{
- font-size: 12pt;
- font-weight: bold;
- color: #555;
- margin-top: 10px;
- margin-bottom: 0px;
- border-bottom: 1px solid silver;
-}
-
-.newscontentmore
-{
- margin-right: 10px;
- display: block;
- color: #50811A;
- text-align: right;
-}
-
-.newscontentmore:hover
-{
- color: red;
-}
-
-.newstime
-{
- margin: 0px;
- font-size:0.8em;
- color:#aaa;
- padding-left:10px;
- text-align: right;
-}
-
-.newscontent
-{
- margin-top: 5px;
-}
-
-#leftpanel
-{
- float: left;
- width: 550px;
-}
-
-#topics
-{
- border: 1px solid #804040;
- margin-left: 610px;
- padding-bottom: 10px;
-}
-
-#topicsheader
-{
- text-align:center;
- font-weight:bold;
- background-color:#804040;
- color:#FFFFBC;
- padding: 3px;
- margin-bottom:0px;
-}
-
-.topicitem
-{
- padding: 5px;
-}
-
-.topicitem a:hover
-{
- text-decoration: underline;
-}
-
-.topicitem p
-{
- margin: 0px;
- font-size:0.8em;
- color:#aaa;
- padding-left:10px;
- white-space:nowrap;
-}
-
-.reference
-{
-}
-
-.reference img
-{
- margin: 10px;
-}
-
-.reference h3
-{
-}
-
-
-.download
-{
- width: 100%;
- background-color: #aaa;
-}
-
-.download td
-{
- background-color: #FFFFFF;
- padding: 5px;
- font-size: 9pt;
-}
-
-.download td a
-{
- font-weight: bold;
-}
-
-.download td.type
-{
- font-family: "courier new", courier;
- text-align: right;
- vertical-align: top;
-}
-
-.download div.declaration
-{
- font-family: "courier new", courier;
-}
-
-
-.download th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- padding: 5px;
- text-align: left;
-}
-
-.download th.small
-{
- font-size: 1.0em;
-}
-
-.download tr.reference td {
- background-color: #FFEDED;
-}
-
-
-.doc-title
-{
- font-size: 14pt;
- font-weight: bold;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.doc-subtitle
-{
- font-size: 11pt;
- font-weight: bold;
- background-color: #EEE;
- padding: 5px;
- margin-top: 20px;
-}
-
-.doc-namespace
-{
- font-size: 8pt;
-}
-
-
-.doc-menu
-{
-}
-
-.doc-classes
-{
-}
-
-.doc-ancestors
-{
- font-size: 8pt;
-}
-
-.doc-properties
-{
- font-size: 9pt;
-}
-
-.doc-properties table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-properties td, .doc-properties th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-events
-{
- font-size: 9pt;
-}
-
-.doc-events table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-events td, .doc-events th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-methods
-{
- font-size: 9pt;
-}
-
-.doc-methods table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-methods td, .doc-methods th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-derived
-{
-}
-
-.doc-inherited
-{
-}
-
-.doc-native td
-{
- background-color: lightyellow;
-}
-
-.forum-topic
-{
- padding: 10px;
- border:1px solid silver;
- margin-bottom: 10px;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl
deleted file mode 100644
index 07cb76e5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl
+++ /dev/null
@@ -1,58 +0,0 @@
-{section name=methods loop=$methods}
-{if $show == 'summary'}
-method {$methods[methods].function_call}, {$methods[methods].sdesc}<br />
-{else}
- <hr />
- <a name="{$methods[methods].method_dest}"></a>
- <h3>{if $methods[methods].ifunction_call.constructor}constructor {elseif $methods[methods].ifunction_call.destructor}destructor {else}method {/if}{$methods[methods].function_name} <span class="smalllinenumber">[line {if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}]</span></h3>
- <div class="function">
- <table width="90%" border="0" cellspacing="0" cellpadding="1"><tr><td class="code_border">
- <table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td class="code">
- <code>{$methods[methods].function_return} {if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}(
-{if count($methods[methods].ifunction_call.params)}
-{section name=params loop=$methods[methods].ifunction_call.params}
-{if $smarty.section.params.iteration != 1}, {/if}
-{if $methods[methods].ifunction_call.params[params].default != ''}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].default != ''} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if})</code>
- </td></tr></table>
- </td></tr></table><br />
-
- {include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags}<br /><br />
-
-{if $methods[methods].descmethod}
- <p>Overridden in child classes as:<br />
- {section name=dm loop=$methods[methods].descmethod}
- <dl>
- <dt>{$methods[methods].descmethod[dm].link}</dt>
- <dd>{$methods[methods].descmethod[dm].sdesc}</dd>
- </dl>
- {/section}</p>
-{/if}
-{* original {if $methods[methods].descmethod != ""
- {$methods[methods].descmethod<br /><br />
- {/if *}
-{if $methods[methods].method_overrides}Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})<br /><br />{/if}
-{* original {if $methods[methods].method_overrides != ""
- {$methods[methods].method_overrides<br /><br />
- {/if *}
-
- {if count($methods[methods].params) > 0}
- <h4>Parameters:</h4>
- <div class="tags">
- <table border="0" cellspacing="0" cellpadding="0">
- {section name=params loop=$methods[methods].params}
- <tr>
- <td class="type">{$methods[methods].params[params].datatype}&nbsp;&nbsp;</td>
- <td><b>{$methods[methods].params[params].var}</b>&nbsp;&nbsp;</td>
- <td>{$methods[methods].params[params].data}</td>
- </tr>
- {/section}
- </table>
- </div><br />
- {/if}
- <div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl
deleted file mode 100644
index b48b6719..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-{section name=packages loop=$packages}
-<a href="{$packages[packages].link}">{$packages[packages].title}</a>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl
deleted file mode 100644
index 6dd8683d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl
+++ /dev/null
@@ -1,31 +0,0 @@
-{include file="header.tpl" eltype="Procedural file" class_name=$name hasel=true contents=$pagecontents}
-
-<br>
-<br>
-
-{if $classes}
-<div class="contents">
-{if $tutorial}
-<span class="maintutorial">Main Tutorial: {$tutorial}</span>
-{/if}
-<h2>Classes:</h2>
-{section name=classes loop=$classes}
-<dt>{$classes[classes].link}</dt>
- <dd>{$classes[classes].sdesc}</dd>
-{/section}
-</div><br /><br />
-{/if}
-
-<h2>Page Details:</h2>
-{include file="docblock.tpl" type="page"}
-<br /><br />
-{include file="include.tpl"}
-<br /><br />
-{include file="global.tpl"}
-<br /><br />
-{include file="define.tpl"}
-<br />
-{include file="function.tpl"}
-
-{include file="footer.tpl"}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl
deleted file mode 100644
index 753ad7cf..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{include file="header.tpl"}
-<a name="top"></a>
-<h1>Element index for package {$package}</h1>
-{include file="basicindex.tpl" indexname=elementindex_$package}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl
deleted file mode 100644
index c4cb83f9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<h1 align="center">{$name}</h1>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl
deleted file mode 100644
index 87f68ebb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<UL>
-{section name=entry loop=$entry}
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="{$entry[entry].paramname}">
-{if $entry[entry].isclass} <param name="ImageNumber" value="1">
-{/if}{if $entry[entry].outputfile} <param name="Local" value="{$entry[entry].outputfile}">
-{/if} </OBJECT>
- {if $entry[entry].tocsubentries}{$entry[entry].tocsubentries}{/if}
-{/section}
- {$tocsubentries}
-</UL>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl
deleted file mode 100644
index 5ab0bca2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{include file="header.tpl" title="Todo List"}
-<div align="center"><h1>Todo List</h1></div>
-{foreach from=$todos key=todopackage item=todo}
-<h2>{$todopackage}</h2>
-{section name=todo loop=$todo}
-<h3>{$todo[todo].link}</h3>
-<ul>
-{section name=t loop=$todo[todo].todos}
- <li>{$todo[todo].todos[t]}</li>
-{/section}
-</ul>
-{/section}
-{/foreach}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl
deleted file mode 100644
index 22c71c3b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-{include file="header.tpl" title=$title}
-{if $nav}
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
-<tr>
-<td width="10%" align="left" valign="bottom">{if $prev}<a href=
-"{$prev}">{/if}Prev{if $prev}</a>{/if}</td>
-<td width="80%" align="center" valign="bottom"></td>
-<td width="10%" align="right" valign="bottom">{if $next}<a href=
-"{$next}">{/if}Next{if $next}</a>{/if}</td>
-</tr>
-</table>
-{/if}
-{$contents}
-{if $nav}
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
-<tr>
-<td width="33%" align="left" valign="top">{if $prev}<a href="{$prev}">{/if}
-Prev{if $prev}</a>{/if}</td>
-<td width="34%" align="center" valign="top">{if $up}<a href=
-"{$up}">Up</a>{else}&nbsp;{/if}</td>
-<td width="33%" align="right" valign="top">{if $next}<a href=
-"{$next}">{/if}Next{if $next}</a>{/if}</td>
-</tr>
-
-<tr>
-<td width="33%" align="left" valign="top">{if $prevtitle}{$prevtitle}{/if}</td>
-<td width="34%" align="center" valign="top">{if $uptitle}{$uptitle}{/if}</td>
-<td width="33%" align="right" valign="top">{if $nexttitle}{$nexttitle}{/if}</td>
-</tr>
-</table>
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl
deleted file mode 100644
index 1db34438..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,29 +0,0 @@
-{if count($toc)}
-<h1 align="center">Table of Contents</h1>
-<ul>
-{section name=toc loop=$toc}
-{if $toc[toc].tagname == 'refsect1'}
-{assign var="context" value="refsect1"}
-{$toc[toc].link}<br />
-{/if}
-{if $toc[toc].tagname == 'refsect2'}
-{assign var="context" value="refsect2"}
-&nbsp;&nbsp;&nbsp;{$toc[toc].link}<br />
-{/if}
-{if $toc[toc].tagname == 'refsect3'}
-{assign var="context" value="refsect3"}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$toc[toc].link}<br />
-{/if}
-{if $toc[toc].tagname == 'table'}
-{if $context == 'refsect2'}&nbsp;&nbsp;&nbsp;{/if}
-{if $context == 'refsect3'}&nbsp;&nbsp;&nbsp;{/if}
-Table: {$toc[toc].link}
-{/if}
-{if $toc[toc].tagname == 'example'}
-{if $context == 'refsect2'}&nbsp;&nbsp;&nbsp;{/if}
-{if $context == 'refsect3'}&nbsp;&nbsp;&nbsp;{/if}
-Table: {$toc[toc].link}
-{/if}
-{/section}
-</ul>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl
deleted file mode 100644
index faf7bcef..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<ul>
- <li type="square"><a href="{$main.link}">{$main.title|strip_tags}</a>
-{if $kids}{$kids}</li>{/if}
-</ul>
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl
deleted file mode 100644
index c76929fe..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl
+++ /dev/null
@@ -1,28 +0,0 @@
-{section name=vars loop=$vars}
-{if $show == 'summary'}
- var {$vars[vars].var_name}, {$vars[vars].sdesc}<br>
-{else}
- <a name="{$vars[vars].var_dest}"></a>
- <p></p>
- <h4>{$vars[vars].var_name} = <span class="value">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</span></h4>
- <p>[line {if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}
-
- <br />
- <div class="tags">
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><b>Type:</b>&nbsp;&nbsp;</td>
- <td>{$vars[vars].var_type}</td>
- </tr>
- {if $vars[vars].var_overrides != ""}
- <tr>
- <td><b>Overrides:</b>&nbsp;&nbsp;</td>
- <td>{$vars[vars].var_overrides}</td>
- </tr>
- {/if}
- </table>
- </div><br /><br />
- <div class="top">[ <a href="#top">Top</a> ]</div><br />
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc
deleted file mode 100644
index 09f5af73..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc
+++ /dev/null
@@ -1,1779 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-/**
- * HTML output converter for Smarty Template.
- * This Converter takes output from the {@link Parser} and converts it to HTML-ready output for use with {@link Smarty}.
- *
- * @package Converters
- * @subpackage HTMLSmarty
- * @see parserDocBlock, parserInclude, parserPage, parserClass, parserDefine, parserFunction, parserMethod, parserVar
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Revision: 1.1 $
- */
-/**
- * HTML output converter.
- * This Converter takes output from the {@link Parser} and converts it to HTML-ready output for use with {@link Smarty}.
- *
- * @package Converters
- * @subpackage HTMLSmarty
- * @see parserDocBlock, parserInclude, parserPage, parserClass, parserDefine, parserFunction, parserMethod, parserVar
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Revision: 1.1 $
- */
-class HTMLSmartyConverter extends Converter
-{
- /**
- * Smarty Converter wants elements sorted by type as well as alphabetically
- * @see Converter::$sort_page_contents_by_type
- * @var boolean
- */
- var $sort_page_contents_by_type = true;
- /** @var string */
- var $outputformat = 'HTML';
- /** @var string */
- var $name = 'Smarty';
- /**
- * indexes of elements by package that need to be generated
- * @var array
- */
- var $leftindex = array('classes' => true, 'pages' => true, 'functions' => true, 'defines' => false, 'globals' => false);
-
- /**
- * output directory for the current procedural page being processed
- * @var string
- */
- var $page_dir;
-
- /**
- * target directory passed on the command-line.
- * {@link $targetDir} is malleable, always adding package/ and package/subpackage/ subdirectories onto it.
- * @var string
- */
- var $base_dir;
-
- /**
- * output directory for the current class being processed
- * @var string
- */
- var $class_dir;
-
- /**
- * array of converted package page names.
- * Used to link to the package page in the left index
- * @var array Format: array(package => 1)
- */
- var $package_pages = array();
-
- /**
- * controls formatting of parser informative output
- *
- * Converter prints:
- * "Converting /path/to/file.php... Procedural Page Elements... Classes..."
- * Since HTMLdefaultConverter outputs files while converting, it needs to send a \n to start a new line. However, if there
- * is more than one class, output is messy, with multiple \n's just between class file output. This variable prevents that
- * and is purely cosmetic
- * @var boolean
- */
- var $juststarted = false;
-
- /**
- * contains all of the template procedural page element loop data needed for the current template
- * @var array
- */
- var $current;
-
- /**
- * contains all of the template class element loop data needed for the current template
- * @var array
- */
- var $currentclass;
- var $wrote = false;
- var $ric_set = array();
-
- /**
- * sets {@link $base_dir} to $targetDir
- * @see Converter()
- */
-
- /**#@+
- * @access private
- */
- var $_classleft_cache = false;
- var $_classcontents_cache = false;
- var $_pagecontents_cache = false;
- var $_pageleft_cache = false;
- var $_done_package_index = false;
- var $_ric_done = false;
- var $_wrote_tdir = false;
- var $ric_contents = array();
- /**#@-*/
-
- function HTMLSmartyConverter(&$allp, &$packp, &$classes, &$procpages, $po, $pp, $qm, $targetDir, $templateDir, $title)
- {
- Converter::Converter($allp, $packp, $classes, $procpages,$po, $pp, $qm, $targetDir, $templateDir, $title);
- $this->base_dir = $targetDir;
- }
-
- function writeSource($path, $value)
- {
- $templ = &$this->newSmarty();
- $pathinfo = $this->proceduralpages->getPathInfo($path, $this);
- $templ->assign('source',$value);
- $templ->assign('package',$pathinfo['package']);
- $templ->assign('subpackage',$pathinfo['subpackage']);
- $templ->assign('name',$pathinfo['name']);
- $templ->assign('source_loc',$pathinfo['source_loc']);
- $templ->assign('docs',$pathinfo['docs']);
- $templ->assign("subdir",'../');
- $templ->register_outputfilter('HTMLSmarty_outputfilter');
- $this->setTargetDir($this->getFileSourcePath($this->base_dir));
- phpDocumentor_out("\n");
- $this->setSourcePaths($path);
- $this->writefile($this->getFileSourceName($path).'.html',$templ->fetch('filesource.tpl'));
- }
-
- function writeExample($title, $path, $source)
- {
- $templ = &$this->newSmarty();
- $templ->assign('source',$source);
- if (empty($title))
- {
- $title = 'example';
- addWarning(PDERROR_EMPTY_EXAMPLE_TITLE, $path, $title);
- }
- $templ->assign('title',$title);
- $templ->assign('file',$path);
- $templ->assign("subdir",'../');
- $templ->register_outputfilter('HTMLSmarty_outputfilter');
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . '__examplesource');
- phpDocumentor_out("\n");
- $this->writefile('exsource_'.$path.'.html',$templ->fetch('examplesource.tpl'));
- }
-
- function getExampleLink($path, $title)
- {
- return $this->returnLink('{$subdir}__examplesource' . PATH_DELIMITER . 'exsource_'.$path.'.html',$title);
- }
-
- function getSourceLink($path)
- {
- return $this->returnLink($this->getFileSourcePath('{$subdir}') .
- PATH_DELIMITER . $this->getFileSourceName($path).'.html','Source Code for this file');
- }
-
- /**
- * Return a line of highlighted source code with formatted line number
- *
- * If the $path is a full path, then an anchor to the line number will be
- * added as well
- * @param integer line number
- * @param string highlighted source code line
- * @param false|string full path to @filesource file this line is a part of,
- * if this is a single line from a complete file.
- * @return string formatted source code line with line number
- */
- function sourceLine($linenumber, $line, $path = false)
- {
- $extra = '';
- if (strlen(str_replace("\n", '', $line)) == 0) {
- $extra = '&nbsp;';
- }
- if ($path)
- {
- return '<li>' . $this->getSourceAnchor($path, $linenumber) .
- str_replace("\n",'',$line) . $extra .
- "</li>\n";
- } else
- {
- return '<li>' . str_replace("\n",'',$line) . "$extra</li>\n";
- }
- }
-
- /**
- * Used to convert the <<code>> tag in a docblock
- * @param string
- * @param boolean
- * @return string
- */
- function ProgramExample($example, $tutorial = false, $inlinesourceparse = null/*false*/,
- $class = null/*false*/, $linenum = null/*false*/, $filesourcepath = null/*false*/)
- {
- $trans = $this->template_options['desctranslate'];
- $this->template_options['desctranslate'] = array();
- $example = '<ol>' . parent::ProgramExample($example, $tutorial, $inlinesourceparse, $class, $linenum, $filesourcepath)
- .'</ol>';
- $this->template_options['desctranslate'] = $trans;
- if (!isset($this->template_options['desctranslate'])) return $example;
- if (!isset($this->template_options['desctranslate']['code'])) return $example;
- $example = $this->template_options['desctranslate']['code'] . $example;
- if (!isset($this->template_options['desctranslate']['/code'])) return $example;
- return $example . $this->template_options['desctranslate']['/code'];
- }
-
- /**
- * @param string
- */
- function TutorialExample($example)
- {
- $trans = $this->template_options['desctranslate'];
- $this->template_options['desctranslate'] = array();
- $example = '<ol>' . parent::TutorialExample($example)
- .'</ol>';
- $this->template_options['desctranslate'] = $trans;
- if (!isset($this->template_options['desctranslate'])) return $example;
- if (!isset($this->template_options['desctranslate']['code'])) return $example;
- $example = $this->template_options['desctranslate']['code'] . $example;
- if (!isset($this->template_options['desctranslate']['/code'])) return $example;
- return $example . $this->template_options['desctranslate']['/code'];
- }
-
- /**
- * Retrieve a Converter-specific anchor to a segment of a source code file
- * parsed via a {@tutorial tags.filesource.pkg} tag.
- * @param string full path to source file
- * @param string name of anchor
- * @param string link text, if this is a link
- * @param boolean returns either a link or a destination based on this
- * parameter
- * @return string link to an anchor, or the anchor
- */
- function getSourceAnchor($sourcefile,$anchor,$text = '',$link = false)
- {
- if ($link)
- return $this->returnLink($this->getFileSourcePath('{$subdir}') .
- PATH_DELIMITER . $this->getFileSourceName($sourcefile).'.html#a'.$anchor, $text);
- else
- return '<a name="a'.$anchor.'"></a>';
- }
-
- function getCurrentPageLink()
- {
- return $this->curname . '.html';
- }
-
- function unmangle($sourcecode)
- {
- $sourcecode = str_replace('&nbsp;',' ',$sourcecode);
- $sourcecode = str_replace('&amp;','&',$sourcecode);
- $sourcecode = str_replace('<br />',"<br>",$sourcecode);
- $sourcecode = str_replace('<code>','<pre>',$sourcecode);
- $sourcecode = str_replace('</code>','</pre>',$sourcecode);
- $sourcecode = str_replace('&lt;','<',$sourcecode);
- $sourcecode = str_replace('&gt;','>',$sourcecode);
- return $sourcecode;
- }
-
- /**
- * Uses htmlspecialchars() on the input
- */
- function postProcess($text)
- {
- return htmlspecialchars($text);
- }
-
- /**
- * Use the template tutorial_toc.tpl to generate a table of contents for HTML
- * @return string table of contents formatted for use in the current output format
- * @param array format: array(array('tagname' => section, 'link' => returnsee link, 'id' => anchor name, 'title' => from title tag),...)
- */
- function formatTutorialTOC($toc)
- {
- $template = &$this->newSmarty();
- $template->assign('toc',$toc);
- return $template->fetch('tutorial_toc.tpl');
- }
-
- function &SmartyInit(&$templ)
- {
- $this->makeLeft();
- $templ->assign("ric",$this->ric_set);
- $templ->assign("packageindex",$this->package_index);
- $templ->assign('hastodos',count($this->todoList));
- $templ->assign('todolink','todolist.html');
- $templ->assign("subdir",'');
- return $templ;
- }
-
- /**
- * Writes out the template file of {@link $class_data} and unsets the template to save memory
- * @see registerCurrentClass()
- * @see parent::endClass()
- */
- function endClass()
- {
- $a = '../';
- if (!empty($this->subpackage)) $a .= '../';
- if ($this->juststarted)
- {
- $this->juststarted = false;
- phpDocumentor_out("\n");
- flush();
- }
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir);
- $this->class_data->assign("compiledclassindex",$this->getClassLeft());
- $this->class_data->assign("compiledfileindex",$this->getPageLeft());
- $this->class_data->assign("tutorials",$this->getTutorialList());
- $this->class_data->assign("contents",$this->getClassContents());
- $this->class_data->assign("packageindex",$this->package_index);
- $this->class_data->assign("package",$this->package);
- $this->class_data->assign("subdir",$a);
- $this->class_data->register_outputfilter('HTMLSmarty_outputfilter');
- $this->writefile($this->class . '.html',$this->class_data->fetch('class.tpl'));
- unset($this->class_data);
- }
-
- function getTutorialList()
- {
- static $cache = false;
- if ($cache)
- {
- if (isset($cache[$this->package])) return $cache[$this->package];
- }
- $package = $this->package;
- if (!isset($this->tutorials[$package])) return false;
- foreach($this->tutorials[$package] as $subpackage => $blah)
- {
- $subpackages[] = $subpackage;
- }
- $tutes = array();
- foreach($subpackages as $subpackage)
- {
- if (isset($this->tutorial_tree) && is_array($this->tutorial_tree))
- foreach($this->tutorial_tree as $root => $tr)
- {
- if ($tr['tutorial']->package == $package && $tr['tutorial']->subpackage == $subpackage)
- $tutes[$tr['tutorial']->tutorial_type][] = $this->getTutorialTree($tr['tutorial']);
- }
- }
- $cache[$this->package] = $tutes;
- return $tutes;
- }
-
- function getTutorialTree($tutorial,$k = false)
- {
- $ret = '';
- if (is_object($tutorial)) $tree = parent::getTutorialTree($tutorial); else $tree = $tutorial;
- if (!$tree)
- {
- $template = &$this->newSmarty();
- $template->assign('subtree',false);
- $template->assign('name',str_replace('.','',$tutorial->name));
- $template->assign('parent',false);
- $template->assign('haskids',false);
- $template->assign('kids','');
- $link = new tutorialLink;
- $t = $tutorial;
- $link->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($this));
- $main = array('link' => $this->getId($link), 'title' => $link->title);
- $template->assign('main',$main);
- return $template->fetch('tutorial_tree.tpl');
- }
- if (isset($tree['kids']))
- {
- foreach($tree['kids'] as $subtree)
- {
- $ret .= $this->getTutorialTree($subtree, true);
- }
- }
- $template = &$this->newSmarty();
- $template->assign('subtree',$k);
- $template->assign('name',str_replace('.','',$tree['tutorial']->name));
- $template->assign('parent',($k ? str_replace('.','',$tree['tutorial']->parent->name) : false));
- $template->assign('haskids',strlen($ret));
- $template->assign('kids',$ret);
- $link = new tutorialLink;
- $t = $tree['tutorial'];
- $link->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($this));
- $main = array('link' => $this->getId($link), 'title' => $link->title);
- $template->assign('main',$main);
- return $template->fetch('tutorial_tree.tpl');
- }
-
- function getClassLeft()
- {
- if ($this->_classleft_cache)
- {
- if (isset($this->_classleft_cache[$this->package][$this->subpackage])) return $this->_classleft_cache[$this->package][$this->subpackage];
- }
- $arr = array();
- if (isset($this->left['#class'][$this->package]))
- foreach($this->left['#class'][$this->package] as $subpackage => $pages)
- {
- $arr[$subpackage] = $pages;
- }
- $templ = &$this->newSmarty();
- $templ->assign('classleftindex',$arr);
- $arr = $templ->fetch('classleft.tpl');
- $this->_classleft_cache[$this->package][$this->subpackage] = $arr;
- return $arr;
- }
-
- function getClassContents()
- {
- if ($this->_classcontents_cache)
- {
- if (isset($this->_classcontents_cache[$this->package][$this->subpackage][$this->class])) return $this->_classcontents_cache[$this->package][$this->subpackage][$this->class];
- }
- $arr = array();
- foreach($this->class_contents[$this->package][$this->subpackage][$this->class] as $i => $link)
- {
- if (is_object($link))
- $arr[$link->type][] = $this->returnSee($link,$link->name);
- }
- $this->_classcontents_cache[$this->package][$this->subpackage][$this->class] = $arr;
- return $arr;
- }
-
- function getPageContents()
- {
- if (!isset($this->path)) $this->path = '#####';
- if ($this->_pagecontents_cache)
- {
- if (isset($this->_pagecontents_cache[$this->package][$this->subpackage][$this->path])) return $this->_pagecontents_cache[$this->package][$this->subpackage][$this->path];
- }
- $arr = array();
- foreach($this->page_contents[$this->curpage->package][$this->curpage->subpackage] as $i => $link)
- {
- if (is_object($link))
- $arr[$link->type][$i] = $this->returnSee($link);
- }
- $this->_pagecontents_cache[$this->package][$this->subpackage][$this->path] = $arr;
- return $arr;
- }
-
- function getPageLeft()
- {
- if ($this->_pageleft_cache)
- {
- if (isset($this->_pageleft_cache[$this->package][$this->subpackage])) return $this->_pageleft_cache[$this->package][$this->subpackage];
- }
- $arr = array();
- if (isset($this->left[$this->package]))
- foreach($this->left[$this->package] as $subpackage => $pages)
- {
- $arr[$subpackage] = $pages;
- }
- $templ = &$this->newSmarty();
- $templ->assign('fileleftindex',$arr);
- $arr = $templ->fetch('fileleft.tpl');
- $this->_pageleft_cache[$this->package][$this->subpackage] = $arr;
- return $arr;
- }
-
- /**
- * Writes out the template file of {@link $page_data} and unsets the template to save memory
- * @see registerCurrent()
- * @see parent::endPage()
- */
- function endPage()
- {
- $this->package = $this->curpage->package;
- $this->subpackage = $this->curpage->subpackage;
- $a = '../';
- if (!empty($this->subpackage)) $a .= '../';
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->page_data->assign("contents",$this->getPageContents());
- $this->page_data->assign("compiledfileindex",$this->getPageLeft());
- $this->page_data->assign("compiledclassindex",$this->getClassLeft());
- $this->page_data->assign("tutorials",$this->getTutorialList());
- $this->page_data->assign("packageindex",$this->package_index);
- $this->page_data->assign("package",$this->package);
- $this->page_data->assign("subdir",$a);
- $this->page_data->register_outputfilter('HTMLSmarty_outputfilter');
- $this->writefile($this->page . '.html',$this->page_data->fetch('page.tpl'));
- unset($this->page_data);
- }
-
- /**
- * @param string
- * @param string
- * @return string &lt;a href="'.$link.'">'.$text.'</a&gt;
- */
- function returnLink($link,$text)
- {
- return '<a href="'.$link.'">'.$text.'</a>';
- }
-
- function makeLeft()
- {
- if ($this->_done_package_index) return;
- $this->_done_package_index = true;
- if (!isset($this->package_index))
- foreach($this->all_packages as $key => $val)
- {
- if (isset($this->pkg_elements[$key]))
- {
- if (!isset($start)) $start = $key;
- $this->package_index[] = array('link' => "li_$key.html", 'title' => $key);
- }
- }
- foreach($this->page_elements as $package => $o1)
- {
- foreach($o1 as $subpackage => $links)
- {
- for($i=0;$i<count($links);$i++)
- {
- $this->left[$package][$subpackage][] =
- array("link" => $this->getId($links[$i]), "title" => $links[$i]->name);
- }
- }
- }
- foreach($this->class_elements as $package => $o1)
- {
- foreach($o1 as $subpackage => $links)
- {
- for($i=0;$i<count($links);$i++)
- {
- $this->left['#class'][$package][$subpackage][] =
- array("link" => $this->getId($links[$i]), "title" => $links[$i]->name);
- }
- }
- }
- }
-
- /**
- * HTMLdefaultConverter chooses to format both package indexes and the complete index here
- *
- * This function formats output for the elementindex.html and pkgelementindex.html template files. It then
- * writes them to the target directory
- * @see generateElementIndex(), generatePkgElementIndex()
- */
- function formatPkgIndex()
- {
- list($package_indexes,$packages,$mletters) = $this->generatePkgElementIndexes();
- for($i=0;$i<count($package_indexes);$i++)
- {
- $template = &$this->newSmarty();
- $this->package = $package_indexes[$i]['package'];
- $this->subpackage = '';
- $template->assign("compiledclassindex",$this->getClassLeft());
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("tutorials",$this->getTutorialList());
- $template->assign("index",$package_indexes[$i]['pindex']);
- $template->assign("package",$package_indexes[$i]['package']);
- $template->assign("letters",$mletters[$package_indexes[$i]['package']]);
- $template->assign("title","Package ".$package_indexes[$i]['package']." Element Index");
- $template->assign("date",date("r",time()));
- $template->register_outputfilter('HTMLSmarty_outputfilter');
- $this->setTargetDir($this->base_dir);
- $this->writefile('elementindex_'.$package_indexes[$i]['package'].'.html',$template->fetch('pkgelementindex.tpl'));
- }
- phpDocumentor_out("\n");
- flush();
- }
-
- /**
- * HTMLdefaultConverter uses this function to format template index.html and packages.html
- *
- * This function generates the package list from {@link $all_packages}, eliminating any
- * packages that don't have any entries in their package index (no files at all, due to @ignore
- * or other factors). Then it uses the default package name as the first package index to display.
- * It sets the right pane to be either a blank file with instructions on making package-level docs,
- * or the package-level docs for the default package.
- * @global string Used to set the starting package to display
- */
- function formatIndex()
- {
- global $phpDocumentor_DefaultPackageName;
- if (!isset($this->package_index))
- {
- debug("\nERROR: Nothing parsed, check the command-line");
- die();
- }
- list($elindex,$mletters) = $this->generateElementIndex();
- $template = &$this->newSmarty();
- $template->assign("index",$elindex);
- $template->assign("letters",$mletters);
- $template->assign("title","Element Index");
- $template->assign("date",date("r",time()));
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- $template->register_outputfilter('HTMLSmarty_outputfilter');
- $this->writefile('elementindex.html',$template->fetch('elementindex.tpl'));
- usort($this->package_index,"HTMLSmarty_pindexcmp");
- $index = &$this->newSmarty();
- foreach($this->all_packages as $key => $val)
- {
- if (isset($this->pkg_elements[$key]))
- {
- if (!isset($start)) $start = $key;
- if (!isset($this->package_pages[$key])) $this->writeNewPPage($key);
- }
- }
- // Created index.html
- $start = $phpDocumentor_DefaultPackageName;
- if (!isset($this->pkg_elements[$key]))
- {
- // if there are no elements, use a random package as the default
- $start = array_shift(array_keys($this->pkg_elements));
- }
- $this->package = $start;
- $this->subpackage = '';
- $index->assign("compiledclassindex",$this->getClassLeft());
- $index->assign("compiledfileindex",$this->getPageLeft());
- $index->assign('hastodos',count($this->todoList));
- $index->assign('todolink','todolist.html');
- $index->assign("tutorials",$this->getTutorialList());
- $index->assign("date",date("r",time()));
- $index->assign("package",$this->package);
- $index->assign("title",$this->title);
- $index->assign("start","li_$start.html");
- if (isset($this->package_pages[$start]))
- {
- $index->assign("contents",$this->package_pages[$start]);
- }
- $index->register_outputfilter('HTMLSmarty_outputfilter');
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- $this->writefile("index.html",$index->fetch('index.tpl'));
- unset($index);
-
- }
-
- function writeNewPPage($key)
- {
- $template = &$this->newSmarty();
- $this->package = $key;
- $this->subpackage = '';
- $template->assign("compiledclassindex",$this->getClassLeft());
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("tutorials",$this->getTutorialList());
- $template->assign("date",date("r",time()));
- $template->assign("title",$this->title);
- $template->assign("package",$key);
- $template->register_outputfilter('HTMLSmarty_outputfilter');
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- $this->writefile("li_$key.html",$template->fetch('index.tpl'));
- unset($template);
- }
-
- /**
- * Generate indexes for li_package.html and classtree output files
- *
- * This function generates the li_package.html files from the template file left.html. It does this by
- * iterating through each of the $page_elements, $class_elements and $function_elements arrays to retrieve
- * the pre-sorted {@link abstractLink} descendants needed for index generation. Conversion of these links to
- * text is done by {@link returnSee()}.
- *
- * Then it uses {@link generateFormattedClassTrees()} to create class trees from the template file classtrees.html. Output
- * filename is classtrees_packagename.html. This function also unsets {@link $elements} and {@link $pkg_elements} to free
- * up the considerable memory these two class vars use
- * @see $page_elements, $class_elements, $function_elements
- */
- function formatLeftIndex()
- {
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- if (!isset($this->left))
- {
- debug("Nothing parsed, check the command-line");
- die();
- }
- foreach($this->all_packages as $package => $rest)
- {
- if (!isset($this->pkg_elements[$package])) continue;
- // Create class tree page
- $template = &$this->newSmarty();
- $template->assign("compiledclassindex",$this->getClassLeft());
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("classtrees",$this->generateFormattedClassTrees($package));
- $template->assign("package",$package);
- $template->assign("date",date("r",time()));
- $template->assign("title","Class Trees for Package $package");
- $template->register_outputfilter('HTMLSmarty_outputfilter');
- $this->writefile("classtrees_$package.html",$template->fetch('classtrees.tpl'));
- phpDocumentor_out("\n");
- flush();
- }
- $this->writeRIC();
- // free up considerable memory
- unset($this->elements);
- unset($this->pkg_elements);
- }
-
-
- /**
- * This function takes an {@link abstractLink} descendant and returns an html link
- *
- * @param abstractLink a descendant of abstractlink should be passed, and never text
- * @param string text to display in the link
- * @param boolean this parameter is not used, and is deprecated
- * @param boolean determines whether the returned text is enclosed in an &lt;a> tag
- */
- function returnSee(&$element, $eltext = false, $with_a = true)
- {
- if (!is_object($element) || !$element) return false;
- if (!$with_a) return $this->getId($element, false);
- if (!$eltext)
- {
- $eltext = '';
- switch($element->type)
- {
- case 'tutorial' :
- $eltext = strip_tags($element->title);
- break;
- case 'method' :
- case 'var' :
- case 'const' :
- $eltext .= $element->class.'::';
- case 'page' :
- case 'define' :
- case 'class' :
- case 'function' :
- case 'global' :
- default :
- $eltext .= $element->name;
- if ($element->type == 'function' || $element->type == 'method') $eltext .= '()';
- break;
- }
- }
- return '<a href="'.$this->getId($element).'">'.$eltext.'</a>';
- }
-
- function getId($element, $fullpath = true)
- {
- if (phpDocumentor_get_class($element) == 'parserdata')
- {
- $element = $this->addLink($element->parent);
- $elp = $element->parent;
- } elseif (is_a($element, 'parserbase'))
- {
- $elp = $element;
- $element = $this->addLink($element);
- }
- $c = '';
- if (!empty($element->subpackage))
- {
- $c = '/'.$element->subpackage;
- }
- $b = '{$subdir}';
- switch ($element->type)
- {
- case 'page' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->fileAlias.'.html';
- return 'top';
- break;
- case 'define' :
- case 'global' :
- case 'function' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->fileAlias.'.html#'.$element->type.$element->name;
- return $element->type.$element->name;
- break;
- case 'class' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->name.'.html';
- return 'top';
- break;
- case 'method' :
- case 'var' :
- case 'const' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->class.'.html#'.$element->type.$element->name;
- return $element->type.$element->name;
- break;
- case 'tutorial' :
- $d = '';
- if ($element->section)
- {
- $d = '#'.$element->section;
- }
- return $b.$element->package.$c.'/tutorial_'.$element->name.'.html'.$d;
- }
- }
-
- /**
- * Convert README/INSTALL/CHANGELOG file contents to output format
- * @param README|INSTALL|CHANGELOG
- * @param string contents of the file
- */
- function Convert_RIC($name, $contents)
- {
- $this->ric_contents[$name] = $contents;
- $this->ric_set[] = array('file' => 'ric_'.$name . '.html','name' => $name);
- }
-
- function writeRIC()
- {
- if ($this->_ric_done) return;
- $this->_ric_done = true;
- foreach($this->ric_contents as $name => $contents)
- {
- $template = &$this->newSmarty();
- $template->assign('contents',$contents);
- $template->assign('name',$name);
- $template->assign('title',$name);
- $this->setTargetDir($this->base_dir);
- $this->writefile('ric_'.$name . '.html',$template->fetch('ric.tpl'));
- }
- }
-
- function ConvertTodoList()
- {
- $todolist = array();
- foreach($this->todoList as $package => $alltodos)
- {
- foreach($alltodos as $todos)
- {
- $converted = array();
- $converted['link'] = $this->returnSee($todos[0]);
- if (!is_array($todos[1]))
- {
- $converted['todos'][] = $todos[1]->Convert($this);
- } else
- {
- foreach($todos[1] as $todo)
- {
- $converted['todos'][] = $todo->Convert($this);
- }
- }
- $todolist[$package][] = $converted;
- }
- }
- $templ = &$this->newSmarty();
- $templ->assign('todos',$todolist);
- $templ->register_outputfilter('HTMLSmarty_outputfilter');
- $this->setTargetDir($this->base_dir);
- $this->writefile('todolist.html',$templ->fetch('todolist.tpl'));
- }
-
- /**
- * Create errors.html template file output
- *
- * This method takes all parsing errors and warnings and spits them out ordered by file and line number.
- * @global ErrorTracker We'll be using it's output facility
- */
- function ConvertErrorLog()
- {
- global $phpDocumentor_errors;
- $allfiles = array();
- $files = array();
- $warnings = $phpDocumentor_errors->returnWarnings();
- $errors = $phpDocumentor_errors->returnErrors();
- $template = &$this->newSmarty();
- foreach($warnings as $warning)
- {
- $file = '##none';
- $linenum = 'Warning';
- if ($warning->file)
- {
- $file = $warning->file;
- $allfiles[$file] = 1;
- $linenum .= ' on line '.$warning->linenum;
- }
- $files[$file]['warnings'][] = array('name' => $linenum, 'listing' => $warning->data);
- }
- foreach($errors as $error)
- {
- $file = '##none';
- $linenum = 'Error';
- if ($error->file)
- {
- $file = $error->file;
- $allfiles[$file] = 1;
- $linenum .= ' on line '.$error->linenum;
- }
- $files[$file]['errors'][] = array('name' => $linenum, 'listing' => $error->data);
- }
- $i=1;
- $af = array();
- foreach($allfiles as $file => $num)
- {
- $af[$i++] = $file;
- }
- $allfiles = $af;
- usort($allfiles,'strnatcasecmp');
- $allfiles[0] = "Post-parsing";
- foreach($allfiles as $i => $a)
- {
- $allfiles[$i] = array('file' => $a);
- }
- $out = array();
- foreach($files as $file => $data)
- {
- if ($file == '##none') $file = 'Post-parsing';
- $out[$file] = $data;
- }
- $template->assign("files",$allfiles);
- $template->assign("all",$out);
- $template->assign("title","phpDocumentor Parser Errors and Warnings");
- $template->register_outputfilter('HTMLSmarty_outputfilter');
- $this->setTargetDir($this->base_dir);
- $this->writefile("errors.html",$template->fetch('errors.tpl'));
- unset($template);
- phpDocumentor_out("\n\nTo view errors and warnings, look at ".$this->base_dir. PATH_DELIMITER . "errors.html\n");
- flush();
- }
-
- function getCData($value)
- {
- return '<pre>'.htmlentities($value).'</pre>';
- }
-
- function getTutorialId($package,$subpackage,$tutorial,$id)
- {
- return $id;
- }
-
- /**
- * Converts package page and sets its package as used in {@link $package_pages}
- * @param parserPackagePage
- */
- function convertPackagepage(&$element)
- {
- phpDocumentor_out("\n");
- flush();
- $template = &$this->newSmarty();
- $this->package = $element->package;
- $this->subpackage = '';
- $template->assign("compiledclassindex",$this->getClassLeft());
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("tutorials",$this->getTutorialList());
- $template->assign("date",date("r",time()));
- $template->assign("title",$this->title);
- $template->assign("package",$element->package);
- $x = $element->Convert($this);
- $x = substr($x,strpos($x,'<body'));
- $template->assign("contents",trim(substr($x,strpos($x,'>') + 1)));
- $this->package_pages[$element->package] = trim(substr($x,strpos($x,'>') + 1));
- $template->register_outputfilter('HTMLSmarty_outputfilter');
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- $this->writefile("li_".$element->package.".html",$template->fetch('index.tpl'));
- unset($template);
- }
-
- /**
- * @param parserTutorial
- */
- function convertTutorial(&$element)
- {
- phpDocumentor_out("\n");
- flush();
- $template = &parent::convertTutorial($element);
- $this->package = $element->package;
- $this->subpackage = $element->subpackage;
- $template->assign("compiledclassindex",$this->getClassLeft());
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("tutorials",$this->getTutorialList());
- $template->assign("title",strip_tags($element->getTitle($this)));
- $contents = $element->Convert($this);
- if ($element->name == $this->package . '.pkg')
- {
- $this->package_pages[$element->package] = $contents;
- }
- $a = '../';
- if (!empty($element->subpackage)) $a .= $a;
- $template->assign("subdir",$a);
- $a = '';
- if ($element->subpackage) $a = PATH_DELIMITER . $element->subpackage;
- $template->register_outputfilter('HTMLSmarty_outputfilter');
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package . $a);
- $this->writeFile('tutorial_'.$element->name.'.html',$template->fetch('tutorial.tpl'));
- if ($element->name == $element->package . '.pkg')
- {
- phpDocumentor_out("\n");
- flush();
- // package-level docs
- $this->setTargetDir($this->base_dir);
- $template->assign("subdir",'');
- $this->writeFile('li_'.$element->package.'.html',$template->fetch('tutorial.tpl'));
- }
- unset($template);
- }
-
- /**
- * Converts class for template output
- * @see prepareDocBlock(), generateChildClassList(), generateFormattedClassTree(), getFormattedConflicts()
- * @see getFormattedInheritedMethods(), getFormattedInheritedVars()
- * @param parserClass
- */
- function convertClass(&$element)
- {
- parent::convertClass($element);
- $this->class_dir = $element->docblock->package;
- if (!empty($element->docblock->subpackage)) $this->class_dir .= PATH_DELIMITER . $element->docblock->subpackage;
- $a = '../classtrees_';
- if ($element->docblock->subpackage != '') $a = "../$a";
-
- $this->class_data->assign('subdir',$a);
- $this->class_data->assign("title","Docs For Class " . $element->getName());
- $this->class_data->assign("page",$element->getName() . '.html');
- }
-
- /**
- * Converts class variables for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertVar(&$element)
- {
- parent::convertVar($element, array('var_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts class variables for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertConst(&$element)
- {
- parent::convertConst($element, array('const_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts class methods for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertMethod(&$element)
- {
- parent::convertMethod($element, array('method_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts function for template output
- * @see prepareDocBlock(), parserFunction::getFunctionCall(), getFormattedConflicts()
- * @param parserFunction
- */
- function convertFunction(&$element)
- {
- $funcloc = $this->getId($this->addLink($element));
- parent::convertFunction($element,array('function_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts include elements for template output
- * @see prepareDocBlock()
- * @param parserInclude
- */
- function convertInclude(&$element)
- {
- parent::convertInclude($element, array('include_file' => '_'.strtr($element->getValue(),array('"' => '', "'" => '','.' => '_'))));
- }
-
- /**
- * Converts defines for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertDefine(&$element)
- {
- parent::convertDefine($element, array('define_link' => $this->getId($element,false)));
- }
-
- /**
- * Converts global variables for template output
- * @param parserGlobal
- * @see prepareDocBlock(), getFormattedConflicts()
- */
- function convertGlobal(&$element)
- {
- parent::convertGlobal($element, array('global_link' => $this->getId($element,false)));
- }
-
- /**
- * converts procedural pages for template output
- * @see prepareDocBlock(), getClassesOnPage()
- * @param parserData
- */
- function convertPage(&$element)
- {
- parent::convertPage($element);
- $this->juststarted = true;
- $this->page_dir = $element->parent->package;
- if (!empty($element->parent->subpackage)) $this->page_dir .= PATH_DELIMITER . $element->parent->subpackage;
- // registering stuff on the template
- $a = '../';
- if (!empty($element->docblock->subpackage)) $a = $a . $a;
- $this->page_data->assign('subdir',$a);
- $this->page_data->assign("page",$this->getPageName($element) . '.html');
- $this->page_data->assign("title","Docs for page ".$element->parent->getFile());
- }
-
- function getPageName(&$element)
- {
- if (phpDocumentor_get_class($element) == 'parserpage') return '_'.$element->getName();
- return '_'.$element->parent->getName();
- }
-
- /**
- * returns an array containing the class inheritance tree from the root object to the class
- *
- * @param parserClass class variable
- * @return array Format: array(root,child,child,child,...,$class)
- * @uses parserClass::getParentClassTree()
- */
-
- function generateFormattedClassTree($class)
- {
- $tree = $class->getParentClassTree($this);
- $out = '';
- if (count($tree) - 1)
- {
- $result = array($class->getName());
- $parent = $tree[$class->getName()];
- $distance[] = '';
- while ($parent)
- {
- $x = $parent;
- if (is_object($parent))
- {
- $subpackage = $parent->docblock->subpackage;
- $package = $parent->docblock->package;
- $x = $parent;
- $x = $parent->getLink($this);
- if (!$x) $x = $parent->getName();
- }
- $result[] =
- $x;
- $distance[] =
- "\n%s|\n" .
- "%s--";
- if (is_object($parent))
- $parent = $tree[$parent->getName()];
- elseif (isset($tree[$parent]))
- $parent = $tree[$parent];
- }
- $nbsp = ' ';
- for($i=count($result) - 1;$i>=0;$i--)
- {
- $my_nbsp = '';
- for($j=0;$j<count($result) - $i;$j++) $my_nbsp .= $nbsp;
- $distance[$i] = sprintf($distance[$i],$my_nbsp,$my_nbsp);
- }
- return array('classes'=>array_reverse($result),'distance'=>array_reverse($distance));
- } else
- {
- return array('classes'=>$class->getName(),'distance'=>array(''));
- }
- }
-
- /** @access private */
- function sortVar($a, $b)
- {
- return strnatcasecmp($a->getName(),$b->getName());
- }
-
- /** @access private */
- function sortMethod($a, $b)
- {
- if ($a->isConstructor) return -1;
- if ($b->isConstructor) return 1;
- return strnatcasecmp($a->getName(),$b->getName());
- }
-
- /**
- * returns a template-enabled array of class trees
- *
- * @param string $package package to generate a class tree for
- * @see $roots, HTMLConverter::getRootTree()
- */
- function generateFormattedClassTrees($package)
- {
- if (!isset($this->roots[$package])) return array();
- $roots = $trees = array();
- $roots = $this->roots[$package];
- for($i=0;$i<count($roots);$i++)
- {
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- return $trees;
- }
-
- /**
- * return formatted class tree for the Class Trees page
- *
- * @param array $tree output from {@link getSortedClassTreeFromClass()}
- * @see Classes::$definitechild, generateFormattedClassTrees()
- * @return string
- */
- function getRootTree($tree,$package)
- {
- if (!$tree) return '';
- $my_tree = '';
- $cur = '#root';
- $lastcur = array(false);
- $kids = array();
- $dopar = false;
- if ($tree[$cur]['parent'])
- {
- $dopar = true;
- if (!is_object($tree[$cur]['parent']))
- {
-// debug("parent ".$tree[$cur]['parent']." not found");
- $my_tree .= '<li>' . $tree[$cur]['parent'] .'<ul>';
- }
- else
- {
-// debug("parent ".$this->returnSee($tree[$cur]['parent'])." in other package");
- $my_tree .= '<li>' . $this->returnSee($tree[$cur]['parent']);
- if ($tree[$cur]['parent']->package != $package) $my_tree .= ' <b>(Different package)</b><ul>';
- }
- }
- do
- {
-// fancy_debug($cur,$lastcur,$kids);
- if (count($tree[$cur]['children']))
- {
-// debug("$cur has children");
- if (!isset($kids[$cur]))
- {
-// debug("set $cur kids");
- $kids[$cur] = 1;
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
- $my_tree .= '<ul>'."\n";
- }
- array_push($lastcur,$cur);
- list(,$cur) = each($tree[$cur]['children']);
-// var_dump('listed',$cur);
- if ($cur)
- {
- $cur = $cur['package'] . '#' . $cur['class'];
-// debug("set cur to child $cur");
-// $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
- continue;
- } else
- {
-// debug("end of children for $cur");
- $cur = array_pop($lastcur);
- $cur = array_pop($lastcur);
- $my_tree .= '</ul></li>'."\n";
- if ($dopar && ($cur == '#root' || !$cur)) $my_tree .= '</ul></li>';
- }
- } else
- {
-// debug("$cur has no children");
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link'])."</li>";
- if ($dopar && $cur == '#root') $my_tree .= '</ul></li>';
- $cur = array_pop($lastcur);
- }
- } while ($cur);
- return $my_tree;
- }
- /**
- * Generate indexing information for given element
- *
- * @param parserElement descendant of parserElement
- * @see generateElementIndex()
- * @return array
- */
- function getIndexInformation($elt)
- {
- $Result['type'] = $elt->type;
- $Result['file_name'] = $elt->file;
- $Result['path'] = $elt->getPath();
-
- if (isset($elt->docblock))
- {
- $Result['description'] = $elt->docblock->getSDesc($this);
-
- if ($elt->docblock->hasaccess)
- $Result['access'] = $elt->docblock->tags['access'][0]->value;
- else
- $Result['access'] = 'public';
-
- $Result['abstract'] = isset ($elt->docblock->tags['abstract'][0]);
- }
- else
- $Result['description'] = '';
-
- $aa = $Result['description'];
- if (!empty($aa)) $aa = "<br>&nbsp;&nbsp;&nbsp;&nbsp;$aa";
-
- switch($elt->type)
- {
- case 'class':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Class';
- $Result['link'] = $this->getClassLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', class '.$Result['link']."$aa";
- break;
- case 'define':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Constant';
- $Result['link'] = $this->getDefineLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', constant '.$Result['link']."$aa";
- break;
- case 'global':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Global';
- $Result['link'] = $this->getGlobalLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', global variable '.$Result['link']."$aa";
- break;
- case 'function':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Function';
- $Result['link'] = $this->getFunctionLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName().'()');
- $Result['listing'] = 'in file '.$elt->file.', function '.$Result['link']."$aa";
- break;
- case 'method':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Method';
- $Result['link'] = $this->getMethodLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName().'()'
- );
- if ($elt->isConstructor) $Result['constructor'] = 1;
- $Result['listing'] = 'in file '.$elt->file.', method '.$Result['link']."$aa";
- break;
- case 'var':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Variable';
- $Result['link'] = $this->getVarLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', variable '.$Result['link']."$aa";
- break;
- case 'const':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Variable';
- $Result['link'] = $this->getConstLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', class constant '.$Result['link']."$aa";
- break;
- case 'page':
- $Result['name'] = $elt->getFile();
- $Result['title'] = 'Page';
- $Result['link'] = $this->getPageLink($elt->getFile(),
- $elt->package,
- $elt->getPath(),
- $elt->getFile());
- $Result['listing'] = 'procedural page '.$Result['link'];
- break;
- case 'include':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Include';
- $Result['link'] = $elt->getValue();
- $Result['listing'] = 'include '.$Result['name'];
- break;
- }
-
- return $Result;
- }
- /**
- * Generate alphabetical index of all elements
- *
- * @see $elements, walk()
- */
- function generateElementIndex()
- {
- $elementindex = array();
- $letters = array();
- $used = array();
- foreach($this->elements as $letter => $nutoh)
- {
- foreach($this->elements[$letter] as $i => $yuh)
- {
- if ($this->elements[$letter][$i]->type != 'include')
- {
- if (!isset($used[$letter]))
- {
- $letters[]['letter'] = $letter;
- $elindex['letter'] = $letter;
- $used[$letter] = 1;
- }
-
- $elindex['index'][] = $this->getIndexInformation($this->elements[$letter][$i]);
- }
- }
- if (isset($elindex['index']))
- {
- $elementindex[] = $elindex;
- } else
- {
- unset($letters[count($letters) - 1]);
- }
- $elindex = array();
- }
- return array($elementindex,$letters);
- }
-
- function copyMediaRecursively($media,$targetdir,$subdir = '')
- {
- if (!is_array($media)) {
- return;
- }
- foreach($media as $dir => $files)
- {
- if ($dir === '/')
- {
- $this->copyMediaRecursively($files,$targetdir);
- } else
- {
- if (!is_numeric($dir))
- {
- // create the subdir
- phpDocumentor_out("creating $targetdir/$dir\n");
- Converter::setTargetDir($targetdir . PATH_DELIMITER . $dir);
- if (!empty($subdir)) $subdir .= PATH_DELIMITER;
- $this->copyMediaRecursively($files,"$targetdir/$dir",$subdir . $dir);
- } else
- {
- // copy the file
- phpDocumentor_out("copying $targetdir/".$files['file']."\n");
- $this->copyFile($files['file'],$subdir);
- }
- }
- }
- }
-
- /**
- * calls the converter setTargetDir, and then copies any template images and the stylesheet if they haven't been copied
- * @see Converter::setTargetDir()
- */
- function setTargetDir($dir)
- {
- Converter::setTargetDir($dir);
- if ($this->_wrote_tdir) return;
- $this->_wrote_tdir = true;
- $template_images = array();
- $stylesheets = array();
- $tdir = $dir;
- $dir = $this->templateDir;
- $this->templateDir = $this->templateDir.'templates/';
- $info = new Io;
- $this->copyMediaRecursively($info->getDirTree($this->templateDir.'media',$this->templateDir),$tdir);
- }
-
- /**
- * Generate alphabetical index of all elements by package and subpackage
- *
- * @param string $package name of a package
- * @see $pkg_elements, walk(), generatePkgElementIndexes()
- */
- function generatePkgElementIndex($package)
- {
- $elementindex = array();
- $letters = array();
- $letterind = array();
- $used = array();
- $subp = '';
- foreach($this->pkg_elements[$package] as $subpackage => $els)
- {
- if (empty($els)) continue;
- if (!empty($subpackage)) $subp = " (<b>subpackage:</b> $subpackage)"; else $subp = '';
- foreach($els as $letter => $yuh)
- {
- foreach($els[$letter] as $i => $yuh)
- {
- if ($els[$letter][$i]->type != 'include')
- {
- if (!isset($used[$letter]))
- {
- $letters[]['letter'] = $letter;
- $letterind[$letter] = count($letters) - 1;
- $used[$letter] = 1;
- }
- $elindex[$letter]['letter'] = $letter;
-
- $elindex[$letter]['index'][] = $this->getIndexInformation($els[$letter][$i]);
- }
- }
- }
- }
- ksort($elindex);
- usort($letters,'HTMLSmarty_lettersort');
- if (isset($elindex))
- {
- while(list($letter,$tempel) = each($elindex))
- {
- if (!isset($tempel))
- {
- unset($letters[$letterind[$tempel['letter']]]);
- } else
- $elementindex[] = $tempel;
- }
- } else $letters = array();
- return array($elementindex,$letters);
- }
-
- /**
- *
- * @see generatePkgElementIndex()
- */
- function generatePkgElementIndexes()
- {
- $packages = array();
- $package_names = array();
- $pkg = array();
- $letters = array();
- foreach($this->pkg_elements as $package => $trash)
- {
- $pkgs['package'] = $package;
- $pkg['package'] = $package;
- list($pkg['pindex'],$letters[$package]) = $this->generatePkgElementIndex($package);
- if (count($pkg['pindex']))
- {
- $packages[] = $pkg;
- $package_names[] = $pkgs;
- }
- unset($pkgs);
- unset($pkg);
- }
- foreach($packages as $i => $package)
- {
- $pnames = array();
- for($j=0;$j<count($package_names);$j++)
- {
- if ($package_names[$j]['package'] != $package['package']) $pnames[] = $package_names[$j];
- }
- $packages[$i]['packageindexes'] = $pnames;
- }
- return array($packages,$package_names,$letters);
- }
-
- /**
- * @param string name of class
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the class's documentation
- * @see parent::getClassLink()
- */
- function getClassLink($expr,$package, $file = false,$text = false, $with_a = true)
- {
- $a = Converter::getClassLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text, $with_a);
- }
-
- /**
- * @param string name of function
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the function's documentation
- * @see parent::getFunctionLink()
- */
- function getFunctionLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getFunctionLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of define
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the define's documentation
- * @see parent::getDefineLink()
- */
- function getDefineLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getDefineLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of global variable
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the global variable's documentation
- * @see parent::getGlobalLink()
- */
- function getGlobalLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getGlobalLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of procedural page
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the procedural page's documentation
- * @see parent::getPageLink()
- */
- function getPageLink($expr,$package, $path = false,$text = false)
- {
- $a = Converter::getPageLink($expr,$package,$path);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of method
- * @param string class containing method
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the method's documentation
- * @see parent::getMethodLink()
- */
- function getMethodLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getMethodLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of var
- * @param string class containing var
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the var's documentation
- * @see parent::getVarLink()
- */
- function getVarLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getVarLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of class constant
- * @param string class containing class constant
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the var's documentation
- * @see parent::getVarLink()
- */
- function getConstLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getConstLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * does a nat case sort on the specified second level value of the array
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- */
- function rcNatCmp ($a, $b)
- {
- $aa = strtoupper($a[$this->rcnatcmpkey]);
- $bb = strtoupper($b[$this->rcnatcmpkey]);
-
- return strnatcasecmp($aa, $bb);
- }
-
- /**
- * does a nat case sort on the specified second level value of the array.
- * this one puts constructors first
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- */
- function rcNatCmp1 ($a, $b)
- {
- $aa = strtoupper($a[$this->rcnatcmpkey]);
- $bb = strtoupper($b[$this->rcnatcmpkey]);
-
- if (strpos($aa,'CONSTRUCTOR') === 0)
- {
- return -1;
- }
- if (strpos($bb,'CONSTRUCTOR') === 0)
- {
- return 1;
- }
- if (strpos($aa,strtoupper($this->class)) === 0)
- {
- return -1;
- }
- if (strpos($bb,strtoupper($this->class)) === 0)
- {
- return -1;
- }
- return strnatcasecmp($aa, $bb);
- }
-
- /**
- * This function is not used by HTMLdefaultConverter, but is required by Converter
- */
- function Output()
- {
- }
-}
-
-/**
- * @access private
- * @global string name of the package to set as the first package
- */
-function HTMLSmarty_pindexcmp($a, $b)
-{
- global $phpDocumentor_DefaultPackageName;
- if ($a['title'] == $phpDocumentor_DefaultPackageName) return -1;
- if ($b['title'] == $phpDocumentor_DefaultPackageName) return 1;
- return strnatcasecmp($a['title'],$b['title']);
-}
-
-/** @access private */
-function HTMLSmarty_lettersort($a, $b)
-{
- return strnatcasecmp($a['letter'],$b['letter']);
-}
-
-/** @access private */
-function HTMLSmarty_outputfilter($src, &$smarty)
-{
- return str_replace('{$subdir}',$smarty->_tpl_vars['subdir'],$src);
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/options.ini
deleted file mode 100644
index 4566db60..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/options.ini
+++ /dev/null
@@ -1,577 +0,0 @@
-preservedocbooktags = false
-
-;; used to highlight the {@source} inline tag, @filesource tag, and @example tag
-[highlightSourceTokens]
-;; format:
-;; T_CONSTANTNAME = open
-;; /T_CONSTANTNAME = close
-
-T_INCLUDE = <span class="src-inc">
-/T_INCLUDE = </span>
-T_INCLUDE_ONCE = <span class="src-inc">
-/T_INCLUDE_ONCE = </span>
-T_REQUIRE_ONCE = <span class="src-inc">
-/T_REQUIRE_ONCE = </span>
-T_REQUIRE_ONCE = <span class="src-inc">
-/T_REQUIRE_ONCE = </span>
-
-T_CONSTANT_ENCAPSED_STRING = <span class="src-str">
-/T_CONSTANT_ENCAPSED_STRING = </span>
-T_STRING_VARNAME = <span class="src-str">
-/T_STRING_VARNAME = </span>
-
-T_STRING = <span class="src-id">
-/T_STRING = </span>
-
-T_DNUMBER = <span class="src-num">
-/T_DNUMBER = </span>
-T_LNUMBER = <span class="src-num">
-/T_LNUMBER = </span>
-
-T_VARIABLE = <span class="src-var">
-/T_VARIABLE = </span>
-
-T_COMMENT = <span class="src-comm">
-/T_COMMENT = </span>
-T_ML_COMMENT = <span class="src-comm">
-/T_ML_COMMENT = </span>
-
-T_OBJECT_OPERATOR = <span class="src-sym">
-/T_OBJECT_OPERATOR = </span>
-
-T_ABSTRACT = <span class="src-key">
-/T_ABSTRACT = </span>
-T_CLONE = <span class="src-key">
-/T_CLONE = </span>
-T_HALT_COMPILER = <span class="src-key">
-/T_HALT_COMPILER = </span>
-T_ARRAY = <span class="src-key">
-/T_ARRAY = </span>
-T_AS = <span class="src-key">
-/T_AS = </span>
-T_BREAK = <span class="src-key">
-/T_BREAK = </span>
-T_CLASS = <span class="src-key">
-/T_CLASS = </span>
-T_CASE = <span class="src-key">
-/T_CASE = </span>
-T_CONST = <span class="src-key">
-/T_CONST = </span>
-T_CONTINUE = <span class="src-key">
-/T_CONTINUE = </span>
-T_DECLARE = <span class="src-key">
-/T_DECLARE = </span>
-T_DEFAULT = <span class="src-key">
-/T_DEFAULT = </span>
-T_ELSE = <span class="src-key">
-/T_ELSE = </span>
-T_ELSEIF = <span class="src-key">
-/T_ELSEIF = </span>
-T_EMPTY = <span class="src-key">
-/T_EMPTY = </span>
-T_ENDDECLARE = <span class="src-key">
-/T_ENDDECLARE = </span>
-T_ENDFOR = <span class="src-key">
-/T_ENDFOR = </span>
-T_ENDSWITCH = <span class="src-key">
-/T_ENDSWITCH = </span>
-T_ENDFOREACH = <span class="src-key">
-/T_ENDFOREACH = </span>
-T_ENDIF = <span class="src-key">
-/T_ENDIF = </span>
-T_ENDWHILE = <span class="src-key">
-/T_ENDWHILE = </span>
-T_EXIT = <span class="src-key">
-/T_EXIT = </span>
-T_EXTENDS = <span class="src-key">
-/T_EXTENDS = </span>
-T_FINAL = <span class="src-key">
-/T_FINAL = </span>
-T_FOR = <span class="src-key">
-/T_FOR = </span>
-T_FOREACH = <span class="src-key">
-/T_FOREACH = </span>
-T_FUNCTION = <span class="src-key">
-/T_FUNCTION = </span>
-T_GLOBAL = <span class="src-key">
-/T_GLOBAL = </span>
-T_IF = <span class="src-key">
-/T_IF = </span>
-T_IMPLEMENTS = <span class="src-key">
-/T_IMPLEMENTS = </span>
-T_INTERFACE = <span class="src-key">
-/T_INTERFACE = </span>
-T_LOGICAL_AND = <span class="src-key">
-/T_LOGICAL_AND = </span>
-T_LOGICAL_OR = <span class="src-key">
-/T_LOGICAL_OR = </span>
-T_LOGICAL_XOR = <span class="src-key">
-/T_LOGICAL_XOR = </span>
-T_NEW = <span class="src-key">
-/T_NEW = </span>
-T_PRIVATE = <span class="src-key">
-/T_PRIVATE = </span>
-T_PROTECTED = <span class="src-key">
-/T_PROTECTED = </span>
-T_PUBLIC = <span class="src-key">
-/T_PUBLIC = </span>
-T_RETURN = <span class="src-key">
-/T_RETURN = </span>
-T_STATIC = <span class="src-key">
-/T_STATIC = </span>
-T_SWITCH = <span class="src-key">
-/T_SWITCH = </span>
-T_VAR = <span class="src-key">
-/T_VAR = </span>
-T_WHILE = <span class="src-key">
-/T_WHILE = </span>
-
-T_DOUBLE_COLON = <span class="src-sym">
-/T_DOUBLE_COLON = </span>
-
-T_OPEN_TAG = <span class="src-php">
-/T_OPEN_TAG = </span>
-T_OPEN_TAG_WITH_ECHO = <span class="src-php">
-/T_OPEN_TAG_WITH_ECHO = </span>
-T_CLOSE_TAG = <span class="src-php">
-/T_CLOSE_TAG = </span>
-
-
-[highlightSource]
-;; this is for highlighting things that aren't tokens like "&"
-;; format:
-;; word = open
-;; /word = close
-@ = <span class="src-sym">
-/@ = </span>
-& = <span class="src-sym">
-/& = </span>
-[ = <span class="src-sym">
-/[ = </span>
-] = <span class="src-sym">
-/] = </span>
-! = <span class="src-sym">
-/! = </span>
-";" = <span class="src-sym">
-/; = </span>
-( = <span class="src-sym">
-/( = </span>
-) = <span class="src-sym">
-/) = </span>
-, = <span class="src-sym">
-/, = </span>
-{ = <span class="src-sym">
-/{ = </span>
-} = <span class="src-sym">
-/} = </span>
-""" = <span class="src-str">
-/" = </span>
-
-[highlightDocBlockSourceTokens]
-;; this is for docblock tokens, using by phpDocumentor_HighlightParser
-;; tagphptype is for "string" in @param string description, for example
-docblock = <span class="src-doc">
-/docblock = </span>
-tagphptype = <span class="src-doc-type">
-/tagphptype = </span>
-tagvarname = <span class="src-doc-var">
-/tagvarname = </span>
-coretag = <span class="src-doc-coretag">
-/coretag = </span>
-tag = <span class="src-doc-tag">
-/tag = </span>
-inlinetag = <span class="src-doc-inlinetag">
-/inlinetag = </span>
-internal = <span class="src-doc-internal">
-/internal = </span>
-closetemplate = <span class="src-doc-close-template">
-/closetemplate = </span>
-docblocktemplate = <span class="src-doc-template">
-/docblocktemplate = </span>
-
-[highlightTutorialSourceTokens]
-;; this is for XML DocBook-based tutorials, highlighted by phpDocumentor_TutorialHighlightParser
-;; <tag>
-opentag = <span class="tute-tag">
-/opentag = </span>
-;; </tag>
-closetag = <span class="tute-tag">
-/closetag = </span>
-;; <tag attribute="value">
-attribute = <span class="tute-attribute-name">
-/attribute = </span>
-;; <tag attribute="value">
-attributevalue = <span class="tute-attribute-value">
-/attributevalue = </span>
-;; &entity;
-entity = <span class="tute-entity">
-/entity = </span>
-;; <!-- comment -->
-comment = <span class="tute-comment">
-/comment = </span>
-;; {@inline tag}
-itag = <span class="tute-inline-tag">
-/itag = </span>
-
-;; used for translation of html in DocBlocks
-[desctranslate]
-ul = <ul>
-/ul = </ul>
-ol = <ol>
-/ol = </ol>
-li = <li>
-/li = </li>
-code = <div class="listing"><pre>
-/code = </pre></div>
-var = <var>
-/var = </var>
-samp = <samp>
-/samp = </samp>
-kbd = <kbd>
-/kbd = </kbd>
-pre = <pre>
-/pre = </pre>
-p = <p>
-/p = </p>
-b = <strong>
-/b = </strong>
-i = <em>
-/i = </em>
-br = <br />
-
-[ppage]
-;; this is the DocBook package page translation section. All DocBook tags
-;; that have a corresponding html tag must be listed here. Entities should
-;; also be listed here
-;;
-;; examples:
-;; 1)
-;; tagname = newtagname
-;;
-;; This is the simplest case, where all attributes will be added into the
-;; starting tag and the ending tag will be html/xml style </tranlatedtagname>
-;; <tagname></tagname> becomes <newtagname></newtagname> and
-;; <tagname attr="value"></tagname> becomes
-;; <newtagname attr="value"></newtagname>
-;;
-;; 2)
-;; tagname = newtagname
-;; tagname->attr = newattrname
-;;
-;; in this case, everything will be like the first case, except tags like:
-;; <tagname attr="value"></tagname> will become
-;; <newtagname newattrname="value"></newtagname>
-;;
-;; 3)
-;; tagname = newtagname
-;; tagname->attr = newattrname
-;; tagname->attr+value = newvalue
-;;
-;; in this case, the value is also translated to another. This can be useful
-;; for instances such as focus="middle" changing to align="center" or something
-;; of that nature.
-;; <tagname attr="value"></tagname> will become
-;; <newtagname newattrname="newvalue"></newtagname>
-;;
-;; 4)
-;; tagname = newtagname
-;; tagname->attr1 = newattrname
-;; tagname->attr2 = newattrname
-;; tagname->attr1+value|attr2+value = newvalue
-;;
-;; in this case, two attributes combine to make one new attribute, and the combined
-;; value is translated into a new value
-;; <tagname attr1="value1" attr2="value2"></tagname> will become
-;; <newtagname newattrname="newvalue"></newtagname>
-;;
-;; 5)
-;; tagname = newtagname
-;; tagname!attr = dummy
-;;
-;; here, the attribute will be ignored. dummy is not used and may be any value
-;; <tagname attr="value"></tagname> will become
-;; <newtagname></newtagname>
-;;
-;; 6)
-;; tagname = newtagname
-;; tagname! = dummy
-;;
-;; here, all attributes will be ignored. dummy is not used and may be any value
-;; <tagname attr1="value" attr2="foo"></tagname> will become
-;; <newtagname></newtagname>
-;;
-;; 7)
-;; tagname = newtagname
-;; tagname/ = 1
-;;
-;; here, the tag will be translated as a single tag with no closing tag, and all
-;; attributes
-;; <tagname attr="val">{text text}</tagname> will become
-;; <newtagname attr="val" />
-;;
-;; 8)
-;; tagname = <starttaginfo />
-;; /tagname = closetagtext
-;;
-;; in this case, the text <starttaginfo> will be inserted exactly as entered for
-;; <tagname> and closetagtext for </tagname>
-;; <tagname attr="val"></tagname> will become
-;; <starttaginfo />closetagtext
-;;
-;; 9)
-;; $attr$my_attribute = newattrname
-;;
-;; tagname = newtagname
-;;
-;; in this case, all occurences of my_attribute in any tag will be changed to
-;; newattrname. This is useful for changing things like role="php" to
-;; class="php," for example. Note that the text "$attr$" MUST be on the line
-;; start for phpDocumentor to recognize it.
-;;
-;; 10)
-;; &entity; = translation text
-;; &quot; = &quot;
-;; &quot; = """
-;; &lt; = <
-;;
-;; Use this to control translation of entities to their appropriate values
-
-&nbsp; = &nbsp;
-&quot; = &quot;
-&rdquo; = &rdquo;
-&ldquo; = &ldquo;
-&amp; = &amp;
-&lt; = &lt;
-&gt; = &gt;
-&copy; = &copy;
-
-$attr$role = class
-
-abbrev = abbr
-
-blockquote = blockquote
-
-arg = span
-arg->choice = class
-
-author = <span class="author">
-/author = </span>
-author! = 0
-
-authorblurb = <div class="author-blurb">
-/authorblurb = </div>
-
-authorgroup = <div class="authors"><h2 class="title">Authors</h2>
-/authorgroup = </div>
-authorgroup! = 0
-
-caution = <span class="warning">
-/caution = </span>
-caution! = 0
-
-cmdsynopsis = <div class="cmd-synopsis">
-/cmdsynopsis = </div>
-
-command = <span class="cmd-title">
-/command = </span>
-
-copyright = <div class="notes">
-/copyright = </div>
-
-emphasis = strong
-
-example = <pre class="example">
-/example = </pre>
-example! = 0
-
-function =
-/function = ()
-
-formalpara = p
-
-graphic = img
-graphic->fileref = src
-graphic/ =
-
-important = strong
-
-informalequation = blockquote
-
-informalexample = div
-
-inlineequation = em
-
-itemizedlist = ul
-
-listitem = li
-
-literal = code
-
-literallayout = span
-
-option = " "
-/option =
-
-orderedlist = ol
-
-para = p
-
-programlisting = <pre class="listing">
-/programlisting = </pre>
-programlisting! = 0
-
-refentry = div
-
-refnamediv = <div class="ref-title-box">
-/refnamediv = </div>
-refnamediv! = 0
-
-refname = <h1 class="ref-title">
-/refname = </h1>
-
-refpurpose = <h2 class="ref-purpose">
-/refpurpose = </h2>
-
-refsynopsisdiv = <div class="ref-synopsis">
-/refsynopsisdiv = </div>
-refsynopsisdiv! = 0
-
-refsect1 = span
-
-refsect2 =
-/refsect2 = <hr />
-
-refsect3 =
-/refsect3 = <br />
-
-releaseinfo = <div class="release-info">(
-/releaseinfo = )</div>
-
-simpara =
-/simpara = <br />
-simpara! = 0
-
-subscript = sub
-
-superscript = super
-
-table = table
-
-table->colsep = rules
-table->rowsep = rules
-table->colsep+1|rowsep+1 = all
-table->colsep+1|rowsep+0 = cols
-table->colsep+0|rowsep+1 = rows
-
-table->frame = frame
-table->frame+all = border
-table->frame+none = void
-table->frame+sides = vsides
-table->frame+top = above
-table->frame+topbot = hsides
-
-thead = thead
-
-tfoot = tfoot
-
-tbody = tbody
-
-colspec = col
-
-tgroup = colgroup
-tgroup/ = 1
-tgroup->cols = span
-
-row = tr
-
-entry = td
-entry->morerows = colspan
-entry->morerows+1 = 2
-entry->morerows+2 = 3
-entry->morerows+3 = 4
-entry->morerows+4 = 5
-entry->morerows+5 = 6
-entry->morerows+6 = 7
-entry->morerows+7 = 8
-entry->morerows+8 = 9
-entry->morerows+9 = 10
-entry->morerows+10 = 11
-;; add more if you need more colspans
-
-warning = <span class="warning">
-/warning = </span>
-warning! = 0
-
-;; now begins the attributes that should be tags in cdata
-[$attr$id]
-open = a
-;close = /a
-cdata! = true
-quotevalues = true
-separator = "="
-;separateall = true
-$id = name
-
-;; now begins the sections that deal with <title>
-[refsynopsisdiv_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h1 class="title">
-close = </h1>
-
-[refsect1_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h2 class="title">
-close = </h2>
-
-[refsect2_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h3 class="title">
-close = </h3>
-
-[refsect3_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h4 class="title">
-close = </h4>
-
-[para_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <div class="title">
-close = </div>
-
-[formalpara_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <div class="title">
-close = </div>
-
-[example_title]
-;tag_attr = true
-;attr_name = title
-;cdata_start = true
-cdata_end = true
-open = </td></tr><tr><td><strong>
-close = </strong>
-
-[table_title]
-;tag_attr = true
-;attr_name = true
-cdata_start = true
-open = <caption>
-close = </caption>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/__tags.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/__tags.tpl
deleted file mode 100644
index 221830c4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/__tags.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="tag-list">
- {section name=tag loop=$tags}
- {if $tags[tag].keyword != "abstract" &&
- $tags[tag].keyword != "access" &&
- $tags[tag].keyword != "static" &&
- $tags[tag].keyword != "version"
- }
-
- <strong>{$tags[tag].keyword|capitalize}:</strong>
- {$tags[tag].data}<br />
- {/if}
- {/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_declaration.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_declaration.tpl
deleted file mode 100644
index d7fe2f82..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_declaration.tpl
+++ /dev/null
@@ -1,38 +0,0 @@
-<hr size="1" noshade="noshade"/>
-<div class="class-declaration">
- {if count($tags) > 0}
- {section name=tag loop=$tags}
- {if $tags[tag].keyword == "abstract"}
- abstract
- {/if}
- {/section}
- {/if}
-
- {if $is_interface}
- interface
- {else}
- class
- {/if}
-
- <strong>{$class_name}</strong>
-
- {if count($class_tree) > 1}
- {section name=tree loop=$class_tree.classes}
- {if $smarty.section.tree.last}
- extends {$class_tree.classes[$smarty.section.tree.index_prev]}
- {/if}
- {/section}
- {/if}
-
- {if $implements}
- <br/>
- implements
- {foreach item="interface" from=$implements}
- {if !$smarty.foreach.interface.first}
- , {$interface}
- {else}
- {$interface}
- {/if}
- {/foreach}
- {/if}
-</div> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_description.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_description.tpl
deleted file mode 100644
index 12025c1c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_description.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="class-description">
- <p>{$sdesc}</p>
-
- {if $desc != ""}{$desc}{/if}
-</div>
-
-{include file="_tags.tpl" tags=$tags}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_list.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_list.tpl
deleted file mode 100644
index d6a1d398..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_class_list.tpl
+++ /dev/null
@@ -1 +0,0 @@
-{eval var=$compiledclassindex} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_details.tpl
deleted file mode 100644
index bca71e17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_details.tpl
+++ /dev/null
@@ -1,33 +0,0 @@
-{if $consts}
- <hr size="1" noshade="noshade"/>
- <a name="constant-details"></a>
- <table class="constant-details" cellspacing="1">
- <tr>
- <th>Constant Details</th>
- </tr>
- {section name=const loop=$consts}
- <tr>
- <td>
- <a name="{$consts[const].const_dest}"></a>
-
- <h3>{$consts[const].const_name}</h3>
-
- <p>{$consts[const].sdesc}</p>
-
- {if $consts[const].desc}
- {$consts[const].desc}
- {/if}
-
- <div class="tag-list">
- <h4 class="tag">Type:</h4>
- <div class="tag-data">{include file="_get_constant_type.tpl" const=$consts[const].const_value}</div>
- <h4 class="tag">Value:</h4>
- <div class="tag-data">{$consts[const].const_value}</div>
- </div>
- {include file="_tags.tpl" tags=$consts[const].tags}
- <p/>
- </td>
- </tr>
- {/section}
- </table>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_summary.tpl
deleted file mode 100644
index 8049c4b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constant_summary.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-{if $consts || $iconsts}
- <hr size="1" noshade="noshade"/>
- <a name="constant-summary"></a>
- <table class="constant-summary" cellspacing="1">
- <tr>
- <th colspan="3">Constant Summary</th>
- </tr>
- {section name=const loop=$consts}
- <tr>
- <td class="type" nowrap="nowrap">{strip}{include file="_get_constant_type.tpl" const=$consts[const].const_value}{/strip}</td>
- <td class="name"><a href="{$consts[const].id}">{$consts[const].const_name}</a></td>
- <td class="description" width="100%">
- {$consts[const].sdesc}
-
- {if $consts[const].desc}
- {$consts[const].desc}
- {/if}
- </td>
- </tr>
- {/section}
- </table>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_details.tpl
deleted file mode 100644
index ec4fd0a2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_details.tpl
+++ /dev/null
@@ -1,55 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__construct"}
- <hr size="1" noshade="noshade"/>
- <a name="sec-method"></a>
- <table class="method-details" cellspacing="1">
- <tr>
- <th colspan="3">Constructor Details</th>
- </tr>
- <tr>
- <td class="method-data">
- <a name="{$methods[method].method_dest}"></a>
-
- <h2>{$methods[method].function_name}</h2>
-
- <table class="method-detail" cellspacing="0">
- <tr>
- <td nowrap="nowrap">{strip}
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].access == "public"}
- public&nbsp;
- {/if}
-
- {if $methods[method].abstract == "1"}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == "1"}
- static&nbsp;
- {/if}
-
- <strong>{$methods[method].function_name}</strong>
- {/strip}</td>
- <td nowrap="nowrap">{strip}
- {$methods[method].ifunction_call.params}
- {/strip}</td>
- </tr>
- </table>
-
- <p>{$methods[method].sdesc}</p>
-
- {if $methods[method].desc}
- {$methods[method].desc}
- {/if}
-
- {include file="_tags.tpl" tags=$methods[method].tags}
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_summary.tpl
deleted file mode 100644
index 8819f63e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_constructor_summary.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__construct"}
- <hr size="1" noshade="noshade"/>
- <a name="constructor-summary"></a>
- <table class="method-summary" cellspacing="1">
- <tr>
- <th colspan="2">Constructor Summary</th>
- </tr>
- <tr>
- <td class="type" nowrap="nowrap" width="1%">{$methods[method].access}</td>
- <td>
- <div class="declaration">
- <a href="{$methods[method].id}">{$methods[method].function_name}</a>
- {$methods[method].ifunction_call.params}
- </div>
- <div class="description">
- {$methods[method].sdesc}
- </div>
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_details.tpl
deleted file mode 100644
index 3cb5534a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_details.tpl
+++ /dev/null
@@ -1,55 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__destruct"}
- <hr size="1" noshade="noshade"/>
- <a name="sec-method"></a>
- <table class="method-details" cellspacing="1">
- <tr>
- <th colspan="3">Destructor Details</th>
- </tr>
- <tr>
- <td class="method-data">
- <a name="{$methods[method].method_dest}"></a>
-
- <h2>{$methods[method].function_name}</h2>
-
- <table class="method-detail" cellspacing="0">
- <tr>
- <td nowrap="nowrap">{strip}
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].access == "public"}
- public&nbsp;
- {/if}
-
- {if $methods[method].abstract == "1"}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == "1"}
- static&nbsp;
- {/if}
-
- <strong>{$methods[method].function_name}</strong>
- {/strip}</td>
- <td nowrap="nowrap">{strip}
- {build_argument_list args=$methods[method].ifunction_call.params style="vertical"}
- {/strip}</td>
- </tr>
- </table>
-
- <p>{$methods[method].sdesc}</p>
-
- {if $methods[method].desc}
- {$methods[method].desc}
- {/if}
-
- {include file="_tags.tpl" tags=$methods[method].tags}
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_summary.tpl
deleted file mode 100644
index 53e8f1d2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_destructor_summary.tpl
+++ /dev/null
@@ -1,27 +0,0 @@
-{if $methods}
- {section name=method loop=$methods}
- {if $methods[method].function_name == "__destruct"}
- <hr size="1" noshade="noshade"/>
- <a name="desructor-summary"></a>
- <table class="method-summary" cellspacing="1">
- <tr>
- <th colspan="2">Destructor Summary</th>
- </tr>
- <tr>
- <td class="type" nowrap="nowrap" width="1%">{strip}
- {$methods[method].access}
- {/strip}</td>
- <td>
- <div class="declaration">{strip}
- <a href="{$methods[method].id}">{$methods[method].function_name}</a>
- {$methods[method].ifunction_call.params}
- {/strip}</div>
- <div class="description">
- {$methods[method].sdesc}
- </div>
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_footer.tpl
deleted file mode 100644
index 0c2eddc2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_footer.tpl
+++ /dev/null
@@ -1 +0,0 @@
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_get_constant_type.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_get_constant_type.tpl
deleted file mode 100644
index 48301da4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_get_constant_type.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{if is_numeric(strtolower(trim($const)))}
- int
-{elseif strtolower(trim($const)) == "true" ||
- strtolower(trim($const)) == "false"}
- bool
-{elseif strtolower(trim($const)) == "null"}
- null
-{else}
- string
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_header.tpl
deleted file mode 100644
index f92571a4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_header.tpl
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="bar" nowrap="nowrap">
- {include file="_class_list.tpl"}
-</div>
-<div id="content1">
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_constants.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_constants.tpl
deleted file mode 100644
index 66c37633..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_constants.tpl
+++ /dev/null
@@ -1,34 +0,0 @@
-{if $iconsts}
- {section name=iconst loop=$iconsts}
- <table class="inherited-constants" cellspacing="1">
- <tr>
- <th>Constants Inherited From {$iconsts[iconst].parent_class}</th>
- </tr>
- <tr>
- <td>
- {assign var="_consts" value=""}
-
- {section name=_const loop=$iconsts[iconst].iconsts}
- {if $_consts != ""},
- {* append var="_consts" value=", "*}
- {/if}
- <a href="{$href}">{$iconsts[iconst].iconsts[_const].name}</a>{if !$smarty.section.name.last},{/if}
- {*
- {extract_attribute attribute="href"
- element=$iconsts[iconst].iconsts[_const].link
- var="href" append="no"}
-
- {append var="_consts" value="<a href=\""}
- {append var="_consts" value=$href}
- {append var="_consts" value="\">"}
- {append var="_consts" value=$iconsts[iconst].iconsts[_const].name}
- {append var="_consts" value="</a>"}
- *}
-{/section}
-
- {*$_consts*}
- </td>
- </tr>
- </table>
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_methods.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_methods.tpl
deleted file mode 100644
index 55aafb17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inherited_methods.tpl
+++ /dev/null
@@ -1,42 +0,0 @@
-{if $imethods}
- {section name=imethod loop=$imethods}
- {if count($imethods[imethod].imethods) > 1 ||
- ($imethods[imethod].imethods[0].name != "__construct" &&
- $imethods[imethod].imethods[0].name != "__destruct" &&
- $imethods[imethod].imethods[0].abstract != "1")}
- <table class="inherited-methods" cellspacing="1">
- <tr>
- <th>Methods Inherited From {$imethods[imethod].parent_class}</th>
- </tr>
- <tr>
- <td>
- {* assign var="_methods" value="" *}
-
- {section name=_method loop=$imethods[imethod].imethods}
- {if $imethods[imethod].imethods[_method].name != "__construct" &&
- $imethods[imethod].imethods[_method].abstract != "1"}
- {*
- {if $_methods != ""}
- {append var="_methods" value=", "}
- {/if}
-
- {extract_attribute attribute="href"
- element=$imethods[imethod].imethods[_method].link
- var="href" append="no"}
-
- {append var="_methods" value="<a href=\""}
- {append var="_methods" value=$href}
- {append var="_methods" value="\">"}
- {append var="_methods" value=$imethods[imethod].imethods[_method].name}
- {append var="_methods" value="</a>"}
- *}
- {$imethods[imethod].imethods[_method].link}{if !$smarty.section._method.last},{/if}
- {/if}
- {/section}
-
- </td>
- </tr>
- </table>
- {/if}
- {/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inheritence_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inheritence_tree.tpl
deleted file mode 100644
index 471c7972..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_inheritence_tree.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="inheritence-tree">
- <pre>{section name=tree loop=$class_tree.classes}{if $smarty.section.tree.last}<strong>{$class_tree.classes[tree]}</strong>{else}{$class_tree.classes[tree]}{/if}{$class_tree.distance[tree]}{/section}</pre>
-</div> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_details.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_details.tpl
deleted file mode 100644
index b5ddfb10..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_details.tpl
+++ /dev/null
@@ -1,101 +0,0 @@
-{if $methods && (count($methods) > 1 ||
- ($methods[0].function_name != "__construct" &&
- $methods[0].function_name != "__destruct"))}
-
- <hr size="1" noshade="noshade"/>
- <a name="method-details"></a>
- <table class="method-details" cellspacing="1">
- <tr>
- <th>Method Details</th>
- </tr>
- {section name=method loop=$methods}
- {if $methods[method].function_name != "__construct" &&
- $methods[method].function_name != "__destruct"}
-
- <tr>
- <td class="method-data">
-
- <a name="{$methods[method].method_dest}"></a>
-
- <h2>{$methods[method].function_name}</h2>
-
- <table class="method-detail" cellspacing="0">
- <tr>
- <td nowrap="nowrap">{strip}
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].access == "public"}
- public&nbsp;
- {/if}
-
- {if $methods[method].abstract == 1}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == 1}
- static&nbsp;
- {/if}
-
- {$methods[method].function_return}&nbsp;
-
-
- <strong>{$methods[method].function_name}</strong>
- {/strip}</td>
- <td width="100%">{strip}
- (
- {if $methods[method].ifunction_call.params}
- {foreach item=param name="method" from=$methods[method].ifunction_call.params}
- {$param.type} {$param.name} {if !$smarty.foreach.method.last}, {/if}
- {/foreach}
-
- {/if}
- )
- {/strip}</td>
- </tr>
- </table>
-
- <p>{$methods[method].sdesc}</p>
-
- {if $methods[method].desc}
- {$methods[method].desc}
- {/if}
- {* $methods[method]|print_r *}
- <div class="tag-list"><table class="method-summary" cellspacing="1">
- {if $methods[method].ifunction_call.params}
- <tr><th colspan="3" class="small">Input</th></tr>
- {foreach item=param name="method" from=$methods[method].ifunction_call.params}
- <tr><td valign="top">{$param.type}</td><td valign="top"><strong>{$param.name}</strong><td valign="top">{$param.description}</td></tr>
- {/foreach}
- {/if}
- {if $methods[method].tags}
- <tr><th colspan="3" class="small">Output</th></tr>
-
- {foreach item=param name="method" from=$methods[method].tags}
- {if $param.keyword == "return"}
- <tr><td valign="top">
- {$methods[method].function_return}
- </td><td valign="top" colspan="2">{$param.data}</td></tr>
- {/if}
- {/foreach}
- {/if}
- {if $methods[method].tags}
- <tr><th colspan="3" class="small">Exception</th></tr>
-
- {foreach item=param name="method" from=$methods[method].tags}
- {if $param.keyword == "throws"}
- <tr><td valign="top">{$param.keyword}</td><td valign="top" colspan="2">{$param.data}</td></tr>
- {/if}
- {/foreach}
- {/if}
- </table></div>
-
- {* include file="_tags.tpl" tags=$methods[method].tags *}
- <p/>
- </td>
- </tr>
- {/if}
- {/section}
- </table>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_summary.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_summary.tpl
deleted file mode 100644
index 8fefd671..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_method_summary.tpl
+++ /dev/null
@@ -1,61 +0,0 @@
-{if $methods || $imethods}
- <hr size="1" noshade="noshade"/>
- <a name="method-summary"></a>
- <table class="method-summary" cellspacing="1">
- <tr>
- <th colspan="2">Method Summary</th>
- </tr>
- {section name=method loop=$methods}
- {if $methods[method].function_name != "__construct" &&
- $methods[method].function_name != "__destruct"}
- {*
- {if trim(substr($methods[method].function_call, 0, 1)) == "&"}
- {assign var="ref" value="true"}
- {assign var="css" value=" class=\"reference\""}
- {else}
- {assign var="ref" value="false"}
- {assign var="css" value=""}
- {/if}
- *}
- <tr>
- <td class="type" nowrap="nowrap" width="1%">
- {if $methods[method].access == "protected"}
- protected&nbsp;
- {/if}
-
- {if $methods[method].abstract == 1}
- abstract&nbsp;
- {/if}
-
- {if $methods[method].static == 1}
- static&nbsp;
- {/if}
-
- {$methods[method].function_return}
-{*
- {if $ref == "true"}
- &nbsp;&amp;
- {/if}
-*}
- </td>
- <td>
- <div class="declaration">
- <a href="{$methods[method].id}">{$methods[method].function_name}</a>
- ({strip}
- {if $methods[method].ifunction_call.params}
- {foreach item=param name="method" from=$methods[method].ifunction_call.params}
- {$param.type} {$param.name}{if !$smarty.foreach.method.last}, {/if}
- {/foreach}
-
- {/if}
- {/strip})
- </div>
- <div class="description">
- {$methods[method].sdesc}
- </div>
- </td>
- </tr>
- {/if}
- {/section}
- </table>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_sub_classes.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_sub_classes.tpl
deleted file mode 100644
index e605b314..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_sub_classes.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{if $children}
- <div class="sub-classes">
- {if $is_interface}
- <h4>Direct Known Sub-interfaces:</h4>
- {else}
- <h4>Direct Known Sub-classes:</h4>
- {/if}
-
- <div><small>
- {section name=child loop=$children}
- {if !$smarty.section.child.first}
- , {$children[child].link}
- {else}
- {$children[child].link}
- {/if}
- {/section}
- </small></div>
- </div>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_tags.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_tags.tpl
deleted file mode 100644
index 221830c4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/_tags.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="tag-list">
- {section name=tag loop=$tags}
- {if $tags[tag].keyword != "abstract" &&
- $tags[tag].keyword != "access" &&
- $tags[tag].keyword != "static" &&
- $tags[tag].keyword != "version"
- }
-
- <strong>{$tags[tag].keyword|capitalize}:</strong>
- {$tags[tag].data}<br />
- {/if}
- {/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/basicindex.tpl
deleted file mode 100644
index 37e94343..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/basicindex.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-{section name=letter loop=$letters}
- [ <a href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a> ]
-{/section}
-
-{section name=index loop=$index}
- <hr />
- <a name="{$index[index].letter}"></a>
- <div>
- <h2>{$index[index].letter}</h2>
- <dl>
- {section name=contents loop=$index[index].index}
- <dt><b>{$index[index].index[contents].name}</b></dt>
- <dd>{$index[index].index[contents].listing}</dd>
- {/section}
- </dl>
- </div>
- <a href="{$indexname}.html#top">top</a><br>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/blank.tpl
deleted file mode 100644
index b503c142..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/blank.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<div align="center"><h1>{$maintitle}</h1></div>
-<b>Welcome to {$package}!</b><br />
-<br />
-This documentation was generated by <a href="{$phpdocwebsite}">phpDocumentor v{$phpdocversion}</a><br />
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/class.tpl
deleted file mode 100644
index e791bbba..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/class.tpl
+++ /dev/null
@@ -1,29 +0,0 @@
-{include file="header.tpl" eltype="class" hasel=true contents=$classcontents}
-
-<h1>{if $is_interface}Interface{else}Class{/if} {$class_name}</h1>
-
-{*inheritence tree*}
-<div class="inheritence-tree">
- <pre>{section name=tree loop=$class_tree.classes}{if $smarty.section.tree.last}<strong>{$class_tree.classes[tree]}</strong>{else}{$class_tree.classes[tree]}{/if}{$class_tree.distance[tree]}{/section}</pre>
-</div>
-
-{include file="_sub_classes.tpl"}
-{include file="_class_description.tpl"}
-{include file="_inherited_constants.tpl"}
-
-{include file="_constructor_summary.tpl"}
-{* include file="_destructor_summary.tpl" *}
-
-{include file="_method_summary.tpl"}
-
-{include file="_inherited_methods.tpl"}
-{include file="_constant_summary.tpl"}
-{include file="_constructor_details.tpl"}
-
-{* include file="_destructor_details.tpl" *}
-
-{include file="_method_details.tpl"}
-
-{include file="_constant_details.tpl"}
-
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classleft.tpl
deleted file mode 100644
index c07fc33a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classleft.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{foreach key=subpackage item=files from=$classleftindex}
- <div class="package">
- {if $subpackage != ""}{$subpackage}<br />{/if}
- {section name=files loop=$files}
- {if $subpackage != ""}&nbsp;&nbsp;{/if}
- {if $files[files].link != ''}<a href="{$files[files].link}">{/if}{$files[files].title}{if $files[files].link != ''}</a>{/if}<br />
- {/section}
- </div>
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classtrees.tpl
deleted file mode 100644
index 4020e3a8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/classtrees.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<h1>{$title}</h1>
-{section name=classtrees loop=$classtrees}
-<hr />
-<div class="classtree">Root class {$classtrees[classtrees].class}</div><br>
-{$classtrees[classtrees].class_tree}
-{/section}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/const.tpl
deleted file mode 100644
index 88856c4b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/const.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{section name=consts loop=$consts}
-{if $show == 'summary'}
- var {$consts[consts].const_name}, {$consts[consts].sdesc}<br>
-{else}
- <a name="{$consts[consts].const_dest}"></a>
- <p></p>
- <h4>{$consts[consts].const_name} = <span class="value">{$consts[consts].const_value|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</span></h4>
- <p>[line {if $consts[consts].slink}{$consts[consts].slink}{else}{$consts[consts].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$consts[consts].sdesc desc=$consts[consts].desc tags=$consts[consts].tags}
-
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div><br />
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/define.tpl
deleted file mode 100644
index 04ce5b48..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/define.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-{if count($defines) > 0}
-{section name=def loop=$defines}
-{if $show == 'summary'}
-define constant <a href="{$defines[def].id}">{$defines[def].define_name}</a> = {$defines[def].define_value}, {$defines[def].sdesc}<br>
-{else}
- <hr />
- <a name="{$defines[def].define_link}"></a>
- <h3>{$defines[def].define_name} <span class="smalllinenumber">[line {if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}]</span></h3>
- <div class="tags">
- <table width="90%" border="0" cellspacing="0" cellpadding="1"><tr><td class="code_border">
- <table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td class="code">
- <code>{$defines[def].define_name} = {$defines[def].define_value}</code>
- </td></tr></table>
- </td></tr></table>
-
- {include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags}
- <br />
- {if $defines[def].define_conflicts.conflict_type}
- <p><b>Conflicts with defines:</b>
- {section name=me loop=$defines[def].define_conflicts.conflicts}
- {$defines[def].define_conflicts.conflicts[me]}<br />
- {/section}
- </p>
- {/if}
-{* original {if $defines[def].define_conflicts != ""
- <b>Conflicts:</b> {$defines[def].define_conflicts<br /><br />
- {/if *}
- </div>
- <div class="top">[ <a href="#top">Top</a> ]</div><br /><br />
-{/if}
-{/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/docblock.tpl
deleted file mode 100644
index 09a603f8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/docblock.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-{if $sdesc != ''}{$sdesc|default:''}<br /><br />{/if}
-{if $desc != ''}{$desc|default:''}<br />{/if}
-{if count($tags) > 0}
-<br /><br />
-<h4>Tags:</h4>
-<div class="tags">
-<table border="0" cellspacing="0" cellpadding="0">
-{section name=tag loop=$tags}
- <tr>
- <td><b>{$tags[tag].keyword}:</b>&nbsp;&nbsp;</td><td>{$tags[tag].data}</td>
- </tr>
-{/section}
-</table>
-</div>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/elementindex.tpl
deleted file mode 100644
index 175a5136..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/elementindex.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<a name="top"></a>
-<h1>Index of all elements</h1>
-{include file="basicindex.tpl" indexname="elementindex"}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/errors.tpl
deleted file mode 100644
index 1576a822..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/errors.tpl
+++ /dev/null
@@ -1,21 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-{section name=files loop=$files}
-<a href="#{$files[files].file}">{$files[files].file}</a><br>
-{/section}
-{foreach key=file item=issues from=$all}
-<a name="{$file}"></a>
-<h1>{$file}</h1>
-{if count($issues.warnings)}
-<h2>Warnings:</h2><br>
-{section name=warnings loop=$issues.warnings}
-<b>{$issues.warnings[warnings].name}</b> - {$issues.warnings[warnings].listing}<br>
-{/section}
-{/if}
-{if count($issues.errors)}
-<h2>Errors:</h2><br>
-{section name=errors loop=$issues.errors}
-<b>{$issues.errors[errors].name}</b> - {$issues.errors[errors].listing}<br>
-{/section}
-{/if}
-{/foreach}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/examplesource.tpl
deleted file mode 100644
index fb85654b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/examplesource.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl" title=$title}
-<h1 align="center">{$title}</h1>
-<div class="php">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/fileleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/fileleft.tpl
deleted file mode 100644
index 50f108d7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/fileleft.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{foreach key=subpackage item=files from=$fileleftindex}
- {if $subpackage != ""}subpackage <b>{$subpackage}</b><br>{/if}
- <div class="package">
- {section name=files loop=$files}
- {if $files[files].link != ''}<a href="{$files[files].link}">{/if}
- {$files[files].title}
- {if $files[files].link != ''}</a>{/if}<br>
- {/section}
- </div><br />
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/filesource.tpl
deleted file mode 100644
index b23076a0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/filesource.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{capture name="tutle"}File Source for {$name}{/capture}
-{include file="header.tpl" title=$smarty.capture.tutle}
-<h1 align="center">Source for file {$name}</h1>
-<p>Documentation is available at {$docs}</p>
-<div class="php">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/footer.tpl
deleted file mode 100644
index 68135cd6..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/footer.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
- <!-- content end --></td></tr></table>
- </td>
- </tr>
-</table>
-
-</div><!-- main -->
-
-<div id="footer">
- <a href="/tos/">Terms of Service</a> |
- <a href="/support/">Contact Us</a>
- <br/>
- Copyright &copy; 2006-2007 by the PRADO Group.<br/>
- <a title="Powered by PRADO" href="http://www.pradosoft.com/"><img src="http://www.pradosoft.com/images/powered2.gif" style="border-width:0px;" alt="Powered by PRADO" /></a>
-</div>
-
-</div><!-- page -->
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-186303-3";
-urchinTracker();
-</script>
-
-</body>
-</html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/function.tpl
deleted file mode 100644
index 098aeb17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/function.tpl
+++ /dev/null
@@ -1,48 +0,0 @@
-{section name=func loop=$functions}
-{if $show == 'summary'}
-function {$functions[func].id}, {$functions[func].sdesc}<br />
-{else}
- <hr />
- <a name="{$functions[func].function_dest}"></a>
- <h3>{$functions[func].function_name} <span class="smalllinenumber">[line {if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}]</span></h3>
- <div class="function">
- <table width="90%" border="0" cellspacing="0" cellpadding="1"><tr><td class="code_border">
- <table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td class="code">
- <code>{$functions[func].function_return} {if $functions[func].ifunction_call.returnsref}&amp;{/if}{$functions[func].function_name}(
-{if count($functions[func].ifunction_call.params)}
-{section name=params loop=$functions[func].ifunction_call.params}
-{if $smarty.section.params.iteration != 1}, {/if}{if $functions[func].ifunction_call.params[params].default != ''}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].default != ''} = {$functions[func].ifunction_call.params[params].default|escape:"html"}]{/if}
-{/section}
-{/if})</code>
- </td></tr></table>
- </td></tr></table><br />
-
- {include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags}
- <br /><br />
- {if $functions[func].function_conflicts.conflict_type}
- <p><b>Conflicts with functions:</b>
- {section name=me loop=$functions[func].function_conflicts.conflicts}
- {$functions[func].function_conflicts.conflicts[me]}<br />
- {/section}
- </p>
- {/if}
-{* original {if $functions[func].function_conflicts != ""
- <b>Conflicts:</b> {$functions[func].function_conflicts<br /><br />
- {/if *}
-
- {if count($functions[func].params) > 0}
- <h4>Parameters</h4>
- <table border="0" cellspacing="0" cellpadding="0">
- {section name=params loop=$functions[func].params}
- <tr>
- <td class="type">{$functions[func].params[params].datatype}&nbsp;&nbsp;</td>
- <td><b>{$functions[func].params[params].var}</b>&nbsp;&nbsp;</td>
- <td>{$functions[func].params[params].data}</td>
- </tr>
- {/section}
- </table>
- {/if}
- <div class="top">[ <a href="#top">Top</a> ]</div><br /><br />
- </div>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/global.tpl
deleted file mode 100644
index 1053f748..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/global.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-{if count($globals) > 0}
-{section name=glob loop=$globals}
-{if $show == 'summary'}
-global variable <a href="{$globals[glob].id}">{$globals[glob].global_name}</a> = {$globals[glob].global_value}, {$globals[glob].sdesc}<br>
-{else}
- <hr />
- <a name="{$globals[glob].global_link}"></a>
- <h4><i>{$globals[glob].global_type}</i> {$globals[glob].global_name} <span class="smalllinenumber">[line {if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}]</span></h4>
- <div class="tags">
- {if $globals[glob].sdesc != ""}
- {include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags}
- {/if}
-
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><b>Default value:</b>&nbsp;&nbsp;</td>
- <td>{$globals[glob].global_value|replace:" ":"&nbsp;"|replace:"\n":"<br />\n"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</td>
- </tr>
- {if $globals[glob].global_conflicts.conflict_type}
- <tr>
- <td><b>Conflicts with globals:</b>&nbsp;&nbsp;</td>
- <td>
- {section name=me loop=$globals[glob].global_conflicts.conflicts}
- {$globals[glob].global_conflicts.conflicts[me]}<br />
- {/section}
- </td>
- </tr>
- {/if}
-{* original {if $globals[glob].global_conflicts != ""
- <tr>
- <td><b>Conflicts:</b>&nbsp;&nbsp;</td>
- <td>{$globals[glob].global_conflicts</td>
- </tr>
- {/if *}
- </table>
- </div><br /><br />
- <div class="top">[ <a href="#top">Top</a> ]</div><br /><br />
-{/if}
-{/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/header.tpl
deleted file mode 100644
index 659168cf..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/header.tpl
+++ /dev/null
@@ -1,113 +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" xml:lang="en" >
- <head>
- <title>PRADO API Manual: {$title}</title>
- <meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT"/>
- <meta http-equiv="Pragma" content="no-cache"/>
- <meta http-equiv="Cache-Control" content="no-cache"/>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <meta http-equiv="content-language" content="en"/>
- <meta name="Keywords" content="PRADO PHP framework component template delphi asp.net event property OOP PHP5 object oriented programming Web programming development" />
- <meta name="Description" content="PRADO is a component-based and event-driven framework for Web application development in PHP 5." />
- <meta name="Author" content="Qiang Xue" />
- <meta name="Subject" content="Web programming, PHP framework" />
- <meta name="Language" content="en" />
- <link rel="Shortcut Icon" href="/favicon.ico" />
- <link rel="stylesheet" type="text/css" href="/css/style.css" />
- <link rel="stylesheet" type="text/css" href="/css/manual.css" />
- </head>
- <body>
- <div id="page">
- <div id="header">
- <div id="logo"><img src="/css/pradoheader.gif" alt="PRADO Component Framework for PHP 5" /></div>
- <div id="mainmenu">
- <ul>
- <li><a href="/">Home</a></li>
- <li><a href="/about/" >About</a></li>
- <li><a href="/testimonials/" >Testimonials</a></li>
- <li><a href="/demos/" >Demos</a></li>
- <li><a href="/download/" >Download</a></li>
- <li><a href="/documentation/" class="active">Documentation</a></li>
- <li><a href="/forum/" >Forum</a></li>
- <li><a href="http://code.google.com/p/prado3/updates/list">Development</a></li>
- </ul>
- </div><!-- mainmenu -->
- </div><!-- header -->
- <div id="main">
- <div id="navbar">
- <ul>
- <li><a href="/tutorials/">Tutorials</a></li>
- <li><a href="/docs/classdoc/">Class Docs</a></li>
- <li><a href="/docs/manual/" class="active">API Manual</a></li>
- <li><a href="/wiki/">Wiki</a></li>
- </ul>
- </div>
- <table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="200" id="infobar">
-{if count($ric) >= 1}
- <div id="ric">
-{section name=ric loop=$ric}
- <p><a href="{$subdir}{$ric[ric].file}">{$ric[ric].name}</a></p>
-{/section}
- </div>
-{/if}
- <b>Packages:</b><br />
-{section name=packagelist loop=$packageindex}
- <a href="{$subdir}{$packageindex[packagelist].link}">{$packageindex[packagelist].title}</a><br />
-{/section}
- <br /><br />
-{if $tutorials}
- <b>Tutorials/Manuals:</b><br />
-{if $tutorials.pkg}
- <strong>Package-level:</strong>
-{section name=ext loop=$tutorials.pkg}
- {$tutorials.pkg[ext]}
-{/section}
-{/if}
-{if $tutorials.cls}
- <strong>Class-level:</strong>
-{section name=ext loop=$tutorials.cls}
- {$tutorials.cls[ext]}
-{/section}
-{/if}
-{if $tutorials.proc}
- <strong>Procedural-level:</strong>
-{section name=ext loop=$tutorials.proc}
- {$tutorials.proc[ext]}
-{/section}
-{/if}
-{/if}
-{if !$noleftindex}{assign var="noleftindex" value=false}{/if}
-{if !$noleftindex}
-{*
-{if $compiledfileindex}
- <b>Files:</b><br />
- {eval var=$compiledfileindex}
-{/if}
-*}
-{if $compiledclassindex}
- <b>Classes:</b><br />
- {eval var=$compiledclassindex}
-{/if}
-{/if}
- </td>
- <td>
- <table cellpadding="10" cellspacing="0" width="100%" border="0">
- <tr>
- <td valign="top" align="center">
- <form type="get" action="/docs/manual/search.php">
- Keyword <input type="text" name="keyword" size="50" />
- <input type="submit" value="Search" />
- </form>
- </td>
- </tr>
- <tr>
- <td valign="top"><!-- content begin -->
-{*
-{if !$hasel}{assign var="hasel" value=false}{/if}
-{if $hasel}
- <h1>{$eltype|capitalize}: {$class_name}</h1>
- Source Location: {$source_location}<br /><br />
-{/if}
-*}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/include.tpl
deleted file mode 100644
index cff067db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/include.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{if count($includes) > 0}
-<h4>Includes:</h4>
-<div class="tags">
-{section name=includes loop=$includes}
-{$includes[includes].include_name}({$includes[includes].include_value}) [line {if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}]<br />
-{include file="docblock.tpl" sdesc=$includes[includes].sdesc desc=$includes[includes].desc tags=$includes[includes].tags}
-{/section}
-</div>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/index.tpl
deleted file mode 100644
index 60c74b47..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/index.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{include file="header.tpl"}
-{if $contents}
-{$contents}
-{else}
-{include file="blank.tpl"}
-{/if}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/background.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/background.png
deleted file mode 100644
index d6f36f60..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/background.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/bg_left.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/bg_left.png
deleted file mode 100644
index 19fdf05d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/bg_left.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/empty.png
deleted file mode 100644
index a9f29bb1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/manual.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/manual.css
deleted file mode 100644
index 8aaa937d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/manual.css
+++ /dev/null
@@ -1,260 +0,0 @@
-/* thanks to symfony for a great base template for phpdoc */
-/* symfony-project.com */
-
-#page
-{
- width: 99%;
-}
-
-div.credit
-{
- font-size: 10px;
- color: #888;
-}
-
-.inherited-methods
-{
- background-color: #ddd;
- font-size: 1.0em;
- margin-top: 10px;
- width: 100%;
-}
-
-.inherited-methods td
-{
- background-color: #FFFFFF;
- font-family: "courier new", courier;
- font-size: 1.1em;
- padding: 5px;
-}
-
-.inherited-methods th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- padding: 5px;
- text-align: left;
-}
-
-.method-detail
-{
- font-size: 1.0em;
-}
-
-.method-detail a
-{
- font-weight: bold;
-}
-
-.method-detail td
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
- padding-top: 10px;
- vertical-align: top;
-}
-
-.method-details
-{
- background-color: #ddd;
- font-size: 1.0em;
- width: 100%;
-}
-
-.method-details td
-{
- background-color: #FFFFFF;
-}
-
-.method-details td.method-data
-{
- padding: 5px;
-}
-
-.method-details h2
-{
- color: #750000;
-}
-
-.method-details th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.method-summary
-{
- background-color: #aaa;
- font-size: 1.0em;
- width: 100%;
-}
-
-.method-summary td
-{
- background-color: #FFFFFF;
- padding: 5px;
-}
-
-.method-summary td a
-{
- font-weight: bold;
-}
-
-.method-summary td.type
-{
- font-family: "courier new", courier;
- font-size: 1.0em;
- text-align: right;
- vertical-align: top;
-}
-
-.method-summary div.declaration
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
-}
-
-.method-summary th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.method-summary th.small
-{
- font-size: 1.0em;
-}
-
-.method-summary tr.reference td {
- background-color: #FFEDED;
-}
-
-
-.constant-details
-{
- background-color: #ddd;
- font-size: 1.0em;
- width: 100%;
-}
-
-.constant-details h3
-{
- color: #750000;
-}
-
-.constant-details td
-{
- background-color: #FFFFFF;
- padding: 5px;
-}
-
-.constant-details th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.constant-summary
-{
- background-color: #ddd;
- font-size: 1.0em;
- width: 100%;
-}
-
-.constant-summary td
-{
- background-color: #FFFFFF;
- padding: 5px;
-}
-
-.constant-summary td.name a
-{
- font-family: "courier new", courier;
- font-size: 1.0em;
- font-weight: bold;
-}
-
-.constant-summary td.type
-{
- font-family: "courier new", courier;
- font-size: 1.0em;
-}
-
-.constant-summary th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- font-size: 1.2em;
- padding: 5px;
- text-align: left;
-}
-
-.inherited-constants
-{
- background-color: #eee;
- font-size: 1.0em;
- margin-top: 10px;
- width: 100%;
-}
-
-.inherited-constants td
-{
- background-color: #FFFFFF;
- font-family: "courier new", courier;
- font-size: 1.1em;
- padding: 5px;
-}
-
-.inherited-constants th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- padding: 5px;
- text-align: left;
-}
-
-.class-declaration
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
-}
-
-.class-description
-{
- background-color: #F0F0F0;
- margin-top: 10px;
- padding: 1px 8px 1px 8px;
- margin-bottom: 5px;
-}
-
-.inheritence-tree pre
-{
- margin-bottom: 0;
-}
-
-.sub-classes h4
-{
- margin: 10px 0 0 0;
-}
-
-.sub-classes div
-{
- font-family: "courier new", courier;
- font-size: 1.1em;
- margin: 5px 0 0 40px;
-}
-
-.sub-classes div small
-{
- font-size: 1.0em;
-}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/style.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/style.css
deleted file mode 100644
index 918d43e4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/style.css
+++ /dev/null
@@ -1,598 +0,0 @@
-/**
- * PradoSoft profile by Carl G. Mathisen and Stefan A. Petrov
- * http://decart.no
- */
-
-body
-{
- text-align: center;
-}
-
-body, div, span, p, input
-{
- font-family: Verdana, sans-serif, Arial;
- font-size: 10pt;
- color: #333333;
-}
-
-h1, h2, h3, h4
-{
- font-family: Verdana, Helvetica, Arial, Lucida Grande, Trebuchet MS;
- padding: 0px;
- margin: 0px;
- margin-bottom: 10px;
- color: #821B18;
- font-weight: normal;
-}
-
-h2
-{
- font-size: 18px;
-}
-
-h3
-{
- font-size: 16px;
-}
-
-div
-{
- text-align: left;
-}
-
-.instructions
-{
- background-color: #EEEEEE;
-}
-
-img
-{
- border: none;
-}
-
-a
-{
- color: #CD2C27;
- text-decoration: none;
-}
-
-a:hover
-{
- color: #821B18;
- text-decoration: underline;
-}
-
-#page
-{
- margin: 0 auto;
- padding: 0;
- position: relative;
-}
-
-#header
-{
- position: relative;
- height: 98px;
-}
-
-#logo
-{
- height: 99px;
-}
-
-/* main page */
-
-div.intro
-{
- height: 190px;
- background-image: url('bigmantis.jpg');
- background-repeat: no-repeat;
- background-position: top right;
- background-color: #fff;
-}
-
-div.statements
-{
- height: 135px;
- background-image: url('statementsbg.gif');
- background-repeat: repeat-x;
- position: relative;
- border-bottom : 1px solid #EEE;
-}
-
-div.statements div
-{
- position: absolute;
- width: 250px;
- top: 20px;
-}
-
-div.statements div p
-{
- font-size: 13px;
- color: #818181;
-}
-
-div.statements div.whatis
-{
- left: 20px;
-}
-
-div.statements div.whatreq
-{
- left: 290px;
-}
-
-div.statements div.cani
-{
- left: 600px;
- width: 210px;
-}
-
-/* navbar */
-#navbar
-{
- border-bottom: 2px solid #E9EEEF;
- height: 30px;
- margin-bottom: 20px;
-}
-
-#navbar ul
-{
- margin-left: 0;
- padding-left: 0;
- display: inline;
-}
-
-#navbar ul li
-{
- margin-left: 0px;
- list-style: none;
- display: inline;
-}
-
-#navbar ul li a
-{
- display: block;
- float: left;
- font-size: 14px;
- font-weight: bold;
- padding-right: 14px;
- padding-top: 5px;
- color: #CD2B26;
- text-decoration: none;
- height: 29px;
-}
-
-#navbar ul li a.active, #navbar ul li a.hover
-{
- color: #821B18;
-}
-
-/* infobar */
-div#infobar
-{
- float: right;
- width: 200px;
- padding-left: 20px;
- border-left: 2px solid #E9EEEF;
-}
-
-div#infobar div
-{
- margin-bottom: 20px;
-}
-
-div#infobar div#featured img
-{
- margin-top: 10px;
-}
-
-/* articles */
-
-div#articles
-{
- width: 560px;
- float: left;
-}
-
-/* article */
-
-div.article
-{
- margin-bottom: 40px;
-}
-
-div.article .date
-{
- color: #9F9291;
-}
-
-div.article .more
-{
- margin-right: 10px;
- display: block;
- text-align: right;
-}
-
-.logo
-{
- position: absolute;
- margin-left: 15px;
- margin-top: 0px;
- z-index: 1;
-}
-
-#main
-{
- padding: 20px;
- padding-top: 20px;
- background-color: #fff;
-}
-
-div.mantis
-{
- height: 190px;
- background-color: #fff;
- border-bottom: 1px solid #DCDCDC;
-}
-
-div.releases
-{
- float: left;
- width: 240px;
- height: 190px;
-}
-
-div.releases div.official
-{
- width: 190px;
- position: relative;
- left: 52px;
- top: 128px;
- font-size: 8pt;
- color: #6D6D6D;
-}
-
-div.releases div.official a
-{
- display: block;
-}
-
-div.whyprado
-{
- display: block;
- float: left;
-}
-
-div.whyprado ul.list
-{
- margin-top: 40px;
- margin-left: 40px;
-}
-
-div.whyprado ul.list li
-{
- display: block;
- margin: 5px;
- padding: 0px;
- font-size: 18px;
- background-repeat: no-repeat;
- background-position: bottom left;
- padding-left: 30px;
- list-style: none;
-}
-
-
-#footer
-{
- border-top: 1px solid #e9eeef;
- background-color: #fff;
- clear: both;
- color: #A7A7A7;
- font-size: 8pt;
- text-align: center;
- padding-top: 10px;
- padding-bottom: 30px;
- background-repeat: repeat-x;
- background-position: bottom;
-}
-
-#features
-{
- margin-left: 610px;
- padding: 10px;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #BEDD75;
- color: #344A1E;
- font-size: 9pt;
-}
-
-#features ul
-{
- margin: 10px;
- padding: 0px;
-}
-
-#features ul li
-{
- font-size: 8pt;
- padding: 0px;
- margin: 0px;
- margin-top: 8px;
-}
-
-#features h3
-{
- margin: 0px;
- padding: 0px;
- font-size: 10pt;
- color: #292E1D;
- text-align: center;
- border-bottom: 1px solid silver;
-}
-
-#news
-{
- float: left;
- width: 590px;
-}
-
-.newstitle
-{
- font-size: 12pt;
- font-weight: bold;
- color: #555;
- margin-top: 10px;
- margin-bottom: 0px;
- border-bottom: 1px solid silver;
-}
-
-.newscontentmore
-{
- margin-right: 10px;
- display: block;
- color: #50811A;
- text-align: right;
-}
-
-.newscontentmore:hover
-{
- color: red;
-}
-
-.newstime
-{
- margin: 0px;
- font-size:0.8em;
- color:#aaa;
- padding-left:10px;
- text-align: right;
-}
-
-.newscontent
-{
- margin-top: 5px;
-}
-
-#leftpanel
-{
- float: left;
- width: 550px;
-}
-
-#topics
-{
- border: 1px solid #804040;
- margin-left: 610px;
- padding-bottom: 10px;
-}
-
-#topicsheader
-{
- text-align:center;
- font-weight:bold;
- background-color:#804040;
- color:#FFFFBC;
- padding: 3px;
- margin-bottom:0px;
-}
-
-.topicitem
-{
- padding: 5px;
-}
-
-.topicitem a:hover
-{
- text-decoration: underline;
-}
-
-.topicitem p
-{
- margin: 0px;
- font-size:0.8em;
- color:#aaa;
- padding-left:10px;
- white-space:nowrap;
-}
-
-.reference
-{
-}
-
-.reference img
-{
- margin: 10px;
-}
-
-.reference h3
-{
-}
-
-
-.download
-{
- width: 100%;
- background-color: #aaa;
-}
-
-.download td
-{
- background-color: #FFFFFF;
- padding: 5px;
- font-size: 9pt;
-}
-
-.download td a
-{
- font-weight: bold;
-}
-
-.download td.type
-{
- font-family: "courier new", courier;
- text-align: right;
- vertical-align: top;
-}
-
-.download div.declaration
-{
- font-family: "courier new", courier;
-}
-
-
-.download th
-{
- background-color: #F0F0F0;
- font-weight: bold;
- padding: 5px;
- text-align: left;
-}
-
-.download th.small
-{
- font-size: 1.0em;
-}
-
-.download tr.reference td {
- background-color: #FFEDED;
-}
-
-
-.doc-title
-{
- font-size: 14pt;
- font-weight: bold;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.doc-subtitle
-{
- font-size: 11pt;
- font-weight: bold;
- background-color: #EEE;
- padding: 5px;
- margin-top: 20px;
-}
-
-.doc-namespace
-{
- font-size: 8pt;
-}
-
-
-.doc-menu
-{
-}
-
-.doc-classes
-{
-}
-
-.doc-ancestors
-{
- font-size: 8pt;
-}
-
-.doc-properties
-{
- font-size: 9pt;
-}
-
-.doc-properties table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-properties td, .doc-properties th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-events
-{
- font-size: 9pt;
-}
-
-.doc-events table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-events td, .doc-events th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-methods
-{
- font-size: 9pt;
-}
-
-.doc-methods table
-{
- border-collapse: collapse;
- background-color: silver;
- width: 100%;
-}
-
-.doc-methods td, .doc-methods th
-{
- padding: 3px;
- vertical-align: top;
- background-color: white;
- border: 1px solid silver;
-}
-
-.doc-derived
-{
-}
-
-.doc-inherited
-{
-}
-
-.doc-native td
-{
- background-color: lightyellow;
-}
-
-.forum-topic
-{
- padding: 10px;
- border:1px solid silver;
- margin-bottom: 10px;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/stylesheet.css
deleted file mode 100644
index 2c08f94f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/media/stylesheet.css
+++ /dev/null
@@ -1,129 +0,0 @@
-BODY, DIV, SPAN, PRE, CODE, TD, TH {
- line-height: 140%;
- font-size: 10pt;
- font-family: verdana,arial,sans-serif;
-}
-
-H1 {
- font-size: 12pt;
-}
-
-H4 {
- font-size: 10pt;
- font-weight: bold;
-}
-
-P.label {
- margin-bottom: 5px;
-}
-P.dt {
- margin-top: 0px;
- margin-bottom: 0px;
-}
-P.indent {
- margin-top: 0px;
- margin-left: 20px;
- margin-bottom: 0px;
-}
-P.method {
- background-color: #f0f0f0;
- padding: 2px;
- border: 1px #cccccc solid;
-}
-
-A {
- text-decoration: none;
-}
-
-A:link{
- color: #336699;
-}
-
-A:visited {
- color: #003366;
-}
-
-A:active, A:hover {
- color: #6699CC;
-}
-
-A:hover{
- text-decoration: underline;
-}
-
-SPAN.type {
- color: #336699;
- font-size: xx-small;
- font-weight: normal;
- }
-
-PRE {
- background-color: #EEEEEE;
- padding: 10px;
- border-width: 1px;
- border-color: #336699;
- border-style: solid;
-}
-
-HR {
- color: #336699;
- background-color: #336699;
- border-width: 0px;
- height: 1px;
- filter: Alpha (opacity=100,finishopacity=0,style=1);
-}
-
-DIV.sdesc {
- font-weight: bold;
- background-color: #EEEEEE;
- padding: 10px;
- border-width: 1px;
- border-color: #336699;
- border-style: solid;
-}
-
-DIV.desc {
- font-family: monospace;
- background-color: #EEEEEE;
- padding: 10px;
- border-width: 1px;
- border-color: #336699;
- border-style: solid;
-}
-
-SPAN.code {
- font-family: monospace;
-}
-
-CODE.varsummarydefault{
- padding: 1px;
- border-width: 1px;
- border-style: dashed;
- border-color: #336699;
-}
-
-UL.tute {
- margin: 0px;
- padding: 0px;
- padding-left: 5px;
- }
-
-LI.tute {
- line-height: 140%;
- font-size: 10pt;
- text-indent: -15px;
- padding-bottom: 2px;
- padding-left: 14px;
-}
-
-.small{
- font-size: 9pt;
-}
-
-
-.tute-tag { color: #009999 }
-.tute-attribute-name { color: #0000FF }
-.tute-attribute-value { color: #0099FF }
-.tute-entity { font-weight: bold; }
-.tute-comment { font-style: italic }
-.tute-inline-tag { color: #636311; font-weight: bold }
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/method.tpl
deleted file mode 100644
index 07cb76e5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/method.tpl
+++ /dev/null
@@ -1,58 +0,0 @@
-{section name=methods loop=$methods}
-{if $show == 'summary'}
-method {$methods[methods].function_call}, {$methods[methods].sdesc}<br />
-{else}
- <hr />
- <a name="{$methods[methods].method_dest}"></a>
- <h3>{if $methods[methods].ifunction_call.constructor}constructor {elseif $methods[methods].ifunction_call.destructor}destructor {else}method {/if}{$methods[methods].function_name} <span class="smalllinenumber">[line {if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}]</span></h3>
- <div class="function">
- <table width="90%" border="0" cellspacing="0" cellpadding="1"><tr><td class="code_border">
- <table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td class="code">
- <code>{$methods[methods].function_return} {if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}(
-{if count($methods[methods].ifunction_call.params)}
-{section name=params loop=$methods[methods].ifunction_call.params}
-{if $smarty.section.params.iteration != 1}, {/if}
-{if $methods[methods].ifunction_call.params[params].default != ''}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].default != ''} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if})</code>
- </td></tr></table>
- </td></tr></table><br />
-
- {include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags}<br /><br />
-
-{if $methods[methods].descmethod}
- <p>Overridden in child classes as:<br />
- {section name=dm loop=$methods[methods].descmethod}
- <dl>
- <dt>{$methods[methods].descmethod[dm].link}</dt>
- <dd>{$methods[methods].descmethod[dm].sdesc}</dd>
- </dl>
- {/section}</p>
-{/if}
-{* original {if $methods[methods].descmethod != ""
- {$methods[methods].descmethod<br /><br />
- {/if *}
-{if $methods[methods].method_overrides}Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})<br /><br />{/if}
-{* original {if $methods[methods].method_overrides != ""
- {$methods[methods].method_overrides<br /><br />
- {/if *}
-
- {if count($methods[methods].params) > 0}
- <h4>Parameters:</h4>
- <div class="tags">
- <table border="0" cellspacing="0" cellpadding="0">
- {section name=params loop=$methods[methods].params}
- <tr>
- <td class="type">{$methods[methods].params[params].datatype}&nbsp;&nbsp;</td>
- <td><b>{$methods[methods].params[params].var}</b>&nbsp;&nbsp;</td>
- <td>{$methods[methods].params[params].data}</td>
- </tr>
- {/section}
- </table>
- </div><br />
- {/if}
- <div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/packages.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/packages.tpl
deleted file mode 100644
index b48b6719..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/packages.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-{section name=packages loop=$packages}
-<a href="{$packages[packages].link}">{$packages[packages].title}</a>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/page.tpl
deleted file mode 100644
index 6dd8683d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/page.tpl
+++ /dev/null
@@ -1,31 +0,0 @@
-{include file="header.tpl" eltype="Procedural file" class_name=$name hasel=true contents=$pagecontents}
-
-<br>
-<br>
-
-{if $classes}
-<div class="contents">
-{if $tutorial}
-<span class="maintutorial">Main Tutorial: {$tutorial}</span>
-{/if}
-<h2>Classes:</h2>
-{section name=classes loop=$classes}
-<dt>{$classes[classes].link}</dt>
- <dd>{$classes[classes].sdesc}</dd>
-{/section}
-</div><br /><br />
-{/if}
-
-<h2>Page Details:</h2>
-{include file="docblock.tpl" type="page"}
-<br /><br />
-{include file="include.tpl"}
-<br /><br />
-{include file="global.tpl"}
-<br /><br />
-{include file="define.tpl"}
-<br />
-{include file="function.tpl"}
-
-{include file="footer.tpl"}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/pkgelementindex.tpl
deleted file mode 100644
index 753ad7cf..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/pkgelementindex.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{include file="header.tpl"}
-<a name="top"></a>
-<h1>Element index for package {$package}</h1>
-{include file="basicindex.tpl" indexname=elementindex_$package}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/ric.tpl
deleted file mode 100644
index c4cb83f9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<h1 align="center">{$name}</h1>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/todolist.tpl
deleted file mode 100644
index 5ab0bca2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/todolist.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{include file="header.tpl" title="Todo List"}
-<div align="center"><h1>Todo List</h1></div>
-{foreach from=$todos key=todopackage item=todo}
-<h2>{$todopackage}</h2>
-{section name=todo loop=$todo}
-<h3>{$todo[todo].link}</h3>
-<ul>
-{section name=t loop=$todo[todo].todos}
- <li>{$todo[todo].todos[t]}</li>
-{/section}
-</ul>
-{/section}
-{/foreach}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial.tpl
deleted file mode 100644
index 22c71c3b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-{include file="header.tpl" title=$title}
-{if $nav}
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
-<tr>
-<td width="10%" align="left" valign="bottom">{if $prev}<a href=
-"{$prev}">{/if}Prev{if $prev}</a>{/if}</td>
-<td width="80%" align="center" valign="bottom"></td>
-<td width="10%" align="right" valign="bottom">{if $next}<a href=
-"{$next}">{/if}Next{if $next}</a>{/if}</td>
-</tr>
-</table>
-{/if}
-{$contents}
-{if $nav}
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
-<tr>
-<td width="33%" align="left" valign="top">{if $prev}<a href="{$prev}">{/if}
-Prev{if $prev}</a>{/if}</td>
-<td width="34%" align="center" valign="top">{if $up}<a href=
-"{$up}">Up</a>{else}&nbsp;{/if}</td>
-<td width="33%" align="right" valign="top">{if $next}<a href=
-"{$next}">{/if}Next{if $next}</a>{/if}</td>
-</tr>
-
-<tr>
-<td width="33%" align="left" valign="top">{if $prevtitle}{$prevtitle}{/if}</td>
-<td width="34%" align="center" valign="top">{if $uptitle}{$uptitle}{/if}</td>
-<td width="33%" align="right" valign="top">{if $nexttitle}{$nexttitle}{/if}</td>
-</tr>
-</table>
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_toc.tpl
deleted file mode 100644
index 1db34438..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,29 +0,0 @@
-{if count($toc)}
-<h1 align="center">Table of Contents</h1>
-<ul>
-{section name=toc loop=$toc}
-{if $toc[toc].tagname == 'refsect1'}
-{assign var="context" value="refsect1"}
-{$toc[toc].link}<br />
-{/if}
-{if $toc[toc].tagname == 'refsect2'}
-{assign var="context" value="refsect2"}
-&nbsp;&nbsp;&nbsp;{$toc[toc].link}<br />
-{/if}
-{if $toc[toc].tagname == 'refsect3'}
-{assign var="context" value="refsect3"}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$toc[toc].link}<br />
-{/if}
-{if $toc[toc].tagname == 'table'}
-{if $context == 'refsect2'}&nbsp;&nbsp;&nbsp;{/if}
-{if $context == 'refsect3'}&nbsp;&nbsp;&nbsp;{/if}
-Table: {$toc[toc].link}
-{/if}
-{if $toc[toc].tagname == 'example'}
-{if $context == 'refsect2'}&nbsp;&nbsp;&nbsp;{/if}
-{if $context == 'refsect3'}&nbsp;&nbsp;&nbsp;{/if}
-Table: {$toc[toc].link}
-{/if}
-{/section}
-</ul>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_tree.tpl
deleted file mode 100644
index faf7bcef..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<ul>
- <li type="square"><a href="{$main.link}">{$main.title|strip_tags}</a>
-{if $kids}{$kids}</li>{/if}
-</ul>
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/var.tpl
deleted file mode 100644
index c76929fe..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PradoSoft/templates/var.tpl
+++ /dev/null
@@ -1,28 +0,0 @@
-{section name=vars loop=$vars}
-{if $show == 'summary'}
- var {$vars[vars].var_name}, {$vars[vars].sdesc}<br>
-{else}
- <a name="{$vars[vars].var_dest}"></a>
- <p></p>
- <h4>{$vars[vars].var_name} = <span class="value">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</span></h4>
- <p>[line {if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}
-
- <br />
- <div class="tags">
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><b>Type:</b>&nbsp;&nbsp;</td>
- <td>{$vars[vars].var_type}</td>
- </tr>
- {if $vars[vars].var_overrides != ""}
- <tr>
- <td><b>Overrides:</b>&nbsp;&nbsp;</td>
- <td>{$vars[vars].var_overrides}</td>
- </tr>
- {/if}
- </table>
- </div><br /><br />
- <div class="top">[ <a href="#top">Top</a> ]</div><br />
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc
deleted file mode 100644
index d1b8751c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc
+++ /dev/null
@@ -1,1747 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-/**
- * HTML original framed output converter, modified to use Smarty Template.
- * This Converter takes output from the {@link Parser} and converts it to HTML-ready output for use with {@link Smarty}.
- *
- * @package Converters
- * @subpackage HTMLframes
- * @see parserDocBlock, parserInclude, parserPage, parserClass, parserDefine, parserFunction, parserMethod, parserVar
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: HTMLframesConverter.inc,v 1.1 2005/10/17 18:37:03 jeichorn Exp $
- */
-/**
- * HTML output converter.
- * This Converter takes output from the {@link Parser} and converts it to HTML-ready output for use with {@link Smarty}.
- *
- * @package Converters
- * @subpackage HTMLframes
- * @see parserDocBlock, parserInclude, parserPage, parserClass, parserDefine, parserFunction, parserMethod, parserVar
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.2
- * @version $Id: HTMLframesConverter.inc,v 1.1 2005/10/17 18:37:03 jeichorn Exp $
- */
-class HTMLframesConverter extends Converter
-{
- /**
- * Smarty Converter wants elements sorted by type as well as alphabetically
- * @see Converter::$sort_page_contents_by_type
- * @var boolean
- */
- var $sort_page_contents_by_type = true;
- /** @var string */
- var $outputformat = 'HTML';
- /** @var string */
- var $name = 'frames';
- /**
- * indexes of elements by package that need to be generated
- * @var array
- */
- var $leftindex = array('classes' => true, 'pages' => true, 'functions' => true, 'defines' => false, 'globals' => false);
-
- /**
- * output directory for the current procedural page being processed
- * @var string
- */
- var $page_dir;
-
- /**
- * target directory passed on the command-line.
- * {@link $targetDir} is malleable, always adding package/ and package/subpackage/ subdirectories onto it.
- * @var string
- */
- var $base_dir;
-
- /**
- * output directory for the current class being processed
- * @var string
- */
- var $class_dir;
-
- /**
- * array of converted package page names.
- * Used to link to the package page in the left index
- * @var array Format: array(package => 1)
- */
- var $package_pages = array();
-
- /**
- * controls formatting of parser informative output
- *
- * Converter prints:
- * "Converting /path/to/file.php... Procedural Page Elements... Classes..."
- * Since HTMLdefaultConverter outputs files while converting, it needs to send a \n to start a new line. However, if there
- * is more than one class, output is messy, with multiple \n's just between class file output. This variable prevents that
- * and is purely cosmetic
- * @var boolean
- */
- var $juststarted = false;
-
- /**
- * contains all of the template procedural page element loop data needed for the current template
- * @var array
- */
- var $current;
-
- /**
- * contains all of the template class element loop data needed for the current template
- * @var array
- */
- var $currentclass;
- var $wrote = false;
- var $ric_set = array();
-
- /**
- * sets {@link $base_dir} to $targetDir
- * @see Converter()
- */
- function HTMLframesConverter(&$allp, &$packp, &$classes, &$procpages, $po, $pp, $qm, $targetDir, $templateDir, $title)
- {
- Converter::Converter($allp, $packp, $classes, $procpages,$po, $pp, $qm, $targetDir, $templateDir, $title);
- $this->base_dir = $targetDir;
- }
-
- /**
- * @deprecated in favor of PHP 4.3.0+ tokenizer-based source highlighting
- */
- function unmangle($sourcecode)
- {
- $sourcecode = str_replace('<code>','<pre>',$sourcecode);
- $sourcecode = str_replace('</code>','</pre>',$sourcecode);
- $sourcecode = str_replace('<br />',"\n",$sourcecode);
- $sourcecode = str_replace('&nbsp;',' ',$sourcecode);
- $sourcecode = str_replace('&lt;','<',$sourcecode);
- $sourcecode = str_replace('&gt;','>',$sourcecode);
- $sourcecode = str_replace('&amp;','&',$sourcecode);
- return $sourcecode;
- }
-
- /**
- * @param string full path to the source file
- * @param string fully highlighted source code
- */
- function writeSource($path, $value)
- {
- $templ = &$this->newSmarty();
- $pathinfo = $this->proceduralpages->getPathInfo($path, $this);
- $templ->assign('source',$value);
- $templ->assign('package',$pathinfo['package']);
- $templ->assign('subpackage',$pathinfo['subpackage']);
- $templ->assign('name',$pathinfo['name']);
- $templ->assign('source_loc',$pathinfo['source_loc']);
- $templ->assign('docs',$pathinfo['docs']);
- $templ->assign("subdir",'../');
- $templ->register_outputfilter('HTMLframes_outputfilter');
- $this->setTargetDir($this->getFileSourcePath($this->base_dir));
- phpDocumentor_out("\n");
- $this->setSourcePaths($path);
- $this->writefile($this->getFileSourceName($path).'.html',$templ->fetch('filesource.tpl'));
- }
-
- function writeExample($title, $path, $source)
- {
- $templ = &$this->newSmarty();
- $templ->assign('source',$source);
- if (empty($title))
- {
- $title = 'example';
- addWarning(PDERROR_EMPTY_EXAMPLE_TITLE, $path, $title);
- }
- $templ->assign('title',$title);
- $templ->assign('file',$path);
- $templ->assign("subdir",'../');
- $templ->register_outputfilter('HTMLframes_outputfilter');
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . '__examplesource');
- phpDocumentor_out("\n");
- $this->writefile('exsource_'.$path.'.html',$templ->fetch('examplesource.tpl'));
- }
-
- function getExampleLink($path, $title)
- {
- return $this->returnLink('{$subdir}__examplesource' . PATH_DELIMITER . 'exsource_'.$path.'.html',$title);
- }
-
- function getSourceLink($path)
- {
- return $this->returnLink($this->getFileSourcePath('{$subdir}') .
- PATH_DELIMITER . $this->getFileSourceName($path).'.html','Source Code for this file');
- }
-
- /**
- * Return a line of highlighted source code with formatted line number
- *
- * If the $path is a full path, then an anchor to the line number will be
- * added as well
- * @param integer line number
- * @param string highlighted source code line
- * @param false|string full path to @filesource file this line is a part of,
- * if this is a single line from a complete file.
- * @return string formatted source code line with line number
- */
- function sourceLine($linenumber, $line, $path = false)
- {
- $extra = '';
- if (strlen(str_replace("\n", '', $line)) == 0) {
- $extra = '&nbsp;';
- }
- if ($path)
- {
- return '<li>' . $this->getSourceAnchor($path, $linenumber) .
- str_replace("\n",'',$line) . $extra .
- "</li>\n";
- } else
- {
- return '<li>' . str_replace("\n",'',$line) . "$extra</li>\n";
- }
- }
-
- /**
- * Used to convert the <<code>> tag in a docblock
- * @param string
- * @param boolean
- * @return string
- */
- function ProgramExample($example, $tutorial = false, $inlinesourceparse = null/*false*/,
- $class = null/*false*/, $linenum = null/*false*/, $filesourcepath = null/*false*/)
- {
- return '<pre><ol>' . parent::ProgramExample($example, $tutorial, $inlinesourceparse, $class, $linenum, $filesourcepath)
- .'</ol></pre>';
- }
-
- /**
- * @param string
- */
- function TutorialExample($example)
- {
- $trans = $this->template_options['desctranslate'];
- $this->template_options['desctranslate'] = array();
- $example = '<ol>' . parent::TutorialExample($example)
- .'</ol>';
- $this->template_options['desctranslate'] = $trans;
- if (!isset($this->template_options['desctranslate'])) return $example;
- if (!isset($this->template_options['desctranslate']['code'])) return $example;
- $example = $this->template_options['desctranslate']['code'] . $example;
- if (!isset($this->template_options['desctranslate']['/code'])) return $example;
- return $example . $this->template_options['desctranslate']['/code'];
- }
-
- /**
- * Retrieve a Converter-specific anchor to a segment of a source code file
- * parsed via a {@tutorial tags.filesource.pkg} tag.
- * @param string full path to source file
- * @param string name of anchor
- * @param string link text, if this is a link
- * @param boolean returns either a link or a destination based on this
- * parameter
- * @return string link to an anchor, or the anchor
- */
- function getSourceAnchor($sourcefile,$anchor,$text = '',$link = false)
- {
- if ($link)
- return $this->returnLink($this->getFileSourcePath('{$subdir}') .
- PATH_DELIMITER . $this->getFileSourceName($sourcefile).'.html#a'.$anchor, $text);
- else
- return '<a name="a'.$anchor.'"></a>';
- }
-
- function getCurrentPageLink()
- {
- return $this->curname . '.html';
- }
-
- /**
- * Uses htmlspecialchars() on the input
- */
- function postProcess($text)
- {
- return htmlspecialchars($text);
- }
-
- /**
- * Use the template tutorial_toc.tpl to generate a table of contents for HTML
- * @return string table of contents formatted for use in the current output format
- * @param array format: array(array('tagname' => section, 'link' => returnsee link, 'id' => anchor name, 'title' => from title tag),...)
- */
- function formatTutorialTOC($toc)
- {
- $template = &$this->newSmarty();
- $template->assign('toc',$toc);
- return $template->fetch('tutorial_toc.tpl');
- }
-
- function &SmartyInit(&$templ)
- {
- if (!isset($this->package_index))
- foreach($this->all_packages as $key => $val)
- {
- if (isset($this->pkg_elements[$key]))
- {
- if (!isset($start)) $start = $key;
- $this->package_index[] = array('link' => "li_$key.html", 'title' => $key);
- }
- }
- $templ->assign("packageindex",$this->package_index);
- $templ->assign("subdir",'');
- return $templ;
- }
-
- /**
- * Writes out the template file of {@link $class_data} and unsets the template to save memory
- * @see registerCurrentClass()
- * @see parent::endClass()
- */
- function endClass()
- {
- $a = '../';
- if (!empty($this->subpackage)) $a .= '../';
- if ($this->juststarted)
- {
- $this->juststarted = false;
- phpDocumentor_out("\n");
- flush();
- }
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir);
- $this->class_data->assign("subdir",$a);
- $this->class_data->register_outputfilter('HTMLframes_outputfilter');
- $this->writefile($this->class . '.html',$this->class_data->fetch('class.tpl'));
- unset($this->class_data);
- }
-
- /**
- * Writes out the template file of {@link $page_data} and unsets the template to save memory
- * @see registerCurrent()
- * @see parent::endPage()
- */
- function endPage()
- {
- $this->package = $this->curpage->package;
- $this->subpackage = $this->curpage->subpackage;
- $a = '../';
- if (!empty($this->subpackage)) $a .= '../';
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
- $this->page_data->assign("package",$this->package);
- $this->page_data->assign("subdir",$a);
- $this->page_data->register_outputfilter('HTMLframes_outputfilter');
- $this->writefile($this->page . '.html',$this->page_data->fetch('page.tpl'));
- unset($this->page_data);
- }
-
- /**
- * @param string
- * @param string
- * @return string &lt;a href="'.$link.'">'.$text.'</a&gt;
- */
- function returnLink($link,$text)
- {
- return '<a href="'.$link.'">'.$text.'</a>';
- }
-
- function makeLeft()
- {
- foreach($this->page_elements as $package => $o1)
- {
- foreach($o1 as $subpackage => $links)
- {
- for($i=0;$i<count($links);$i++)
- {
- $left[$package][$subpackage]['files'][] =
- array("link" => $this->getId($links[$i]), "title" => $links[$i]->name);
- }
- }
- }
- foreach($this->class_elements as $package => $o1)
- {
- foreach($o1 as $subpackage => $links)
- {
- for($i=0;$i<count($links);$i++)
- {
- $class = $this->classes->getClassByPackage($links[$i]->name, $links[$i]->package);
- if ($class && isset($class->docblock) && $class->docblock->hasaccess)
- $left[$package][$subpackage]['classes'][] =
- array("link" => $this->getId($links[$i]),
- "title" => $links[$i]->name,
- "access" => $class->docblock->tags['access'][0]->value,
- "abstract" => isset ($class->docblock->tags['abstract'][0]));
- else
- $left[$package][$subpackage]['classes'][] =
- array("link" => $this->getId($links[$i]),
- "title" => $links[$i]->name,
- "access" => 'public',
- "abstract" => isset ($class->docblock->tags['abstract'][0]));
- }
- }
- }
- foreach($this->function_elements as $package => $o1)
- {
- foreach($o1 as $subpackage => $links)
- {
- for($i=0;$i<count($links);$i++)
- {
- $left[$package][$subpackage]['functions'][] =
- array("link" => $this->getId($links[$i]), "title" => $links[$i]->name);
- }
- }
- }
- $ret = array();
- foreach($left as $package => $r)
- {
- $pd = 'blank';
- if (isset($this->package_pages[$package])) $pd = $package.'/package_'.$package.'.html';
- if (!isset($r['']))
- {
- $pt = false;
- $ptnoa = false;
- $ptt = $package;
- if ($t = $this->hasTutorial('pkg',$package,$package,''))
- {
- $pt = $t->getLink($this);
- $ptnoa = $this->getId($t->getLink($this,true));
- $ptt = $t->getTitle($this);
- }
- $tutes = array();
- foreach($this->tutorial_tree as $root => $tr)
- {
- if ($tr['tutorial']->package == $package && $tr['tutorial']->subpackage == $subpackage)
- $tutes[$tr['tutorial']->tutorial_type][] = $this->getTutorialTree($tr['tutorial']);
- }
- if (isset($this->childless_tutorials[$package][$subpackage]))
- {
- foreach($this->childless_tutorials[$package][$subpackage] as $ext => $other)
- {
- foreach($other as $tutorial)
- {
- $tutes[$tutorial->tutorial_type][] = $this->getTutorialTree($tutorial);
- }
- }
- }
- $ret[$package][] =
- array(
- 'package' => $package,
- 'subpackage' => '',
- 'packagedoc' => $pd,
- 'packagetutorial' => $pt,
- 'packagetutorialnoa' => $ptnoa,
- 'packagetutorialtitle' => $ptt,
- 'files' => array(),
- 'functions' => array(),
- 'classes' => array(),
- 'tutorials' => $tutes,
- );
- }
- foreach($r as $subpackage => $info)
- {
- $my = array();
- $my['package'] = $package;
- if (isset($this->package_pages[$package]))
- $my['packagedoc'] = $pd;
- else
- $my['packagedoc'] = 'blank';
- $my['subpackage'] = $subpackage;
- if (empty($subpackage))
- {
- if ($t = $this->hasTutorial('pkg',$package,$package,$subpackage))
- {
- $my['packagetutorial'] = $t->getLink($this);
- $my['packagetutorialnoa'] = $this->getId($t->getLink($this,true));
- $my['packagetutorialtitle'] = $t->getTitle($this);
- } else
- {
- $my['packagetutorial'] = '<a href="blank.html">No Package-Level Tutorial</a>';
- $my['packagetutorialnoa'] = 'blank.html';
- $my['packagetutorialtitle'] = $package;
- }
- } else
- {
- if ($t = $this->hasTutorial('pkg',$subpackage,$package,$subpackage))
- {
- $my['subpackagetutorial'] = $this->returnSee($this->getTutorialLink($t));
- $my['subpackagetutorialnoa'] = $this->getId($t->getLink($this,true));
- $my['subpackagetutorialtitle'] = $t->getTitle($this);
- } else
- {
- $my['subpackagetutorial'] = false;
- $my['subpackagetutorialnoa'] = false;
- $my['subpackagetutorialtitle'] = $subpackage;
- }
- }
- $tutes = array();
- foreach($this->tutorial_tree as $root => $tr)
- {
- if ($tr['tutorial']->package == $package && $tr['tutorial']->subpackage == $subpackage)
- {
- $tutes[$tr['tutorial']->tutorial_type][] = $this->getTutorialTree($tr['tutorial']);
- }
- }
- $my['tutorials'] = $tutes;
- $my['files'] = $my['classes'] = $my['functions'] = array();
- if (isset($info['files']))
- $my['files'] = $info['files'];
- if (isset($info['classes']))
- $my['classes'] = $info['classes'];
- if (isset($info['functions']))
- $my['functions'] = $info['functions'];
- $ret[$package][] = $my;
- }
- }
- return $ret;
- }
-
- function getTutorialTree($tutorial,$k = false)
- {
- $ret = '';
- if (is_object($tutorial)) $tree = parent::getTutorialTree($tutorial); else $tree = $tutorial;
-// debug($this->vardump_tree($tree));exit;
- if (!$tree)
- {
- $template = &$this->newSmarty();
- $template->assign('subtree',false);
- $template->assign('name',str_replace('.','',$tutorial->name));
- $template->assign('parent',false);
- $template->assign('haskids',false);
- $template->assign('kids','');
- $link = new tutorialLink;
- $t = $tutorial;
- $link->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($this));
- $main = array('link' => $this->getId($link), 'title' => $link->title);
- $template->assign('main',$main);
- return $template->fetch('tutorial_tree.tpl');
- }
- if (isset($tree['kids']))
- {
- foreach($tree['kids'] as $subtree)
- {
- $ret .= $this->getTutorialTree($subtree, true);
- }
- }
- $template = &$this->newSmarty();
- $template->assign('subtree',$k);
- $template->assign('name',str_replace('.','',$tree['tutorial']->name));
- $template->assign('parent',($k ? str_replace('.','',$tree['tutorial']->parent->name) : false));
- $template->assign('haskids',strlen($ret));
- $template->assign('kids',$ret);
- $link = new tutorialLink;
- $t = $tree['tutorial'];
- $link->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($this));
- $main = array('link' => $this->getId($link), 'title' => $link->title);
- $template->assign('main',$main);
- $ret = $template->fetch('tutorial_tree.tpl');
- return $ret;
- }
-
- /**
- * HTMLdefaultConverter chooses to format both package indexes and the complete index here
- *
- * This function formats output for the elementindex.html and pkgelementindex.html template files. It then
- * writes them to the target directory
- * @see generateElementIndex(), generatePkgElementIndex()
- */
- function formatPkgIndex()
- {
- list($package_indexes,$packages,$mletters) = $this->generatePkgElementIndexes();
- for($i=0;$i<count($package_indexes);$i++)
- {
- $template = &$this->newSmarty();
- $this->package = $package_indexes[$i]['package'];
- $this->subpackage = '';
- $template->assign("index",$package_indexes[$i]['pindex']);
- $template->assign("package",$package_indexes[$i]['package']);
- $template->assign("letters",$mletters[$package_indexes[$i]['package']]);
- $template->register_outputfilter('HTMLframes_outputfilter');
- $this->setTargetDir($this->base_dir);
- $this->writefile('elementindex_'.$package_indexes[$i]['package'].'.html',$template->fetch('pkgelementindex.tpl'));
- }
- phpDocumentor_out("\n");
- flush();
- }
-
- /**
- * HTMLdefaultConverter uses this function to format template index.html and packages.html
- *
- * This function generates the package list from {@link $all_packages}, eliminating any
- * packages that don't have any entries in their package index (no files at all, due to @ignore
- * or other factors). Then it uses the default package name as the first package index to display.
- * It sets the right pane to be either a blank file with instructions on making package-level docs,
- * or the package-level docs for the default package.
- * @global string Used to set the starting package to display
- */
- function formatIndex()
- {
- global $phpDocumentor_DefaultPackageName;
- list($elindex,$mletters) = $this->generateElementIndex();
- $template = &$this->newSmarty();
- $template->assign("index",$elindex);
- $template->assign("letters",$mletters);
- $template->register_outputfilter('HTMLframes_outputfilter');
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- $this->writefile('elementindex.html',$template->fetch('elementindex.tpl'));
- usort($this->package_index,"HTMLframes_pindexcmp");
- $index = &$this->newSmarty();
- foreach($this->all_packages as $key => $val)
- {
- if (isset($this->pkg_elements[$key]))
- {
- if (!isset($start)) $start = $key;
- if (!isset($this->package_pages[$key])) $this->writeNewPPage($key);
- }
- }
- // Created index.html
- if (isset($this->pkg_elements[$phpDocumentor_DefaultPackageName])) $start = $phpDocumentor_DefaultPackageName;
- $this->package = $start;
- $this->subpackage = '';
- $index->assign("package_count",count($this->pkg_elements));
- if (count($this->ric_set))
- $index->assign("package_count",2);
- $index->assign("date",date("r",time()));
- $index->assign("title",$this->title);
- $index->assign("start","li_$start.html");
- $index->register_outputfilter('HTMLframes_outputfilter');
- if (isset($this->tutorials[$start]['']['pkg'][$start . '.pkg']))
- {
- $index->assign("blank",$start.'/tutorial_'.$start.'.pkg');
- } elseif (isset($this->package_pages[$start]))
- {
- $index->assign("blank",$start.'/package_'.$start);
- }
- else
- {
- $index->assign("blank","blank");
- $blank = &$this->newSmarty();
- $blank->assign('package',$phpDocumentor_DefaultPackageName);
- $this->setTargetDir($this->base_dir);
- $this->writefile("blank.html",$blank->fetch('blank.tpl'));
- }
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- $this->writefile("index.html",$index->fetch('index.tpl'));
-
- // Create package index
- $package = &$this->newSmarty();
- $package->assign('ric',array());
- if (isset($this->ric_set))
- {
- foreach($this->ric_set as $name => $u)
- {
- $package->append('ric',array('file' => 'ric_'.$name.'.html','name' => $name));
- }
- }
- $package->assign("packages",$this->package_index);
- $package->register_outputfilter('HTMLframes_outputfilter');
- $this->writefile("packages.html",$package->fetch('top_frame.tpl'));
- unset($index);
- }
-
- function writeNewPPage($key)
- {
- return;
- $template = &$this->newSmarty();
- $this->package = $key;
- $this->subpackage = '';
- $template->assign("date",date("r",time()));
- $template->assign("title",$this->title);
- $template->assign("package",$key);
- $template->register_outputfilter('HTMLframes_outputfilter');
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
-
- $this->writefile("li_$key.html",$template->fetch('index.tpl'));
- unset($template);
- }
-
- /**
- * Generate indexes for li_package.html and classtree output files
- *
- * This function generates the li_package.html files from the template file left.html. It does this by
- * iterating through each of the $page_elements, $class_elements and $function_elements arrays to retrieve
- * the pre-sorted {@link abstractLink} descendants needed for index generation. Conversion of these links to
- * text is done by {@link returnSee()}. The {@link $local} parameter is set to false to ensure that paths are correct.
- *
- * Then it uses {@link generateFormattedClassTrees()} to create class trees from the template file classtrees.html. Output
- * filename is classtrees_packagename.html. This function also unsets {@link $elements} and {@link $pkg_elements} to free
- * up the considerable memory these two class vars use
- * @see $page_elements, $class_elements, $function_elements
- */
- function formatLeftIndex()
- {
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir);
- if (0)//!isset($this->left))
- {
- debug("Nothing parsed, check the command-line");
- die();
- }
- $x = $this->makeLeft();
- foreach($this->all_packages as $package => $rest)
- {
- if (!isset($this->pkg_elements[$package])) continue;
- $template = &$this->newSmarty();
- $template->assign("info",$x[$package]);
- $template->assign('package',$package);
- $template->assign("hastutorials",isset($this->tutorials[$package]));
- $template->assign('hastodos',count($this->todoList));
- $template->assign('todolink','todolist.html');
- $template->assign("classtreepage","classtrees_$package");
- $template->assign("elementindex","elementindex_$package");
- $template->register_outputfilter('HTMLframes_outputfilter');
- if (isset($this->package_pages[$package]))
- {
- $template->assign("packagedoc",$package.'/package_' . $package . '.html');
- } else
- {
- $template->assign("packagedoc",false);
- }
- $this->writefile("li_$package.html",$template->fetch('left_frame.tpl'));
-
- // Create class tree page
- $template = &$this->newSmarty();
- $template->assign("classtrees",$this->generateFormattedClassTrees($package));
- $template->assign("package",$package);
- $template->register_outputfilter('HTMLframes_outputfilter');
- $this->writefile("classtrees_$package.html",$template->fetch('classtrees.tpl'));
- phpDocumentor_out("\n");
- flush();
- }
- // free up considerable memory
- unset($this->elements);
- unset($this->pkg_elements);
- }
-
- /**
- * This function takes an {@link abstractLink} descendant and returns an html link
- *
- * @param abstractLink a descendant of abstractlink should be passed, and never text
- * @param string text to display in the link
- * @param boolean this parameter is not used, and is deprecated
- * @param boolean determines whether the returned text is enclosed in an <a> tag
- */
- function returnSee(&$element, $eltext = false, $with_a = true)
- {
- if (!is_object($element) || !$element) return false;
- if (!$with_a) return $this->getId($element, false);
- if (!$eltext)
- {
- $eltext = '';
- switch($element->type)
- {
- case 'tutorial' :
- $eltext = strip_tags($element->title);
- break;
- case 'method' :
- case 'var' :
- case 'const' :
- $eltext .= $element->class.'::';
- case 'page' :
- case 'define' :
- case 'class' :
- case 'function' :
- case 'global' :
- default :
- $eltext .= $element->name;
- if ($element->type == 'function' || $element->type == 'method') $eltext .= '()';
- break;
- }
- }
- return '<a href="'.$this->getId($element).'">'.$eltext.'</a>';
- }
-
- function getId($element, $fullpath = true)
- {
- if (phpDocumentor_get_class($element) == 'parserdata')
- {
- $element = $this->addLink($element->parent);
- $elp = $element->parent;
- } elseif (is_a($element, 'parserbase'))
- {
- $elp = $element;
- $element = $this->addLink($element);
- }
- $c = '';
- if (!empty($element->subpackage))
- {
- $c = '/'.$element->subpackage;
- }
- $b = '{$subdir}';
- switch ($element->type)
- {
- case 'page' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->fileAlias.'.html';
- return 'top';
- break;
- case 'define' :
- case 'global' :
- case 'function' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->fileAlias.'.html#'.$element->type.$element->name;
- return $element->type.$element->name;
- break;
- case 'class' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->name.'.html';
- return 'top';
- break;
- case 'method' :
- case 'var' :
- case 'const' :
- if ($fullpath)
- return $b.$element->package.$c.'/'.$element->class.'.html#'.$element->type.$element->name;
- return $element->type.$element->name;
- break;
- case 'tutorial' :
- $d = '';
- if ($element->section)
- {
- $d = '#'.$element->section;
- }
- return $b.$element->package.$c.'/tutorial_'.$element->name.'.html'.$d;
- }
- }
-
- /**
- * Convert README/INSTALL/CHANGELOG file contents to output format
- * @param README|INSTALL|CHANGELOG
- * @param string contents of the file
- */
- function Convert_RIC($name, $contents)
- {
- $template = &$this->newSmarty();
- $template->assign('contents',$contents);
- $template->assign('name',$name);
- $this->setTargetDir($this->base_dir);
- $this->writefile('ric_'.$name . '.html',$template->fetch('ric.tpl'));
- $this->ric_set[$name] = true;
- }
-
- function ConvertTodoList()
- {
- $todolist = array();
- foreach($this->todoList as $package => $alltodos)
- {
- foreach($alltodos as $todos)
- {
- $converted = array();
- $converted['link'] = $this->returnSee($todos[0]);
- if (!is_array($todos[1]))
- {
- $converted['todos'][] = $todos[1]->Convert($this);
- } else
- {
- foreach($todos[1] as $todo)
- {
- $converted['todos'][] = $todo->Convert($this);
- }
- }
- $todolist[$package][] = $converted;
- }
- }
- $templ = &$this->newSmarty();
- $templ->assign('todos',$todolist);
- $templ->register_outputfilter('HTMLframes_outputfilter');
- $this->setTargetDir($this->base_dir);
- $this->writefile('todolist.html',$templ->fetch('todolist.tpl'));
- }
-
- /**
- * Create errors.html template file output
- *
- * This method takes all parsing errors and warnings and spits them out ordered by file and line number.
- * @global ErrorTracker We'll be using it's output facility
- */
- function ConvertErrorLog()
- {
- global $phpDocumentor_errors;
- $allfiles = array();
- $files = array();
- $warnings = $phpDocumentor_errors->returnWarnings();
- $errors = $phpDocumentor_errors->returnErrors();
- $template = &$this->newSmarty();
- foreach($warnings as $warning)
- {
- $file = '##none';
- $linenum = 'Warning';
- if ($warning->file)
- {
- $file = $warning->file;
- $allfiles[$file] = 1;
- $linenum .= ' on line '.$warning->linenum;
- }
- $files[$file]['warnings'][] = array('name' => $linenum, 'listing' => $warning->data);
- }
- foreach($errors as $error)
- {
- $file = '##none';
- $linenum = 'Error';
- if ($error->file)
- {
- $file = $error->file;
- $allfiles[$file] = 1;
- $linenum .= ' on line '.$error->linenum;
- }
- $files[$file]['errors'][] = array('name' => $linenum, 'listing' => $error->data);
- }
- $i=1;
- $af = array();
- foreach($allfiles as $file => $num)
- {
- $af[$i++] = $file;
- }
- $allfiles = $af;
- usort($allfiles,'strnatcasecmp');
- $allfiles[0] = "Post-parsing";
- foreach($allfiles as $i => $a)
- {
- $allfiles[$i] = array('file' => $a);
- }
- $out = array();
- foreach($files as $file => $data)
- {
- if ($file == '##none') $file = 'Post-parsing';
- $out[$file] = $data;
- }
- $template->assign("files",$allfiles);
- $template->assign("all",$out);
- $template->assign("title","phpDocumentor Parser Errors and Warnings");
- $this->setTargetDir($this->base_dir);
- $this->writefile("errors.html",$template->fetch('errors.tpl'));
- unset($template);
- phpDocumentor_out("\n\nTo view errors and warnings, look at ".$this->base_dir. PATH_DELIMITER . "errors.html\n");
- flush();
- }
-
- function getTutorialId($package,$subpackage,$tutorial,$id)
- {
- return $id;
- }
-
- function getCData($value)
- {
- return '<pre>'.htmlentities($value).'</pre>';
- }
-
- /**
- * Converts package page and sets its package as used in {@link $package_pages}
- * @param parserPackagePage
- */
- function convertPackagepage(&$element)
- {
- phpDocumentor_out("\n");
- flush();
- $this->package = $element->package;
- $this->subpackage = '';
- $contents = $element->Convert($this);
- $this->package_pages[$element->package] = str_replace('{$subdir}','../',$contents);
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package);
- $this->writeFile('package_'.$element->package.'.html',str_replace('{$subdir}','../',$contents));
- }
-
- /**
- * @param parserTutorial
- */
- function convertTutorial(&$element)
- {
- phpDocumentor_out("\n");
- flush();
- $template = &parent::convertTutorial($element);
- $a = '../';
- if ($element->subpackage) $a .= '../';
- $template->assign('subdir',$a);
- $template->register_outputfilter('HTMLframes_outputfilter');
- $contents = $template->fetch('tutorial.tpl');
- $a = '';
- if ($element->subpackage) $a = PATH_DELIMITER . $element->subpackage;
- phpDocumentor_out("\n");
- flush();
- $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package . $a);
- $this->writeFile('tutorial_'.$element->name.'.html',$contents);
- }
-
- /**
- * Converts class for template output
- * @see prepareDocBlock(), generateChildClassList(), generateFormattedClassTree(), getFormattedConflicts()
- * @see getFormattedInheritedMethods(), getFormattedInheritedVars()
- * @param parserClass
- */
- function convertClass(&$element)
- {
- parent::convertClass($element);
- $this->class_dir = $element->docblock->package;
- if (!empty($element->docblock->subpackage)) $this->class_dir .= PATH_DELIMITER . $element->docblock->subpackage;
- $a = '../';
- if ($element->docblock->subpackage != '') $a = "../$a";
-
- $this->class_data->assign('subdir',$a);
- $this->class_data->assign("title","Docs For Class " . $element->getName());
- $this->class_data->assign("page",$element->getName() . '.html');
- }
-
- /**
- * Converts class variables for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertVar(&$element)
- {
- parent::convertVar($element, array('var_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts class variables for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertConst(&$element)
- {
- parent::convertConst($element, array('const_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts class methods for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertMethod(&$element)
- {
- parent::convertMethod($element, array('method_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts function for template output
- * @see prepareDocBlock(), parserFunction::getFunctionCall(), getFormattedConflicts()
- * @param parserFunction
- */
- function convertFunction(&$element)
- {
- $funcloc = $this->getId($this->addLink($element));
- parent::convertFunction($element,array('function_dest' => $this->getId($element,false)));
- }
-
- /**
- * Converts include elements for template output
- * @see prepareDocBlock()
- * @param parserInclude
- */
- function convertInclude(&$element)
- {
- parent::convertInclude($element, array('include_file' => '_'.strtr($element->getValue(),array('"' => '', "'" => '','.' => '_'))));
- }
-
- /**
- * Converts defines for template output
- * @see prepareDocBlock(), getFormattedConflicts()
- * @param parserDefine
- */
- function convertDefine(&$element)
- {
- parent::convertDefine($element, array('define_link' => $this->getId($element,false)));
- }
-
- /**
- * Converts global variables for template output
- * @param parserGlobal
- */
- function convertGlobal(&$element)
- {
- parent::convertGlobal($element, array('global_link' => $this->getId($element,false)));
- }
-
- /**
- * converts procedural pages for template output
- * @see prepareDocBlock(), getClassesOnPage()
- * @param parserData
- */
- function convertPage(&$element)
- {
- parent::convertPage($element);
- $this->juststarted = true;
- $this->page_dir = $element->parent->package;
- if (!empty($element->parent->subpackage)) $this->page_dir .= PATH_DELIMITER . $element->parent->subpackage;
- // registering stuff on the template
- $this->page_data->assign("page",$this->getPageName($element) . '.html');
- $this->page_data->assign("title","Docs for page ".$element->parent->getFile());
- }
-
- function getPageName(&$element)
- {
- if (phpDocumentor_get_class($element) == 'parserpage') return '_'.$element->getName();
- return '_'.$element->parent->getName();
- }
-
- /**
- * returns an array containing the class inheritance tree from the root object to the class
- *
- * @param parserClass class variable
- * @return array Format: array(root,child,child,child,...,$class)
- * @uses parserClass::getParentClassTree()
- */
-
- function generateFormattedClassTree($class)
- {
- $tree = $class->getParentClassTree($this);
- $out = '';
- if (count($tree) - 1)
- {
- $result = array($class->getName());
- $parent = $tree[$class->getName()];
- $distance[] = '';
- while ($parent)
- {
- $x = $parent;
- if (is_object($parent))
- {
- $subpackage = $parent->docblock->subpackage;
- $package = $parent->docblock->package;
- $x = $parent;
- $x = $parent->getLink($this);
- if (!$x) $x = $parent->getName();
- }
- $result[] =
- $x;
- $distance[] =
- "\n%s|\n" .
- "%s--";
- if (is_object($parent))
- $parent = $tree[$parent->getName()];
- elseif (isset($tree[$parent]))
- $parent = $tree[$parent];
- }
- $nbsp = ' ';
- for($i=count($result) - 1;$i>=0;$i--)
- {
- $my_nbsp = '';
- for($j=0;$j<count($result) - $i;$j++) $my_nbsp .= $nbsp;
- $distance[$i] = sprintf($distance[$i],$my_nbsp,$my_nbsp);
- }
- return array('classes'=>array_reverse($result),'distance'=>array_reverse($distance));
- } else
- {
- return array('classes'=>$class->getName(),'distance'=>array(''));
- }
- }
-
- /** @access private */
- function sortVar($a, $b)
- {
- return strnatcasecmp($a->getName(),$b->getName());
- }
-
- /** @access private */
- function sortMethod($a, $b)
- {
- if ($a->isConstructor) return -1;
- if ($b->isConstructor) return 1;
- return strnatcasecmp($a->getName(),$b->getName());
- }
-
- /**
- * returns a template-enabled array of class trees
- *
- * @param string $package package to generate a class tree for
- * @see $roots, HTMLConverter::getRootTree()
- */
- function generateFormattedClassTrees($package)
- {
- if (!isset($this->roots[$package])) return array();
- $roots = $trees = array();
- $roots = $this->roots[$package];
- for($i=0;$i<count($roots);$i++)
- {
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- return $trees;
- }
-
- /**
- * return formatted class tree for the Class Trees page
- *
- * @param array $tree output from {@link getSortedClassTreeFromClass()}
- * @see Classes::$definitechild, generateFormattedClassTrees()
- * @return string
- */
- function getRootTree($tree,$package)
- {
- if (!$tree) return '';
- $my_tree = '';
- $cur = '#root';
- $lastcur = array(false);
- $kids = array();
- $dopar = false;
- if ($tree[$cur]['parent'])
- {
- $dopar = true;
- if (!is_object($tree[$cur]['parent']))
- {
-// debug("parent ".$tree[$cur]['parent']." not found");
- $my_tree .= '<li>' . $tree[$cur]['parent'] .'<ul>';
- }
- else
- {
-// debug("parent ".$this->returnSee($tree[$cur]['parent'])." in other package");
- $my_tree .= '<li>' . $this->returnSee($tree[$cur]['parent']);
- if ($tree[$cur]['parent']->package != $package) $my_tree .= ' <b>(Different package)</b><ul>';
- }
- }
- do
- {
-// fancy_debug($cur,$lastcur,$kids);
- if (count($tree[$cur]['children']))
- {
-// debug("$cur has children");
- if (!isset($kids[$cur]))
- {
-// debug("set $cur kids");
- $kids[$cur] = 1;
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
- $my_tree .= '<ul>'."\n";
- }
- array_push($lastcur,$cur);
- list(,$cur) = each($tree[$cur]['children']);
-// var_dump('listed',$cur);
- if ($cur)
- {
- $cur = $cur['package'] . '#' . $cur['class'];
-// debug("set cur to child $cur");
-// $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
- continue;
- } else
- {
-// debug("end of children for $cur");
- $cur = array_pop($lastcur);
- $cur = array_pop($lastcur);
- $my_tree .= '</ul></li>'."\n";
- if ($dopar && ($cur == '#root' || !$cur)) $my_tree .= '</ul></li>';
- }
- } else
- {
-// debug("$cur has no children");
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link'])."</li>";
- if ($dopar && $cur == '#root') $my_tree .= '</ul></li>';
- $cur = array_pop($lastcur);
- }
- } while ($cur);
- return $my_tree;
- }
- /**
- * Generate indexing information for given element
- *
- * @param parserElement descendant of parserElement
- * @see generateElementIndex()
- * @return array
- */
- function getIndexInformation($elt)
- {
- $Result['type'] = $elt->type;
- $Result['file_name'] = $elt->file;
- $Result['path'] = $elt->getPath();
-
- if (isset($elt->docblock))
- {
- $Result['description'] = $elt->docblock->getSDesc($this);
-
- if ($elt->docblock->hasaccess)
- $Result['access'] = $elt->docblock->tags['access'][0]->value;
- else
- $Result['access'] = 'public';
-
- $Result['abstract'] = isset ($elt->docblock->tags['abstract'][0]);
- }
- else
- $Result['description'] = '';
-
- $aa = $Result['description'];
- if (!empty($aa)) $aa = "<br>&nbsp;&nbsp;&nbsp;&nbsp;$aa";
-
- switch($elt->type)
- {
- case 'class':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Class';
- $Result['link'] = $this->getClassLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', class '.$Result['link']."$aa";
- break;
- case 'define':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Constant';
- $Result['link'] = $this->getDefineLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', constant '.$Result['link']."$aa";
- break;
- case 'global':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Global';
- $Result['link'] = $this->getGlobalLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', global variable '.$Result['link']."$aa";
- break;
- case 'function':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Function';
- $Result['link'] = $this->getFunctionLink($elt->getName(),
- $elt->docblock->package,
- $elt->getPath(),
- $elt->getName().'()');
- $Result['listing'] = 'in file '.$elt->file.', function '.$Result['link']."$aa";
- break;
- case 'method':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Method';
- $Result['link'] = $this->getMethodLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName().'()'
- );
- if ($elt->isConstructor) $Result['constructor'] = 1;
- $Result['listing'] = 'in file '.$elt->file.', method '.$Result['link']."$aa";
- break;
- case 'var':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Variable';
- $Result['link'] = $this->getVarLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', variable '.$Result['link']."$aa";
- break;
- case 'const':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Class Constant';
- $Result['link'] = $this->getConstLink($elt->getName(),
- $elt->class,
- $elt->docblock->package,
- $elt->getPath(),
- $elt->class.'::'.$elt->getName());
- $Result['listing'] = 'in file '.$elt->file.', class constant '.$Result['link']."$aa";
- break;
- case 'page':
- $Result['name'] = $elt->getFile();
- $Result['title'] = 'Page';
- $Result['link'] = $this->getPageLink($elt->getFile(),
- $elt->package,
- $elt->getPath(),
- $elt->getFile());
- $Result['listing'] = 'procedural page '.$Result['link'];
- break;
- case 'include':
- $Result['name'] = $elt->getName();
- $Result['title'] = 'Include';
- $Result['link'] = $elt->getValue();
- $Result['listing'] = 'include '.$Result['name'];
- break;
- }
-
- return $Result;
- }
- /**
- * Generate alphabetical index of all elements
- *
- * @see $elements, walk()
- */
- function generateElementIndex()
- {
- $elementindex = array();
- $letters = array();
- $used = array();
- foreach($this->elements as $letter => $nutoh)
- {
- foreach($this->elements[$letter] as $i => $yuh)
- {
- if ($this->elements[$letter][$i]->type != 'include')
- {
- if (!isset($used[$letter]))
- {
- $letters[]['letter'] = $letter;
- $elindex['letter'] = $letter;
- $used[$letter] = 1;
- }
-
- $elindex['index'][] = $this->getIndexInformation($this->elements[$letter][$i]);
- }
- }
- if (isset($elindex['index']))
- {
- $elementindex[] = $elindex;
- } else
- {
- unset($letters[count($letters) - 1]);
- }
- $elindex = array();
- }
- return array($elementindex,$letters);
- }
-
- function copyMediaRecursively($media,$targetdir,$subdir = '')
- {
- if (!is_array($media)) {
- return;
- }
- foreach($media as $dir => $files)
- {
- if ($dir === '/')
- {
- $this->copyMediaRecursively($files,$targetdir);
- } else
- {
- if (!is_numeric($dir))
- {
- // create the subdir
- phpDocumentor_out("creating $targetdir/$dir\n");
- Converter::setTargetDir($targetdir . PATH_DELIMITER . $dir);
- if (!empty($subdir)) $subdir .= PATH_DELIMITER;
- $this->copyMediaRecursively($files,"$targetdir/$dir",$subdir . $dir);
- } else
- {
- // copy the file
- phpDocumentor_out("copying $targetdir/".$files['file']."\n");
- $this->copyFile($files['file'],$subdir);
- }
- }
- }
- }
-
- /**
- * calls the converter setTargetDir, and then copies any template images and the stylesheet if they haven't been copied
- * @see Converter::setTargetDir()
- */
- function setTargetDir($dir)
- {
- Converter::setTargetDir($dir);
- if ($this->wrote) return;
- $this->wrote = true;
- $template_images = array();
- $stylesheets = array();
- $tdir = $dir;
- $dir = $this->templateDir;
- $this->templateDir = $this->templateDir.'templates/';
- $info = new Io;
- $this->copyMediaRecursively($info->getDirTree($this->templateDir.'media',$this->templateDir),$tdir);
- }
-
- /**
- * Generate alphabetical index of all elements by package and subpackage
- *
- * @param string $package name of a package
- * @see $pkg_elements, walk(), generatePkgElementIndexes()
- */
- function generatePkgElementIndex($package)
- {
-// var_dump($this->pkg_elements[$package]);
- $elementindex = array();
- $letters = array();
- $letterind = array();
- $used = array();
- $subp = '';
- foreach($this->pkg_elements[$package] as $subpackage => $els)
- {
- if (empty($els)) continue;
- if (!empty($subpackage)) $subp = " (<b>subpackage:</b> $subpackage)"; else $subp = '';
- foreach($els as $letter => $yuh)
- {
- foreach($els[$letter] as $i => $yuh)
- {
- if ($els[$letter][$i]->type != 'include')
- {
- if (!isset($used[$letter]))
- {
- $letters[]['letter'] = $letter;
- $letterind[$letter] = count($letters) - 1;
- $used[$letter] = 1;
- }
- $elindex[$letter]['letter'] = $letter;
-
- $elindex[$letter]['index'][] = $this->getIndexInformation($els[$letter][$i]);
- }
- }
- }
- }
- ksort($elindex);
- usort($letters,'HTMLframes_lettersort');
- if (isset($elindex))
- {
- while(list($letter,$tempel) = each($elindex))
- {
- if (!isset($tempel))
- {
- unset($letters[$letterind[$tempel['letter']]]);
- } else
- $elementindex[] = $tempel;
- }
- } else $letters = array();
- return array($elementindex,$letters);
- }
-
- /**
- *
- * @see generatePkgElementIndex()
- */
- function generatePkgElementIndexes()
- {
- $packages = array();
- $package_names = array();
- $pkg = array();
- $letters = array();
- foreach($this->pkg_elements as $package => $trash)
- {
- $pkgs['package'] = $package;
- $pkg['package'] = $package;
- list($pkg['pindex'],$letters[$package]) = $this->generatePkgElementIndex($package);
- if (count($pkg['pindex']))
- {
- $packages[] = $pkg;
- $package_names[] = $pkgs;
- }
- unset($pkgs);
- unset($pkg);
- }
- foreach($packages as $i => $package)
- {
- $pnames = array();
- for($j=0;$j<count($package_names);$j++)
- {
- if ($package_names[$j]['package'] != $package['package']) $pnames[] = $package_names[$j];
- }
- $packages[$i]['packageindexes'] = $pnames;
- }
- return array($packages,$package_names,$letters);
- }
-
- /**
- * @param string name of class
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the class's documentation
- * @see parent::getClassLink()
- */
- function getClassLink($expr,$package, $file = false,$text = false, $with_a = true)
- {
- $a = Converter::getClassLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text, $with_a);
- }
-
- /**
- * @param string name of function
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the function's documentation
- * @see parent::getFunctionLink()
- */
- function getFunctionLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getFunctionLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of define
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the define's documentation
- * @see parent::getDefineLink()
- */
- function getDefineLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getDefineLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of global variable
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the global variable's documentation
- * @see parent::getGlobalLink()
- */
- function getGlobalLink($expr,$package, $file = false,$text = false)
- {
- $a = Converter::getGlobalLink($expr,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of procedural page
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the procedural page's documentation
- * @see parent::getPageLink()
- */
- function getPageLink($expr,$package, $path = false,$text = false)
- {
- $a = Converter::getPageLink($expr,$package,$path);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of method
- * @param string class containing method
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the method's documentation
- * @see parent::getMethodLink()
- */
- function getMethodLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getMethodLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of var
- * @param string class containing var
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the var's documentation
- * @see parent::getVarLink()
- */
- function getVarLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getVarLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * @param string name of class constant
- * @param string class containing class constant
- * @param string package name
- * @param string full path to look in (used in index generation)
- * @param boolean deprecated
- * @param boolean return just the URL, or enclose it in an html a tag
- * @return mixed false if not found, or an html a link to the var's documentation
- * @see parent::getVarLink()
- */
- function getConstLink($expr,$class,$package, $file = false,$text = false)
- {
- $a = Converter::getConstLink($expr,$class,$package,$file);
- if (!$a) return false;
- return $this->returnSee($a, $text);
- }
-
- /**
- * does a nat case sort on the specified second level value of the array
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- */
- function rcNatCmp ($a, $b)
- {
- $aa = strtoupper($a[$this->rcnatcmpkey]);
- $bb = strtoupper($b[$this->rcnatcmpkey]);
-
- return strnatcasecmp($aa, $bb);
- }
-
- /**
- * does a nat case sort on the specified second level value of the array.
- * this one puts constructors first
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- */
- function rcNatCmp1 ($a, $b)
- {
- $aa = strtoupper($a[$this->rcnatcmpkey]);
- $bb = strtoupper($b[$this->rcnatcmpkey]);
-
- if (strpos($aa,'CONSTRUCTOR') === 0)
- {
- return -1;
- }
- if (strpos($bb,'CONSTRUCTOR') === 0)
- {
- return 1;
- }
- if (strpos($aa,strtoupper($this->class)) === 0)
- {
- return -1;
- }
- if (strpos($bb,strtoupper($this->class)) === 0)
- {
- return -1;
- }
- return strnatcasecmp($aa, $bb);
- }
-
- /**
- * This function is not used by HTMLdefaultConverter, but is required by Converter
- */
- function Output()
- {
- }
-}
-
-/**
- * @access private
- * @global string name of the package to set as the first package
- */
-function HTMLframes_pindexcmp($a, $b)
-{
- global $phpDocumentor_DefaultPackageName;
- if ($a['title'] == $phpDocumentor_DefaultPackageName) return -1;
- if ($b['title'] == $phpDocumentor_DefaultPackageName) return 1;
- return strnatcasecmp($a['title'],$b['title']);
-}
-
-/** @access private */
-function HTMLframes_lettersort($a, $b)
-{
- return strnatcasecmp($a['letter'],$b['letter']);
-}
-
-/** @access private */
-function HTMLframes_outputfilter($src, &$smarty)
-{
- return str_replace('{$subdir}',$smarty->_tpl_vars['subdir'],$src);
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini
deleted file mode 100644
index 73164a39..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini
+++ /dev/null
@@ -1,577 +0,0 @@
-preservedocbooktags = false
-
-;; used to highlight the {@source} inline tag, @filesource tag, and @example tag
-[highlightSourceTokens]
-;; format:
-;; T_CONSTANTNAME = open
-;; /T_CONSTANTNAME = close
-
-T_INCLUDE = <span class="src-inc">
-/T_INCLUDE = </span>
-T_INCLUDE_ONCE = <span class="src-inc">
-/T_INCLUDE_ONCE = </span>
-T_REQUIRE_ONCE = <span class="src-inc">
-/T_REQUIRE_ONCE = </span>
-T_REQUIRE_ONCE = <span class="src-inc">
-/T_REQUIRE_ONCE = </span>
-
-T_CONSTANT_ENCAPSED_STRING = <span class="src-str">
-/T_CONSTANT_ENCAPSED_STRING = </span>
-T_STRING_VARNAME = <span class="src-str">
-/T_STRING_VARNAME = </span>
-
-T_STRING = <span class="src-id">
-/T_STRING = </span>
-
-T_DNUMBER = <span class="src-num">
-/T_DNUMBER = </span>
-T_LNUMBER = <span class="src-num">
-/T_LNUMBER = </span>
-
-T_VARIABLE = <span class="src-var">
-/T_VARIABLE = </span>
-
-T_COMMENT = <span class="src-comm">
-/T_COMMENT = </span>
-T_ML_COMMENT = <span class="src-comm">
-/T_ML_COMMENT = </span>
-
-T_OBJECT_OPERATOR = <span class="src-sym">
-/T_OBJECT_OPERATOR = </span>
-
-T_ABSTRACT = <span class="src-key">
-/T_ABSTRACT = </span>
-T_CLONE = <span class="src-key">
-/T_CLONE = </span>
-T_HALT_COMPILER = <span class="src-key">
-/T_HALT_COMPILER = </span>
-T_ARRAY = <span class="src-key">
-/T_ARRAY = </span>
-T_AS = <span class="src-key">
-/T_AS = </span>
-T_BREAK = <span class="src-key">
-/T_BREAK = </span>
-T_CLASS = <span class="src-key">
-/T_CLASS = </span>
-T_CASE = <span class="src-key">
-/T_CASE = </span>
-T_CONST = <span class="src-key">
-/T_CONST = </span>
-T_CONTINUE = <span class="src-key">
-/T_CONTINUE = </span>
-T_DECLARE = <span class="src-key">
-/T_DECLARE = </span>
-T_DEFAULT = <span class="src-key">
-/T_DEFAULT = </span>
-T_ELSE = <span class="src-key">
-/T_ELSE = </span>
-T_ELSEIF = <span class="src-key">
-/T_ELSEIF = </span>
-T_EMPTY = <span class="src-key">
-/T_EMPTY = </span>
-T_ENDDECLARE = <span class="src-key">
-/T_ENDDECLARE = </span>
-T_ENDFOR = <span class="src-key">
-/T_ENDFOR = </span>
-T_ENDSWITCH = <span class="src-key">
-/T_ENDSWITCH = </span>
-T_ENDFOREACH = <span class="src-key">
-/T_ENDFOREACH = </span>
-T_ENDIF = <span class="src-key">
-/T_ENDIF = </span>
-T_ENDWHILE = <span class="src-key">
-/T_ENDWHILE = </span>
-T_EXIT = <span class="src-key">
-/T_EXIT = </span>
-T_EXTENDS = <span class="src-key">
-/T_EXTENDS = </span>
-T_FINAL = <span class="src-key">
-/T_FINAL = </span>
-T_FOR = <span class="src-key">
-/T_FOR = </span>
-T_FOREACH = <span class="src-key">
-/T_FOREACH = </span>
-T_FUNCTION = <span class="src-key">
-/T_FUNCTION = </span>
-T_GLOBAL = <span class="src-key">
-/T_GLOBAL = </span>
-T_IF = <span class="src-key">
-/T_IF = </span>
-T_IMPLEMENTS = <span class="src-key">
-/T_IMPLEMENTS = </span>
-T_INTERFACE = <span class="src-key">
-/T_INTERFACE = </span>
-T_LOGICAL_AND = <span class="src-key">
-/T_LOGICAL_AND = </span>
-T_LOGICAL_OR = <span class="src-key">
-/T_LOGICAL_OR = </span>
-T_LOGICAL_XOR = <span class="src-key">
-/T_LOGICAL_XOR = </span>
-T_NEW = <span class="src-key">
-/T_NEW = </span>
-T_PRIVATE = <span class="src-key">
-/T_PRIVATE = </span>
-T_PROTECTED = <span class="src-key">
-/T_PROTECTED = </span>
-T_PUBLIC = <span class="src-key">
-/T_PUBLIC = </span>
-T_RETURN = <span class="src-key">
-/T_RETURN = </span>
-T_STATIC = <span class="src-key">
-/T_STATIC = </span>
-T_SWITCH = <span class="src-key">
-/T_SWITCH = </span>
-T_VAR = <span class="src-key">
-/T_VAR = </span>
-T_WHILE = <span class="src-key">
-/T_WHILE = </span>
-
-T_DOUBLE_COLON = <span class="src-sym">
-/T_DOUBLE_COLON = </span>
-
-T_OPEN_TAG = <span class="src-php">
-/T_OPEN_TAG = </span>
-T_OPEN_TAG_WITH_ECHO = <span class="src-php">
-/T_OPEN_TAG_WITH_ECHO = </span>
-T_CLOSE_TAG = <span class="src-php">
-/T_CLOSE_TAG = </span>
-
-
-[highlightSource]
-;; this is for highlighting things that aren't tokens like "&"
-;; format:
-;; word = open
-;; /word = close
-@ = <span class="src-sym">
-/@ = </span>
-& = <span class="src-sym">
-/& = </span>
-[ = <span class="src-sym">
-/[ = </span>
-] = <span class="src-sym">
-/] = </span>
-! = <span class="src-sym">
-/! = </span>
-";" = <span class="src-sym">
-/; = </span>
-( = <span class="src-sym">
-/( = </span>
-) = <span class="src-sym">
-/) = </span>
-, = <span class="src-sym">
-/, = </span>
-{ = <span class="src-sym">
-/{ = </span>
-} = <span class="src-sym">
-/} = </span>
-""" = <span class="src-str">
-/" = </span>
-
-[highlightDocBlockSourceTokens]
-;; this is for docblock tokens, using by phpDocumentor_HighlightParser
-;; tagphptype is for "string" in @param string description, for example
-docblock = <span class="src-doc">
-/docblock = </span>
-tagphptype = <span class="src-doc-type">
-/tagphptype = </span>
-tagvarname = <span class="src-doc-var">
-/tagvarname = </span>
-coretag = <span class="src-doc-coretag">
-/coretag = </span>
-tag = <span class="src-doc-tag">
-/tag = </span>
-inlinetag = <span class="src-doc-inlinetag">
-/inlinetag = </span>
-internal = <span class="src-doc-internal">
-/internal = </span>
-closetemplate = <span class="src-doc-close-template">
-/closetemplate = </span>
-docblocktemplate = <span class="src-doc-template">
-/docblocktemplate = </span>
-
-[highlightTutorialSourceTokens]
-;; this is for XML DocBook-based tutorials, highlighted by phpDocumentor_TutorialHighlightParser
-;; <tag>
-opentag = <span class="tute-tag">
-/opentag = </span>
-;; </tag>
-closetag = <span class="tute-tag">
-/closetag = </span>
-;; <tag attribute="value">
-attribute = <span class="tute-attribute-name">
-/attribute = </span>
-;; <tag attribute="value">
-attributevalue = <span class="tute-attribute-value">
-/attributevalue = </span>
-;; &entity;
-entity = <span class="tute-entity">
-/entity = </span>
-;; <!-- comment -->
-comment = <span class="tute-comment">
-/comment = </span>
-;; {@inline tag}
-itag = <span class="tute-inline-tag">
-/itag = </span>
-
-;; used for translation of html in DocBlocks
-[desctranslate]
-ul = <ul>
-/ul = </ul>
-ol = <ol>
-/ol = </ol>
-li = <li>
-/li = </li>
-code = <code><pre>
-/code = </pre></code>
-var = <var>
-/var = </var>
-samp = <samp>
-/samp = </samp>
-kbd = <kbd>
-/kbd = </kbd>
-pre = <pre>
-/pre = </pre>
-p = <p>
-/p = </p>
-b = <strong>
-/b = </strong>
-i = <em>
-/i = </em>
-br = <br />
-
-[ppage]
-;; this is the DocBook package page translation section. All DocBook tags
-;; that have a corresponding html tag must be listed here. Entities should
-;; also be listed here
-;;
-;; examples:
-;; 1)
-;; tagname = newtagname
-;;
-;; This is the simplest case, where all attributes will be added into the
-;; starting tag and the ending tag will be html/xml style </tranlatedtagname>
-;; <tagname></tagname> becomes <newtagname></newtagname> and
-;; <tagname attr="value"></tagname> becomes
-;; <newtagname attr="value"></newtagname>
-;;
-;; 2)
-;; tagname = newtagname
-;; tagname->attr = newattrname
-;;
-;; in this case, everything will be like the first case, except tags like:
-;; <tagname attr="value"></tagname> will become
-;; <newtagname newattrname="value"></newtagname>
-;;
-;; 3)
-;; tagname = newtagname
-;; tagname->attr = newattrname
-;; tagname->attr+value = newvalue
-;;
-;; in this case, the value is also translated to another. This can be useful
-;; for instances such as focus="middle" changing to align="center" or something
-;; of that nature.
-;; <tagname attr="value"></tagname> will become
-;; <newtagname newattrname="newvalue"></newtagname>
-;;
-;; 4)
-;; tagname = newtagname
-;; tagname->attr1 = newattrname
-;; tagname->attr2 = newattrname
-;; tagname->attr1+value|attr2+value = newvalue
-;;
-;; in this case, two attributes combine to make one new attribute, and the combined
-;; value is translated into a new value
-;; <tagname attr1="value1" attr2="value2"></tagname> will become
-;; <newtagname newattrname="newvalue"></newtagname>
-;;
-;; 5)
-;; tagname = newtagname
-;; tagname!attr = dummy
-;;
-;; here, the attribute will be ignored. dummy is not used and may be any value
-;; <tagname attr="value"></tagname> will become
-;; <newtagname></newtagname>
-;;
-;; 6)
-;; tagname = newtagname
-;; tagname! = dummy
-;;
-;; here, all attributes will be ignored. dummy is not used and may be any value
-;; <tagname attr1="value" attr2="foo"></tagname> will become
-;; <newtagname></newtagname>
-;;
-;; 7)
-;; tagname = newtagname
-;; tagname/ = 1
-;;
-;; here, the tag will be translated as a single tag with no closing tag, and all
-;; attributes
-;; <tagname attr="val">{text text}</tagname> will become
-;; <newtagname attr="val" />
-;;
-;; 8)
-;; tagname = <starttaginfo />
-;; /tagname = closetagtext
-;;
-;; in this case, the text <starttaginfo> will be inserted exactly as entered for
-;; <tagname> and closetagtext for </tagname>
-;; <tagname attr="val"></tagname> will become
-;; <starttaginfo />closetagtext
-;;
-;; 9)
-;; $attr$my_attribute = newattrname
-;;
-;; tagname = newtagname
-;;
-;; in this case, all occurences of my_attribute in any tag will be changed to
-;; newattrname. This is useful for changing things like role="php" to
-;; class="php," for example. Note that the text "$attr$" MUST be on the line
-;; start for phpDocumentor to recognize it.
-;;
-;; 10)
-;; &entity; = translation text
-;; &quot; = &quot;
-;; &quot; = """
-;; &lt; = <
-;;
-;; Use this to control translation of entities to their appropriate values
-
-&nbsp; = &nbsp;
-&quot; = &quot;
-&rdquo; = &rdquo;
-&ldquo; = &ldquo;
-&amp; = &amp;
-&lt; = &lt;
-&gt; = &gt;
-&copy; = &copy;
-
-
-$attr$role = class
-
-abbrev = abbr
-
-blockquote = blockquote
-
-arg = span
-arg->choice = class
-
-author = <span class="author">
-/author = </span>
-author! = 0
-
-authorblurb = <div class="author-blurb">
-/authorblurb = </div>
-
-authorgroup = <div class="authors"><h2 class="title">Authors</h2>
-/authorgroup = </div>
-authorgroup! = 0
-
-caution = <span class="warning">
-/caution = </span>
-caution! = 0
-
-cmdsynopsis = <div class="cmd-synopsis">
-/cmdsynopsis = </div>
-
-command = <span class="cmd-title">
-/command = </span>
-
-copyright = <div class="notes">
-/copyright = </div>
-
-emphasis = em
-
-example = <pre class="example">
-/example = </pre>
-example! = 0
-
-function =
-/function = ()
-
-formalpara = p
-
-graphic = img
-graphic->fileref = src
-graphic/ =
-
-important = strong
-
-informalequation = blockquote
-
-informalexample = div
-
-inlineequation = em
-
-itemizedlist = ul
-
-listitem = li
-
-literal = code
-
-literallayout = span
-
-option = " "
-/option =
-
-orderedlist = ol
-
-para = p
-
-programlisting = <pre class="listing">
-/programlisting = </pre>
-programlisting! = 0
-
-refentry = div
-
-refnamediv = <div class="ref-title-box">
-/refnamediv = </div>
-refnamediv! = 0
-
-refname = <h1 class="ref-title">
-/refname = </h1>
-
-refpurpose = <h2 class="ref-purpose">
-/refpurpose = </h2>
-
-refsynopsisdiv = <div class="ref-synopsis">
-/refsynopsisdiv = </div>
-refsynopsisdiv! = 0
-
-refsect1 = span
-
-refsect2 = span
-
-refsect3 =
-/refsect3 = <br />
-
-releaseinfo = <div class="release-info">(
-/releaseinfo = )</div>
-
-simpara =
-/simpara = <br />
-simpara! = 0
-
-subscript = sub
-
-superscript = super
-
-table = table
-
-table->colsep = rules
-table->rowsep = rules
-table->colsep+1|rowsep+1 =all
-table->colsep+1|rowsep+0 =cols
-table->colsep+0|rowsep+1 =rows
-
-table->frame =frame
-table->frame+all =border
-table->frame+none =void
-table->frame+sides =vsides
-table->frame+top =above
-table->frame+topbot =hsides
-
-thead = thead
-
-tfoot = tfoot
-
-tbody = tbody
-
-colspec = col
-
-tgroup = colgroup
-tgroup/ = 1
-tgroup->cols = span
-
-row = tr
-
-entry = td
-entry->morerows = colspan
-entry->morerows+1 =2
-entry->morerows+2 =3
-entry->morerows+3 =4
-entry->morerows+4 =5
-entry->morerows+5 =6
-entry->morerows+6 =7
-entry->morerows+7 =8
-entry->morerows+8 =9
-entry->morerows+9 =10
-entry->morerows+10 =11
-;; add more if you need more colspans
-
-warning = <span class="warning">
-/warning = </span>
-warning! = 0
-
-;; now begins the attributes that should be tags in cdata
-[$attr$id]
-open = a
-;close = /a
-cdata! = true
-quotevalues = true
-separator = "="
-;separateall = true
-$id = name
-
-;; now begins the sections that deal with <title>
-[refsynopsisdiv_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h1 class="title">
-close = </h1>
-
-[refsect1_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h2 class="title">
-close = </h2>
-
-[refsect2_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h3 class="title">
-close = </h3>
-
-[refsect3_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h4 class="title">
-close = </h4>
-
-[para_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <div class="title">
-close = </div>
-
-[formalpara_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <div class="title">
-close = </div>
-
-[example_title]
-;tag_attr = true
-;attr_name = title
-;cdata_start = true
-cdata_end = true
-open = </td></tr><tr><td><strong>
-close = </strong>
-
-[table_title]
-;tag_attr = true
-;attr_name = true
-cdata_start = true
-open = <caption>
-close = </caption>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl
deleted file mode 100644
index 711e1d2e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<div class="index-letter-menu">
-{section name=letter loop=$letters}
- <a class="index-letter" href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a>
-{/section}
-</div>
-
-{section name=index loop=$index}
- <a name="{$index[index].letter}"></a>
- <div class="index-letter-section">
- <div style="float: left" class="index-letter-title">{$index[index].letter}</div>
- <div style="float: right"><a href="#top">top</a></div>
- <div style="clear: both"></div>
- </div>
- <dl>
- {section name=contents loop=$index[index].index}
- <dt class="field">
- {if ($index[index].index[contents].title == "Variable")}
- <span class="var-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Global")}
- <span class="var-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Method")}
- <span class="method-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Function")}
- <span class="method-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Constant")}
- <span class="const-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Page") || ($index[index].index[contents].title == "Include")}
- <span class="include-title">{$index[index].index[contents].name}</span>
- {else}
- {$index[index].index[contents].name}
- {/if}
- </dt>
- <dd class="index-item-body">
- <div class="index-item-details">{$index[index].index[contents].link} in {$index[index].index[contents].file_name}</div>
- {if $index[index].index[contents].description}
- <div class="index-item-description">{$index[index].index[contents].description}</div>
- {/if}
- </dd>
- {/section}
- </dl>
-{/section}
-
-<div class="index-letter-menu">
-{section name=letter loop=$letters}
- <a class="index-letter" href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a>
-{/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl
deleted file mode 100644
index 1fbaca2f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
-<head>
- <title>{$maintitle}</title>
- <link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
-</head>
-<body>
-<div align="center"><h1>{$maintitle}</h1></div>
-<b>Welcome to {$package}!</b><br />
-<br />
-This documentation was generated by <a href="{$phpdocwebsite}">phpDocumentor v{$phpdocversion}</a><br />
-</body>
-</html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl
deleted file mode 100644
index cc1c080b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl
+++ /dev/null
@@ -1,402 +0,0 @@
-{include file="header.tpl" top3=true}
-
-<h2 class="class-name">{if $is_interface}Interface{else}Class{/if} {$class_name}</h2>
-
-<a name="sec-description"></a>
-<div class="info-box">
- <div class="info-box-title">Description</div>
- <div class="nav-bar">
- {if $children || $vars || $ivars || $methods || $imethods || $consts || $iconsts }
- <span class="disabled">Description</span> |
- {/if}
- {if $children}
- <a href="#sec-descendents">Descendents</a>
- {if $vars || $ivars || $methods || $imethods || $consts || $iconsts}|{/if}
- {/if}
- {if $vars || $ivars}
- {if $vars}
- <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
- {else}
- <a href="#sec-vars">Vars</a>
- {/if}
- {if $methods || $imethods}|{/if}
- {/if}
- {if $methods || $imethods}
- {if $methods}
- <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
- {else}
- <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- <a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
- {else}
- <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- {if $implements}
- <p class="implements">
- Implements interfaces:
- <ul>
- {foreach item="int" from=$implements}<li>{$int}</li>{/foreach}
- </ul>
- </p>
- {/if}
- {include file="docblock.tpl" type="class" sdesc=$sdesc desc=$desc}
- <p class="notes">
- Located in <a class="field" href="{$page_link}">{$source_location}</a> (line <span class="field">{if $class_slink}{$class_slink}{else}{$line_number}{/if}</span>)
- </p>
-
- {if $tutorial}
- <hr class="separator" />
- <div class="notes">Tutorial: <span class="tutorial">{$tutorial}</span></div>
- {/if}
-
- <pre>{section name=tree loop=$class_tree.classes}{$class_tree.classes[tree]}{$class_tree.distance[tree]}{/section}</pre>
-
- {if $conflicts.conflict_type}
- <hr class="separator" />
- <div><span class="warning">Conflicts with classes:</span><br />
- {section name=me loop=$conflicts.conflicts}
- {$conflicts.conflicts[me]}<br />
- {/section}
- </div>
- {/if}
- </div>
-</div>
-
-{if $children}
- <a name="sec-descendents"></a>
- <div class="info-box">
- <div class="info-box-title">Direct descendents</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- <span class="disabled">Descendents</span>
- {if $vars || $ivars || $methods || $imethods}|{/if}
- {if $vars || $ivars}
- {if $vars}
- <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
- {else}
- <a href="#sec-vars">Vars</a>
- {/if}
- {if $methods || $imethods}|{/if}
- {/if}
- {if $methods || $imethods}
- {if $methods}
- <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
- {else}
- <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- <a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
- {else}
- <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- <table cellpadding="2" cellspacing="0" class="class-table">
- <tr>
- <th class="class-table-header">Class</th>
- <th class="class-table-header">Description</th>
- </tr>
- {section name=kids loop=$children}
- <tr>
- <td style="padding-right: 2em">{$children[kids].link}</td>
- <td>
- {if $children[kids].sdesc}
- {$children[kids].sdesc}
- {else}
- {$children[kids].desc}
- {/if}
- </td>
- </tr>
- {/section}
- </table>
- </div>
- </div>
-{/if}
-
-{if $consts}
- <a name="sec-const-summary"></a>
- <div class="info-box">
- <div class="info-box-title">Class Constant Summary</span></div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $children}
- <a href="#sec-descendents">Descendants</a> |
- {/if}
- <span class="disabled">Constants</span> (<a href="#sec-consts">details</a>)
- {if $vars || $ivars}
- {if $vars}
- <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
- {else}
- <a href="#sec-vars">Vars</a>
- {/if}
- |
- {/if}
- {if $methods || $imethods}
- |
- {if $methods}
- <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
- {else}
- <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- <div class="const-summary">
- {section name=consts loop=$consts}
- <div class="const-title">
- <img src="{$subdir}media/images/Constant.png" alt=" " />
- <a href="#{$consts[consts].const_name}" title="details" class="const-name">{$consts[consts].const_name}</a> = <span class="var-type">{$consts[consts].const_value}</span>
-
- </div>
- {/section}
- </div>
- </div>
- </div>
-{/if}
-
-{if $vars}
- <a name="sec-var-summary"></a>
- <div class="info-box">
- <div class="info-box-title">Variable Summary</span></div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $children}
- <a href="#sec-descendents">Descendents</a> |
- {/if}
- <span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
- {if $methods || $imethods}
- |
- {if $methods}
- <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
- {else}
- <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- <a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
- {else}
- <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- <div class="var-summary">
- {section name=vars loop=$vars}
- <div class="var-title">
- <span class="var-type">{$vars[vars].var_type}</span>
- <a href="#{$vars[vars].var_name}" title="details" class="var-name">{$vars[vars].var_name}</a>
- </div>
- {/section}
- </div>
- </div>
- </div>
-{/if}
-
-{if $methods}
- <a name="sec-method-summary"></a>
- <div class="info-box">
- <div class="info-box-title">Method Summary</span></div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $children}
- <a href="#sec-descendents">Descendents</a> |
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- <a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
- {else}
- <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- {if $vars || $ivars}
- {if $vars}
- <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
- {else}
- <a href="#sec-vars">Vars</a>
- {/if}
- |
- {/if}
- <span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
- </div>
- <div class="info-box-body">
- <div class="method-summary">
- {section name=methods loop=$methods}
- <div class="method-definition">
- {if $methods[methods].function_return}
- <span class="method-result">{$methods[methods].function_return}</span>
- {/if}
- <a href="#{$methods[methods].function_name}" title="details" class="method-name">{if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}</a>
- {if count($methods[methods].ifunction_call.params)}
- ({section name=params loop=$methods[methods].ifunction_call.params}{if $smarty.section.params.iteration != 1}, {/if}{if $methods[methods].ifunction_call.params[params].default}[{/if}<span class="var-type">{$methods[methods].ifunction_call.params[params].type}</span>&nbsp;<span class="var-name">{$methods[methods].ifunction_call.params[params].name}</span>{if $methods[methods].ifunction_call.params[params].default} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/section}
- </div>
- </div>
- </div>
-{/if}
-
-{if $vars || $ivars}
- <a name="sec-vars"></a>
- <div class="info-box">
- <div class="info-box-title">Variables</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $children}
- <a href="#sec-descendents">Descendents</a> |
- {/if}
- {if $methods}
- <a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
- {else}
- <span class="disabled">Vars</span>
- {/if}
-
- {if $consts || $iconsts}
- {if $consts}
- <a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
- {else}
- <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- {if $methods || $imethods}
- |
- {if $methods}
- <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
- {else}
- <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- {include file="var.tpl"}
- {if $ivars}
- <h4>Inherited Variables</h4>
- <A NAME='inherited_vars'><!-- --></A>
- {section name=ivars loop=$ivars}
- <p>Inherited from <span class="classname">{$ivars[ivars].parent_class}</span></p>
- <blockquote>
- {section name=ivars2 loop=$ivars[ivars].ivars}
- <span class="var-title">
- <span class="var-name">{$ivars[ivars].ivars[ivars2].link}</span>{if $ivars[ivars].ivars[ivars2].ivar_sdesc}: {$ivars[ivars].ivars[ivars2].ivar_sdesc}{/if}<br>
- </span>
- {/section}
- </blockquote>
- {/section}
- {/if}
- </div>
- </div>
-{/if}
-
-{if $methods || $imethods}
- <a name="sec-methods"></a>
- <div class="info-box">
- <div class="info-box-title">Methods</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $children}
- <a href="#sec-descendents">Descendents</a> |
- {/if}
- {if $vars || $ivars}
- {if $vars}
- <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
- {else}
- <a href="#sec-vars">Vars</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- <a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
- {else}
- <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- {if $methods}
- <a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
- {else}
- <span class="disabled">Methods</span>
- {/if}
- </div>
- <div class="info-box-body">
- {include file="method.tpl"}
- {if $imethods}
- <h4>Inherited Methods</h4>
- <a name='inherited_methods'><!-- --></a>
- {section name=imethods loop=$imethods}
- <!-- =========== Summary =========== -->
- <p>Inherited From <span class="classname">{$imethods[imethods].parent_class}</span></p>
- <blockquote>
- {section name=im2 loop=$imethods[imethods].imethods}
- <span class="method-name">{$imethods[imethods].imethods[im2].link}</span>{if $imethods[imethods].imethods[im2].ifunction_sdesc}: {$imethods[imethods].imethods[im2].ifunction_sdesc}{/if}<br>
- {/section}
- </blockquote>
- {/section}
- {/if}
- </div>
- </div>
-{/if}
-
-{if $consts || $iconsts}
- <a name="sec-consts"></a>
- <div class="info-box">
- <div class="info-box-title">Class Constants</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $children}
- <a href="#sec-descendents">Descendants</a> |
- {/if}
- {if $methods}
- <a href="#sec-var-summary">Constants</a> (<span class="disabled">details</span>)
- {else}
- <span class="disabled">Constants</span>
- {/if}
-
- {if $vars || $ivars}
- {if $vars}
- <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
- {else}
- <a href="#sec-vars">Vars</a>
- {/if}
- {/if}
- {if $methods || $imethods}
- |
- {if $methods}
- <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
- {else}
- <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- {include file="const.tpl"}
- {if $iconsts}
- <h4>Inherited Constants</h4>
- <A NAME='inherited_vars'><!-- --></A>
- {section name=iconsts loop=$iconsts}
- <p>Inherited from <span class="classname">{$iconsts[iconsts].parent_class}</span></p>
- <blockquote>
- {section name=iconsts2 loop=$iconsts[iconsts].iconsts}
- <img src="{$subdir}media/images/{if $iconsts[iconsts].iconsts[iconsts2].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
- <span class="const-title">
- <span class="const-name">{$iconsts[iconsts].iconsts[iconsts2].link}</span>{if $iconsts[iconsts].iconsts[iconsts2].iconst_sdesc}: {$iconsts[iconsts].iconsts[iconsts2].iconst_sdesc}{/if}<br>
- </span>
- {/section}
- </blockquote>
- {/section}
- {/if}
- </div>
- </div>
-{/if}
-
-{include file="footer.tpl" top3=true}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl
deleted file mode 100644
index 5188e8cf..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl
deleted file mode 100644
index 4157488f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-{section name=consts loop=$consts}
-<a name="const{$consts[consts].const_name}" id="{$consts[consts].const_name}"><!-- --></A>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="const-header">
- <img src="{$subdir}media/images/{if $consts[consts].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
- <span class="const-title">
- <span class="const-name">{$consts[consts].const_name}</span>
- = <span class="const-default">{$consts[consts].const_value|replace:"\n":"<br />"}</span>
- (line <span class="line-number">{if $consts[consts].slink}{$consts[consts].slink}{else}{$consts[consts].line_number}{/if}</span>)
- </span>
- </div>
-
- {include file="docblock.tpl" sdesc=$consts[consts].sdesc desc=$consts[consts].desc tags=$consts[consts].tags}
-
-</div>
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl
deleted file mode 100644
index ab76faa2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-{section name=def loop=$defines}
-<a name="{$defines[def].define_link}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <span class="const-title">
- <span class="const-name">{$defines[def].define_name}</span> = {$defines[def].define_value|replace:"\n":"<br />"}
- (line <span class="line-number">{if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}</span>)
- </span>
- </div>
-
- {include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags}
-
- {if $globals[glob].global_conflicts.conflict_type}
- <hr class="separator" />
- <div><span class="warning">Conflicts with constants:</span><br />
- {section name=me loop=$defines[def].define_conflicts.conflicts}
- {$defines[def].define_conflicts.conflicts[me]}<br />
- {/section}
- </div>
- {/if}
-
-</div>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl
deleted file mode 100644
index 8a87c9b7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- ========== Info from phpDoc block ========= -->
-{if $sdesc}
-<p class="short-description">{$sdesc}</p>
-{/if}
-{if $desc}
-<p class="description">{$desc}</p>
-{/if}
-{if $tags}
- <ul class="tags">
- {section name=tags loop=$tags}
- <li><span class="field">{$tags[tags].keyword}:</span> {$tags[tags].data}</li>
- {/section}
- </ul>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl
deleted file mode 100644
index 6e651db1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl
+++ /dev/null
@@ -1,12 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<a name="top"></a>
-<h2>Full index</h2>
-<h3>Package indexes</h3>
-<ul>
-{section name=p loop=$packageindex}
- <li><a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a></li>
-{/section}
-</ul>
-<br />
-{include file="basicindex.tpl" indexname="elementindex"}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl
deleted file mode 100644
index 1576a822..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl
+++ /dev/null
@@ -1,21 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-{section name=files loop=$files}
-<a href="#{$files[files].file}">{$files[files].file}</a><br>
-{/section}
-{foreach key=file item=issues from=$all}
-<a name="{$file}"></a>
-<h1>{$file}</h1>
-{if count($issues.warnings)}
-<h2>Warnings:</h2><br>
-{section name=warnings loop=$issues.warnings}
-<b>{$issues.warnings[warnings].name}</b> - {$issues.warnings[warnings].listing}<br>
-{/section}
-{/if}
-{if count($issues.errors)}
-<h2>Errors:</h2><br>
-{section name=errors loop=$issues.errors}
-<b>{$issues.errors[errors].name}</b> - {$issues.errors[errors].listing}<br>
-{/section}
-{/if}
-{/foreach}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl
deleted file mode 100644
index c813280b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl" title=$title}
-<h1>{$title}</h1>
-<div class="listing">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl
deleted file mode 100644
index 4fd821a2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{capture name="tutle"}File Source for {$name}{/capture}
-{include file="header.tpl" title=$smarty.capture.tutle}
-<h1>Source for file {$name}</h1>
-<p>Documentation is available at {$docs}</p>
-<div class="src-code">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl
deleted file mode 100644
index 424ebbe2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{if !$index}
- <p class="notes" id="credit">
- Documentation generated on {$date} by <a href="{$phpdocwebsite}" target="_blank">phpDocumentor {$phpdocversion}</a>
- </p>
-{/if}
- {if $top3}</div>{/if}
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl
deleted file mode 100644
index 2750a97e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl
+++ /dev/null
@@ -1,44 +0,0 @@
-{section name=func loop=$functions}
-<a name="{$functions[func].function_dest}" id="{$functions[func].function_dest}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <span class="method-title">{$functions[func].function_name}</span> (line <span class="line-number">{if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}</span>)
- </div>
-
- {include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags params=$functions[func].params function=false}
-
- <div class="method-signature">
- <span class="method-result">{$functions[func].function_return}</span>
- <span class="method-name">
- {if $functions[func].ifunction_call.returnsref}&amp;{/if}{$functions[func].function_name}
- </span>
- {if count($functions[func].ifunction_call.params)}
- ({section name=params loop=$functions[func].ifunction_call.params}{if $smarty.section.params.iteration != 1}, {/if}{if $functions[func].ifunction_call.params[params].hasdefault}[{/if}<span class="var-type">{$functions[func].ifunction_call.params[params].type}</span>&nbsp;<span class="var-name">{$functions[func].ifunction_call.params[params].name}</span>{if $functions[func].ifunction_call.params[params].hasdefault} = <span class="var-default">{$functions[func].ifunction_call.params[params].default|escape:"html"}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
-
- {if $functions[func].params}
- <ul class="parameters">
- {section name=params loop=$functions[func].params}
- <li>
- <span class="var-type">{$functions[func].params[params].datatype}</span>
- <span class="var-name">{$functions[func].params[params].var}</span>{if $functions[func].params[params].data}<span class="var-description">: {$functions[func].params[params].data}</span>{/if}
- </li>
- {/section}
- </ul>
- {/if}
-
- {if $functions[func].function_conflicts.conflict_type}
- <hr class="separator" />
- <div><span class="warning">Conflicts with functions:</span><br />
- {section name=me loop=$functions[func].function_conflicts.conflicts}
- {$functions[func].function_conflicts.conflicts[me]}<br />
- {/section}
- </div>
- {/if}
-
-</div>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl
deleted file mode 100644
index 3c89ddfc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl
+++ /dev/null
@@ -1,26 +0,0 @@
-{section name=glob loop=$globals}
-<a name="{$globals[glob].global_link}" id="{$globals[glob].global_link}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <span class="var-title">
- <span class="var-type">{$globals[glob].global_type}</span>
- <span class="var-name">{$globals[glob].global_name}</span>
- {if $vars[vars].var_default} = <span class="var-default">{$globals[glob].global_value|replace:"\n":"<br />"}</span>{/if}
- (line <span class="line-number">{if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}</span>)
- </span>
- </div>
-
- {include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags}
-
- {if $globals[glob].global_conflicts.conflict_type}
- <hr class="separator" />
- <div><span class="warning">Conflicts with global variables:</span><br />
- {section name=me loop=$globals[glob].global_conflicts.conflicts}
- {$globals[glob].global_conflicts.conflicts[me]}<br />
- {/section}
- </div>
- {/if}
-
-</div>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl
deleted file mode 100644
index d5e26dfa..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!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">
- <head>
- <!-- template designed by Marco Von Ballmoos -->
- <title>{$title}</title>
- <link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
- </head>
- <body>
- {if $top3}<div class="page-body">{/if}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl
deleted file mode 100644
index bd408aff..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-{section name=includes loop=$includes}
-<a name="{$includes[includes].include_file}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <span class="include-title">
- <span class="include-type">{$includes[includes].include_name}</span>
- (<span class="include-name">{$includes[includes].include_value}</span>)
- (line <span class="line-number">{if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}</span>)
- </span>
- </div>
-
- {include file="docblock.tpl" sdesc=$includes[includes].sdesc desc=$includes[includes].desc tags=$includes[includes].tags}
-
-</div>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl
deleted file mode 100644
index 477d2b17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <!-- Generated by phpDocumentor on {$date} -->
- <title>{$title}</title>
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
-</head>
-
-<FRAMESET rows='120,*'>
- <FRAME src='packages.html' name='left_top' frameborder="1" bordercolor="#999999">
- <FRAMESET cols='25%,*'>
- <FRAME src='{$start}' name='left_bottom' frameborder="1" bordercolor="#999999">
- <FRAME src='{$blank}.html' name='right' frameborder="1" bordercolor="#999999">
- </FRAMESET>
- <NOFRAMES>
- <H2>Frame Alert</H2>
- <P>This document is designed to be viewed using the frames feature.
- If you see this message, you are using a non-frame-capable web client.</P>
- </NOFRAMES>
-</FRAMESET>
-</HTML>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl
deleted file mode 100644
index 4232d845..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-{include file="header.tpl" top2=true}
-<div class="package-title">{$package}</div>
-<div class="package-details">
-
- <dl class="tree">
-
- <dt class="folder-title">Description</dt>
- <dd>
- <a href='{$classtreepage}.html' target='right'>Class trees</a><br />
- <a href='{$elementindex}.html' target='right'>Index of elements</a><br />
- {if $hastodos}
- <a href="{$todolink}" target="right">Todo List</a><br />
- {/if}
- </dd>
-
- {section name=p loop=$info}
-
- {if $info[p].subpackage == ""}
-
- {if $info[p].tutorials}
- <dt class="folder-title">Tutorials/Manuals</dt>
- <dd>
- {if $info[p].tutorials.pkg}
- <dl class="tree">
- <dt class="folder-title">Package-level</dt>
- <dd>
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- </dd>
- </dl>
- {/if}
-
- {if $info[p].tutorials.cls}
- <dl class="tree">
- <dt class="folder-title">Class-level</dt>
- <dd>
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- </dd>
- </dl>
- {/if}
-
- {if $info[p].tutorials.proc}
- <dl class="tree">
- <dt class="folder-title">Function-level</dt>
- <dd>
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- </dd>
- </dl>
- {/if}
- </dd>
- {/if}
- {if $info[p].classes}
- <dt class="folder-title">Classes</dt>
- {section name=class loop=$info[p].classes}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/section}
- {/if}
- {if $info[p].functions}
- <dt class="folder-title">Functions</dt>
- {section name=f loop=$info[p].functions}
- <dd><a href='{$info[p].functions[f].link}' target='right'>{$info[p].functions[f].title}</a></dd>
- {/section}
- {/if}
- {if $info[p].files}
- <dt class="folder-title">Files</dt>
- {section name=nonclass loop=$info[p].files}
- <dd><a href='{$info[p].files[nonclass].link}' target='right'>{$info[p].files[nonclass].title}</a></dd>
- {/section}
- {/if}
-
- {else}
- {if $info[p].tutorials}
- <dt class="folder-title">Tutorials/Manuals</dt>
- <dd>
- {if $info[p].tutorials.pkg}
- <dl class="tree">
- <dt class="folder-title">Package-level</dt>
- <dd>
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- </dd>
- </dl>
- {/if}
-
- {if $info[p].tutorials.cls}
- <dl class="tree">
- <dt class="folder-title">Class-level</dt>
- <dd>
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- </dd>
- </dl>
- {/if}
-
- {if $info[p].tutorials.proc}
- <dl class="tree">
- <dt class="folder-title">Function-level</dt>
- <dd>
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- </dd>
- </dl>
- {/if}
- </dd>
- {/if}
-
- <dt class="sub-package">{$info[p].subpackage}</dt>
- <dd>
- <dl class="tree">
- {if $info[p].subpackagetutorial}
- <div><a href="{$info.0.subpackagetutorialnoa}" target="right">{$info.0.subpackagetutorialtitle}</a></div>
- {/if}
- {if $info[p].classes}
- <dt class="folder-title">Classes</dt>
- {section name=class loop=$info[p].classes}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/section}
- {/if}
- {if $info[p].functions}
- <dt class="folder-title">Functions</dt>
- {section name=f loop=$info[p].functions}
- <dd><a href='{$info[p].functions[f].link}' target='right'>{$info[p].functions[f].title}</a></dd>
- {/section}
- {/if}
- {if $info[p].files}
- <dt class="folder-title">Files</dt>
- {section name=nonclass loop=$info[p].files}
- <dd><a href='{$info[p].files[nonclass].link}' target='right'>{$info[p].files[nonclass].title}</a></dd>
- {/section}
- {/if}
- </dl>
- </dd>
-
- {/if}
-
- {/section}
- </dl>
-</div>
-<p class="notes"><a href="{$phpdocwebsite}" target="_blank">phpDocumentor v <span class="field">{$phpdocversion}</span></a></p>
-</BODY>
-</HTML>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css
deleted file mode 100644
index e67227b7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background-color: #CCCCFF;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #6666AA;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #AAAADD;
- border: 1px solid black;
- color: yellow;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css
deleted file mode 100644
index 88f471f2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css
+++ /dev/null
@@ -1,144 +0,0 @@
-a { color: #336699; text-decoration: none; }
-a:hover { color: #6699CC; text-decoration: underline; }
-a:active { color: #6699CC; text-decoration: underline; }
-
-body { background : #FFFFFF; }
-body, table { font-family: Georgia, Times New Roman, Times, serif; font-size: 10pt }
-p, li { line-height: 140% }
-a img { border: 0px; }
-dd { margin-left: 0px; padding-left: 1em; }
-
-/* Page layout/boxes */
-
-.info-box {}
-.info-box-title { margin: 1em 0em 0em 0em; padding: .25em; font-weight: normal; font-size: 14pt; border: 2px solid #999999; background-color: #CCCCFF }
-.info-box-body { border: 1px solid #999999; padding: .5em; }
-.nav-bar { font-size: 8pt; white-space: nowrap; text-align: right; padding: .2em; margin: 0em 0em 1em 0em; }
-
-.oddrow { background-color: #F8F8F8; border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
-.evenrow { border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
-
-.page-body { max-width: 800px; margin: auto; }
-.tree dl { margin: 0px }
-
-/* Index formatting classes */
-
-.index-item-body { margin-top: .5em; margin-bottom: .5em}
-.index-item-description { margin-top: .25em }
-.index-item-details { font-weight: normal; font-style: italic; font-size: 8pt }
-.index-letter-section { background-color: #EEEEEE; border: 1px dotted #999999; padding: .5em; margin-bottom: 1em}
-.index-letter-title { font-size: 12pt; font-weight: bold }
-.index-letter-menu { text-align: center; margin: 1em }
-.index-letter { font-size: 12pt }
-
-/* Docbook classes */
-
-.description {}
-.short-description { font-weight: bold; color: #666666; }
-.tags { padding-left: 0em; margin-left: 3em; color: #666666; list-style-type: square; }
-.parameters { padding-left: 0em; margin-left: 3em; font-style: italic; list-style-type: square; }
-.redefinitions { font-size: 8pt; padding-left: 0em; margin-left: 2em; }
-.package { }
-.package-title { font-weight: bold; font-size: 14pt; border-bottom: 1px solid black }
-.package-details { font-size: 85%; }
-.sub-package { font-weight: bold; font-size: 120% }
-.tutorial { border-width: thin; border-color: #0066ff }
-.tutorial-nav-box { width: 100%; border: 1px solid #999999; background-color: #F8F8F8; }
-.nav-button-disabled { color: #999999; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover { background-color: #DDDDDD; outline: 1px solid #999999; text-decoration: none }
-.folder-title { font-style: italic }
-
-/* Generic formatting */
-
-.field { font-weight: bold; }
-.detail { font-size: 8pt; }
-.notes { font-style: italic; font-size: 8pt; }
-.separator { background-color: #999999; height: 2px; }
-.warning { color: #FF6600; }
-.disabled { font-style: italic; color: #999999; }
-
-/* Code elements */
-
-.line-number { }
-
-.class-table { width: 100%; }
-.class-table-header { border-bottom: 1px dotted #666666; text-align: left}
-.class-name { color: #000000; font-weight: bold; }
-
-.method-summary { padding-left: 1em; font-size: 8pt }
-.method-header { }
-.method-definition { margin-bottom: .3em }
-.method-title { font-weight: bold; }
-.method-name { font-weight: bold; }
-.method-signature { font-size: 85%; color: #666666; margin: .5em 0em }
-.method-result { font-style: italic; }
-
-.var-summary { padding-left: 1em; font-size: 8pt; }
-.var-header { }
-.var-title { margin-bottom: .3em }
-.var-type { font-style: italic; }
-.var-name { font-weight: bold; }
-.var-default {}
-.var-description { font-weight: normal; color: #000000; }
-
-.include-title { }
-.include-type { font-style: italic; }
-.include-name { font-weight: bold; }
-
-.const-title { }
-.const-name { font-weight: bold; }
-
-/* Syntax highlighting */
-
-.src-code { border: 1px solid #336699; padding: 1em; background-color: #EEEEEE; }
-*[class="src-code"] { line-height : 0.5em }
-
-.src-comm { color: green; }
-.src-id { }
-.src-inc { color: #0000FF; }
-.src-key { color: #0000FF; }
-.src-num { color: #CC0000; }
-.src-str { color: #66cccc; }
-.src-sym { font-weight: bold; }
-.src-var { }
-
-.src-php { font-weight: bold; }
-
-.src-doc { color: #009999 }
-.src-doc-close-template { color: #0000FF }
-.src-doc-coretag { color: #0099FF; font-weight: bold }
-.src-doc-inlinetag { color: #0099FF }
-.src-doc-internal { color: #6699cc }
-.src-doc-tag { color: #0080CC }
-.src-doc-template { color: #0000FF }
-.src-doc-type { font-style: italic }
-.src-doc-var { font-style: italic }
-
-.tute-tag { color: #009999 }
-.tute-attribute-name { color: #0000FF }
-.tute-attribute-value { color: #0099FF }
-.tute-entity { font-weight: bold; }
-.tute-comment { font-style: italic }
-.tute-inline-tag { color: #636311; font-weight: bold }
-
-/* tutorial */
-
-.authors { }
-.author { font-style: italic; font-weight: bold }
-.author-blurb { margin: .5em 0em .5em 2em; font-size: 85%; font-weight: normal; font-style: normal }
-.example { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; }
-*[class="example"] { line-height : 0.5em }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-*[class="listing"] { line-height : 0.5em }
-.release-info { font-size: 85%; font-style: italic; margin: 1em 0em }
-.ref-title-box { }
-.ref-title { }
-.ref-purpose { font-style: italic; color: #666666 }
-.ref-synopsis { }
-.title { font-weight: bold; margin: 1em 0em 0em 0em; padding: .25em; border: 2px solid #999999; background-color: #CCCCFF }
-.cmd-synopsis { margin: 1em 0em }
-.cmd-title { font-weight: bold }
-.toc { margin-left: 2em; padding-left: 0em }
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl
deleted file mode 100644
index 3138a925..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl
+++ /dev/null
@@ -1,61 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-<a name="method{$methods[methods].function_name}" id="{$methods[methods].function_name}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="method-header">
- <span class="method-title">{if $methods[methods].ifunction_call.constructor}Constructor {elseif $methods[methods].ifunction_call.destructor}Destructor {/if}{$methods[methods].function_name}</span> (line <span class="line-number">{if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}</span>)
- </div>
-
- {include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=false}
-
- <div class="method-signature">
- <span class="method-result">{$methods[methods].function_return}</span>
- <span class="method-name">
- {if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}
- </span>
- {if count($methods[methods].ifunction_call.params)}
- ({section name=params loop=$methods[methods].ifunction_call.params}{if $smarty.section.params.iteration != 1}, {/if}{if $methods[methods].ifunction_call.params[params].default}[{/if}<span class="var-type">{$methods[methods].ifunction_call.params[params].type}</span>&nbsp;<span class="var-name">{$methods[methods].ifunction_call.params[params].name}</span>{if $methods[methods].ifunction_call.params[params].default} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
-
- {if $methods[methods].params}
- <ul class="parameters">
- {section name=params loop=$methods[methods].params}
- <li>
- <span class="var-type">{$methods[methods].params[params].datatype}</span>
- <span class="var-name">{$methods[methods].params[params].var}</span>{if $methods[methods].params[params].data}<span class="var-description">: {$methods[methods].params[params].data}</span>{/if}
- </li>
- {/section}
- </ul>
- {/if}
-
- {if $methods[methods].method_overrides}
- <hr class="separator" />
- <div class="notes">Redefinition of:</div>
- <dl>
- <dt>{$methods[methods].method_overrides.link}</dt>
- {if $methods[methods].method_overrides.sdesc}
- <dd>{$methods[methods].method_overrides.sdesc}</dd>
- {/if}
- </dl>
- {/if}
-
- {if $methods[methods].descmethod}
- <hr class="separator" />
- <div class="notes">Redefined in descendants as:</div>
- <ul class="redefinitions">
- {section name=dm loop=$methods[methods].descmethod}
- <li>
- {$methods[methods].descmethod[dm].link}
- {if $methods[methods].descmethod[dm].sdesc}
- : {$methods[methods].descmethod[dm].sdesc}
- {/if}
- </li>
- {/section}
- </ul>
- {/if}
-</div>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl
deleted file mode 100644
index e5e1913c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl
+++ /dev/null
@@ -1,211 +0,0 @@
-{include file="header.tpl" top3=true}
-
-<h2 class="file-name">{$source_location}</h2>
-
-<a name="sec-description"></a>
-<div class="info-box">
- <div class="info-box-title">Description</div>
- <div class="nav-bar">
- {if $classes || $includes || $defines || $globals || $functions}
- <span class="disabled">Description</span> |
- {/if}
- {if $classes}
- <a href="#sec-classes">Classes</a>
- {if $includes || $defines || $globals || $functions}|{/if}
- {/if}
- {if $includes}
- <a href="#sec-includes">Includes</a>
- {if $defines || $globals || $functions}|{/if}
- {/if}
- {if $defines}
- <a href="#sec-constants">Constants</a>
- {if $globals || $functions}|{/if}
- {/if}
- {if $globals}
- <a href="#sec-variables">Variables</a>
- {if $functions}|{/if}
- {/if}
- {if $functions}
- <a href="#sec-functions">Functions</a>
- {/if}
- </div>
- <div class="info-box-body">
- {include file="docblock.tpl" desc=$desc sdesc=$sdesc tags=$tags}
-
- {if $tutorial}
- <hr class="separator" />
- <div class="notes">Tutorial: <span class="tutorial">{$tutorial}</div>
- {/if}
- </div>
-</div>
-
-{if $classes}
- <a name="sec-classes"></a>
- <div class="info-box">
- <div class="info-box-title">Classes</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- <span class="disabled">Classes</span>
- {if $includes || $defines || $globals || $functions}|{/if}
- {if $includes}
- <a href="#sec-includes">Includes</a>
- {if $defines || $globals || $functions}|{/if}
- {/if}
- {if $defines}
- <a href="#sec-constants">Constants</a>
- {if $globals || $functions}|{/if}
- {/if}
- {if $globals}
- <a href="#sec-variables">Variables</a>
- {if $functions}|{/if}
- {/if}
- {if $functions}
- <a href="#sec-functions">Functions</a>
- {/if}
- </div>
- <div class="info-box-body">
- <table cellpadding="2" cellspacing="0" class="class-table">
- <tr>
- <th class="class-table-header">Class</th>
- <th class="class-table-header">Description</th>
- </tr>
- {section name=classes loop=$classes}
- <tr>
- <td style="padding-right: 2em; vertical-align: top">
- {$classes[classes].link}
- </td>
- <td>
- {if $classes[classes].sdesc}
- {$classes[classes].sdesc}
- {else}
- {$classes[classes].desc}
- {/if}
- </td>
- </tr>
- {/section}
- </table>
- </div>
- </div>
-{/if}
-
-{if $includes}
- <a name="sec-includes"></a>
- <div class="info-box">
- <div class="info-box-title">Includes</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $classes}
- <a href="#sec-classes">Classes</a>
- {if $includes || $defines || $globals || $functions}|{/if}
- {/if}
- <span class="disabled">Includes</span>
- {if $defines || $globals || $functions}|{/if}
- {if $defines}
- <a href="#sec-constants">Constants</a>
- {if $globals || $functions}|{/if}
- {/if}
- {if $globals}
- <a href="#sec-variables">Variables</a>
- {if $functions}|{/if}
- {/if}
- {if $functions}
- <a href="#sec-functions">Functions</a>
- {/if}
- </div>
- <div class="info-box-body">
- {include file="include.tpl"}
- </div>
- </div>
-{/if}
-
-{if $defines}
- <a name="sec-constants"></a>
- <div class="info-box">
- <div class="info-box-title">Constants</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $classes}
- <a href="#sec-classes">Classes</a>
- {if $includes || $defines || $globals || $functions}|{/if}
- {/if}
- {if $includes}
- <a href="#sec-includes">Includes</a>
- {if $defines || $globals || $functions}|{/if}
- {/if}
- <span class="disabled">Constants</span>
- {if $globals || $functions}|{/if}
- {if $globals}
- <a href="#sec-variables">Variables</a>
- {if $functions}|{/if}
- {/if}
- {if $functions}
- <a href="#sec-functions">Functions</a>
- {/if}
- </div>
- <div class="info-box-body">
- {include file="define.tpl"}
- </div>
- </div>
-{/if}
-
-{if $globals}
- <a name="sec-variables"></a>
- <div class="info-box">
- <div class="info-box-title">Variables</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $classes}
- <a href="#sec-classes">Classes</a>
- {if $includes || $defines || $globals || $functions}|{/if}
- {/if}
- {if $includes}
- <a href="#sec-includes">Includes</a>
- {if $defines || $globals || $functions}|{/if}
- {/if}
- {if $defines}
- <a href="#sec-constants">Constants</a>
- {if $globals || $functions}|{/if}
- {/if}
- <span class="disabled">Variables</span>
- {if $functions}|{/if}
- {if $globals}
- <a href="#sec-functions">Functions</a>
- {/if}
- </div>
- <div class="info-box-body">
- {include file="global.tpl"}
- </div>
- </div>
-{/if}
-
-{if $functions}
- <a name="sec-functions"></a>
- <div class="info-box">
- <div class="info-box-title">Functions</div>
- <div class="nav-bar">
- <a href="#sec-description">Description</a> |
- {if $classes}
- <a href="#sec-classes">Classes</a>
- {if $includes || $defines || $globals || $functions}|{/if}
- {/if}
- {if $includes}
- <a href="#sec-includes">Includes</a>
- {if $defines || $globals || $functions}|{/if}
- {/if}
- {if $defines}
- <a href="#sec-constants">Constants</a>
- {if $globals || $functions}|{/if}
- {/if}
- {if $globals}
- <a href="#sec-variables">Variables</a>
- {if $functions}|{/if}
- {/if}
- <span class="disabled">Functions</span>
- </div>
- <div class="info-box-body">
- {include file="function.tpl"}
- </div>
- </div>
-{/if}
-
-{include file="footer.tpl" top3=true}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl
deleted file mode 100644
index 542af8ed..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{include file="header.tpl"}
-<a name="top"></a>
-<h2>[{$package}] element index</h2>
-{if count($packageindex) > 1}
- <h3>Package indexes</h3>
- <ul>
- {section name=p loop=$packageindex}
- {if $packageindex[p].title != $package}
- <li><a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a></li>
- {/if}
- {/section}
- </ul>
-{/if}
-<a href="elementindex.html">All elements</a>
-<br />
-{include file="basicindex.tpl" indexname=elementindex_$package}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl
deleted file mode 100644
index c4cb83f9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<h1 align="center">{$name}</h1>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl
deleted file mode 100644
index 5ab0bca2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{include file="header.tpl" title="Todo List"}
-<div align="center"><h1>Todo List</h1></div>
-{foreach from=$todos key=todopackage item=todo}
-<h2>{$todopackage}</h2>
-{section name=todo loop=$todo}
-<h3>{$todo[todo].link}</h3>
-<ul>
-{section name=t loop=$todo[todo].todos}
- <li>{$todo[todo].todos[t]}</li>
-{/section}
-</ul>
-{/section}
-{/foreach}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl
deleted file mode 100644
index 31f559cb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!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">
- <head>
- <!-- template designed by Marco Von Ballmoos -->
- <title>{$title}</title>
- <link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
- <link rel="stylesheet" href="{$subdir}media/banner.css" />
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
- </head>
- <body>
- <div class="banner">
- <div class="banner-title">PRADO API Manual</div>
- <div class="banner-menu">
- <table cellpadding="0" cellspacing="0" style="width: 100%">
- <tr>
- <td>
- {if count($ric) >= 1}
- {assign var="last_ric_name" value=""}
- {section name=ric loop=$ric}
- {if $last_ric_name != ""} | {/if}
- <a href="{$ric[ric].file}" target="right">{$ric[ric].name}</a>
- {assign var="last_ric_name" value=$ric[ric].name}
- {/section}
- {/if}
- </td>
- <td style="width: 2em">&nbsp;</td>
- <td style="text-align: right">
- {if count($packages) > 1}
- {assign var="last_package_name" value=""}
- {section name=p loop=$packages}
- {if $last_package_name != ""} | {/if}
- <a href="{$packages[p].link}" target="left_bottom">{$packages[p].title}</a>
- {assign var="last_package_name" value=$packages[p].title}
- {/section}
- {/if}
- </td>
- </tr>
- </table>
- </div>
- </div>
- </body>
- </html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl
deleted file mode 100644
index deb1ee04..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-{include file="header.tpl" title=$title top3=true}
-
-{if $nav}
- {include file="tutorial_nav.tpl" prev=$prev next=$next up=$up prevtitle=$prevtitle nexttitle=$nexttitle uptitle=$uptitle}
-{/if}
-
-{$contents}
-
-{if $nav}
- {include file="tutorial_nav.tpl" prev=$prev next=$next up=$up prevtitle=$prevtitle nexttitle=$nexttitle uptitle=$uptitle}
-{/if}
-
-{include file="footer.tpl" top3=true} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl
deleted file mode 100644
index 9b42fec8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl
+++ /dev/null
@@ -1,41 +0,0 @@
-<table class="tutorial-nav-box">
- <tr>
- <td style="width: 30%">
- {if $prev}
- <a href="{$prev}" class="nav-button">Previous</a>
- {else}
- <span class="nav-button-disabled">Previous</span>
- {/if}
- </td>
- <td style="text-align: center">
- {if $up}
- <a href="{$up}" class="nav-button">Up</a>
- {/if}
- </td>
- <td style="text-align: right; width: 30%">
- {if $next}
- <a href="{$next}" class="nav-button">Next</a>
- {else}
- <span class="nav-button-disabled">Next</span>
- {/if}
- </td>
- </tr>
- <tr>
- <td style="width: 30%">
- {if $prevtitle}
- <span class="detail">{$prevtitle}</span>
- {/if}
- </td>
- <td style="text-align: center">
- {if $uptitle}
- <span class="detail">{$uptitle}</span>
- {/if}
- </td>
- <td style="text-align: right; width: 30%">
- {if $nexttitle}
- <span class="detail">{$nexttitle}</span>
- {/if}
- </td>
- </tr>
-</table>
- \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl
deleted file mode 100644
index 314ebd81..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,39 +0,0 @@
-{if count($toc)}
-<h1 class="title">Table of Contents</h1>
-<ul class="toc">
- {assign var="lastcontext" value='refsect1'}
- {section name=toc loop=$toc}
-
- {if $toc[toc].tagname != $lastcontext}
- {if $lastcontext == 'refsect1'}
- <ul class="toc">
- <li>{$toc[toc].link}</li>
- {else}
- {if $lastcontext == 'refsect2'}
- {if $toc[toc].tagname == 'refsect1'}
- </ul>
- <li>{$toc[toc].link}</li>
- {/if}
- {if $toc[toc].tagname == 'refsect3'}
- <ul class="toc">
- <li>{$toc[toc].link}</li>
- {/if}
- {else}
- </ul>
- <li>{$toc[toc].link}</li>
- {/if}
- {/if}
- {assign var="lastcontext" value=$toc[toc].tagname}
- {else}
- <li>{$toc[toc].link}</li>
- {/if}
- {/section}
- {if $lastcontext == 'refsect2'}
- </ul>
- {/if}
- {if $lastcontext == 'refsect3'}
- </ul>
- </ul>
- {/if}
-</ul>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl
deleted file mode 100644
index d5a18355..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<div><a href="{$main.link}" target="right">{$main.title|strip_tags}</a></div>
-{if $haskids}
-<div style="margin-left: 1em">
- {$kids}
-</div>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl
deleted file mode 100644
index 59c4d8cd..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl
+++ /dev/null
@@ -1,44 +0,0 @@
-{section name=vars loop=$vars}
-<a name="var{$vars[vars].var_name}" id="{$vars[vars].var_name}"><!-- --></A>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="var-header">
- <span class="var-title">
- <span class="var-type">{$vars[vars].var_type}</span>
- <span class="var-name">{$vars[vars].var_name}</span>
- {if $vars[vars].var_default} = <span class="var-default">{$vars[vars].var_default|replace:"\n":"<br />"}</span>{/if}
- (line <span class="line-number">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>)
- </span>
- </div>
-
- {include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}
-
- {if $vars[vars].var_overrides}
- <hr class="separator" />
- <div class="notes">Redefinition of:</div>
- <dl>
- <dt>{$vars[vars].var_overrides.link}</dt>
- {if $vars[vars].var_overrides.sdesc}
- <dd>{$vars[vars].var_overrides.sdesc}</dd>
- {/if}
- </dl>
- {/if}
-
- {if $vars[vars].descvar}
- <hr class="separator" />
- <div class="notes">Redefined in descendants as:</div>
- <ul class="redefinitions">
- {section name=vm loop=$vars[vars].descvar}
- <li>
- {$vars[vars].descvar[vm].link}
- {if $vars[vars].descvar[vm].sdesc}
- : {$vars[vars].descvar[vm].sdesc}
- {/if}
- </li>
- {/section}
- </ul>
- {/if}
-
-</div>
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc b/buildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc
deleted file mode 100644
index f4fa31d3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc
+++ /dev/null
@@ -1,241 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * All abstract representations of html tags in DocBlocks are handled by the
- * classes in this file
- *
- * Before version 1.2, phpDocumentor simply passed html to converters, without
- * much thought, except the {@link adv_htmlentities()} function was provided
- * along with a list of allowed html. That list is no longer used, in favor
- * of these classes.
- *
- * The PDF Converter output looked wretched in version 1.1.0 because line breaks
- * in DocBlocks were honored. This meant that output often had just a few words
- * on every other line! To fix this problem, DocBlock descriptions are now
- * parsed using the {@link ParserDescParser}, and split into paragraphs. In
- * addition, html in DocBlocks are parsed into these objects to allow for easy
- * conversion in destination converters. This design also allows different
- * conversion for different templates within a converter, which separates
- * design from logic almost 100%
- * @package phpDocumentor
- * @subpackage DescHTML
- * @since 1.2
- */
-/**
- * Used for <<code>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserCode extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::ProgramExample()
- */
- function Convert(&$c)
- {
- if (!isset($this->value[0])) return '';
- if (is_string($this->value[0]) && $this->value[0]{0} == "\n")
- {
- $this->value[0] = substr($this->value[0],1);
- }
- $linktags = array();
- foreach($this->value as $val) {
- if (phpDocumentor_get_class($val) == 'parserlinkinlinetag' ||
- phpDocumentor_get_class($val) == 'parsertutorialinlinetag') {
- $linktags[] = array($c->postProcess($val->Convert($c, false, false)), $val);
- }
- }
- $a = $c->ProgramExample(rtrim(ltrim(parent::Convert($c, false, false), "\n\r")));
- foreach ($linktags as $tag) {
- $a = str_replace($tag[0], $tag[1]->Convert($c, false, false), $a);
- }
- return $a;
-// else return $c->PreserveWhiteSpace($this->getString(false));
- }
-}
-
-/**
- * Used for <<pre>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserPre extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::PreserveWhiteSpace()
- */
- function Convert(&$c)
- {
- return $c->PreserveWhiteSpace(rtrim(ltrim(parent::Convert($c, false, false), "\n\r")));
- }
-}
-
-/**
- * Used for <<b>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserB extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::Bolden()
- */
- function Convert(&$c)
- {
- return $c->Bolden(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<i>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserI extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::Italicize()
- */
- function Convert(&$c)
- {
- return $c->Italicize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<var>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserDescVar extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::Varize()
- */
- function Convert(&$c)
- {
- return $c->Varize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<samp>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserSamp extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::Sampize()
- */
- function Convert(&$c)
- {
- return $c->Sampize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<kbd>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserKbd extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::Kbdize()
- */
- function Convert(&$c)
- {
- return $c->Kbdize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<br>> in a description
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserBr extends parserStringWithInlineTags
-{
- /**
- * @param Converter
- * @uses Converter::Br()
- */
- function Convert(&$c)
- {
- return $c->Br($this->getString());
- }
-}
-
-/**
- * Used for lists <<ol>> and <<ul>>
- * @package phpDocumentor
- * @subpackage DescHTML
- */
-class parserList extends parserStringWithInlineTags
-{
- /** @var boolean */
- var $numbered;
- /** @var integer */
- var $items = 0;
- /**
- * @param integer
- */
- function parserList($numbered)
- {
- $this->numbered = $numbered;
- }
-
- /** @param parserStringWithInlineTags */
- function addItem($item)
- {
- $this->value[$this->items++] = $item;
- }
-
- /** @param parserList */
- function addList($list)
- {
- $this->value[$this->items++] = $list;
- }
-
- /**
- * @uses Converter::ListItem() enclose each item of the list
- * @uses Converter::EncloseList() enclose the list
- * @param Converter
- */
- function Convert(&$c)
- {
- $list = '';
- foreach($this->value as $item)
- {
- $list .= $c->ListItem(trim($item->Convert($c)));
- }
- return $c->EncloseList($list,$this->numbered);
- }
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/DocBlock/Lexer.inc b/buildscripts/PhpDocumentor/phpDocumentor/DocBlock/Lexer.inc
deleted file mode 100644
index edfc896c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/DocBlock/Lexer.inc
+++ /dev/null
@@ -1,701 +0,0 @@
-<?php
-define('PHPDOC_LEXER_DESC', 1);
-define('PHPDOC_LEXER_TAGS', 2);
-define('PHPDOC_LEXER_ESCTAG', 3);
-define('PHPDOC_LEXER_INLINETAG', 4);
-define('PHPDOC_LEXER_INTERNAL', 5);
-define('PHPDOC_LEXER_INTERNALTAG', 6);
-define('PHPDOC_LEXER_SIMPLELIST', 7);
-define('PHPDOC_DOCBLOCK_TOKEN_NEWLINE', 1);
-define('PHPDOC_DOCBLOCK_TOKEN_DESC', 2);
-define('PHPDOC_DOCBLOCK_TOKEN_ESCTAGOPEN', 3);
-define('PHPDOC_DOCBLOCK_TOKEN_ESCTAGCLOSE', 4);
-define('PHPDOC_DOCBLOCK_TOKEN_TAG', 5);
-define('PHPDOC_DOCBLOCK_TOKEN_INLINETAG', 6);
-define('PHPDOC_DOCBLOCK_TOKEN_INLINETAGCLOSE', 7);
-define('PHPDOC_DOCBLOCK_TOKEN_INTERNAL', 8);
-define('PHPDOC_DOCBLOCK_TOKEN_INTERNALCLOSE', 9);
-define('PHPDOC_DOCBLOCK_TOKEN_HTMLTAG', 10);
-define('PHPDOC_DOCBLOCK_TOKEN_HTMLTAGCLOSE', 11);
-define('PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTSTART', 12);
-define('PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTEND', 13);
-define('PHPDOC_DOCBLOCK_TOKEN_UNORDEREDBULLET', 14);
-define('PHPDOC_DOCBLOCK_TOKEN_ORDEREDBULLET', 15);
-class PhpDocumentor_DocBlock_Lexer
-{
- var $processedline;
- var $tagStack = array();
- var $tokens = array();
- var $simplelist = array();
- var $whitespace = array();
- var $states = array(PHPDOC_LEXER_DESC);
- function tokenName($token)
- {
- $this->tokens = array(
- PHPDOC_DOCBLOCK_TOKEN_NEWLINE => 'PHPDOC_DOCBLOCK_TOKEN_NEWLINE',
- PHPDOC_DOCBLOCK_TOKEN_DESC => 'PHPDOC_DOCBLOCK_TOKEN_DESC',
- PHPDOC_DOCBLOCK_TOKEN_ESCTAGOPEN => 'PHPDOC_DOCBLOCK_TOKEN_ESCTAGOPEN',
- PHPDOC_DOCBLOCK_TOKEN_ESCTAGCLOSE => 'PHPDOC_DOCBLOCK_TOKEN_ESCTAGCLOSE',
- PHPDOC_DOCBLOCK_TOKEN_TAG => 'PHPDOC_DOCBLOCK_TOKEN_TAG',
- PHPDOC_DOCBLOCK_TOKEN_INLINETAG => 'PHPDOC_DOCBLOCK_TOKEN_INLINETAG',
- PHPDOC_DOCBLOCK_TOKEN_INLINETAGCLOSE => 'PHPDOC_DOCBLOCK_TOKEN_INLINETAGCLOSE',
- PHPDOC_DOCBLOCK_TOKEN_INTERNAL => 'PHPDOC_DOCBLOCK_TOKEN_INTERNAL',
- PHPDOC_DOCBLOCK_TOKEN_INTERNALCLOSE => 'PHPDOC_DOCBLOCK_TOKEN_INTERNALCLOSE',
- );
- if (in_array($token, array_keys($this->tokens))) {
- return $this->tokens[$token];
- }
- return 'UNKNOWN';
- }
-
- function lex($comment)
- {
- $comment = str_replace(array("\r\n", "\r"), array("\n", "\n"), $comment);
- $comment = explode("\n", $comment);
- $this->tokens = array();
- $state = PHPDOC_LEXER_DESC;
- $this->states = array(PHPDOC_LEXER_DESC);
- $tid = 0;
- $token = '';
- $esctag = false;
- $this->exception = false;
- list($lastline,) = each(array_reverse($comment, true));
- foreach ($comment as $this->linenum => $line) {
- if ($this->exception) {
- $this->tokens = array();
- return false;
- }
- $linestart = true;
- $this->processedline = trim($line);
- if ($this->processedline == '*/') {
- break;
- }
- if (!$this->processedline) {
- continue;
- }
- if (substr($this->processedline, 0, 3) == '/**') {
- $this->processedline = substr($this->processedline, 3);
- if (!$this->processedline) {
- continue;
- }
- if (trim($this->processedline) == '*/') {
- $this->endSimpleList();
- break;
- }
- } else {
- $this->processedline = substr($this->processedline, 1);
- }
- while (true) {
- switch ($state) {
- case PHPDOC_LEXER_INTERNALTAG :
- $internalendpos = strpos($this->processedline, '}}');
- case PHPDOC_LEXER_TAGS :
- $trimline = trim($this->processedline);
- if (strlen($trimline) && $trimline{0} == '@') {
- if (preg_match('/^(@[^\s]+)\s/', $trimline, $matches) ||
- preg_match('/^(@[^\s]+)$/', $trimline, $matches)) {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_TAG,
- $matches[1]);
- $this->processedline = substr($trimline, strpos($trimline, $matches[1]) +
- strlen($matches[1]));
- if (!$this->processedline) {
- break 2;
- }
- continue 2; // to while(true)
- }
- } elseif (preg_match('/^@/', $trimline, $matches)) {
- // throw exception for invalid tag
- return $this->throwException('Invalid tag encountered in line number ' .
- $this->linenum . ': "' . $line . '"', 'tag');
- } else {
- $tagpos = strpos($this->processedline, '<');
- $inlinetagpos = strpos($this->processedline, '{@');
- if (isset($internalendpos) && $internalendpos !== false) {
- do {
- if ($tagpos !== false && $internalendpos > $tagpos) {
- break;
- }
- if ($inlinetagpos !== false && $internalendpos > $inlinetagpos) {
- break;
- }
- // }} is the next important token
- $this->appendDesc(substr($this->processedline, 0,
- $internalendpos));
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_INTERNALCLOSE, '}}');
- $this->processedline = substr($this->processedline, $internalendpos
- + 2);
- array_shift($this->states);
- $state = PHPDOC_LEXER_TAGS;
- continue 3; // to while(true);
- } while (false);
- }
- if ($tagpos !== false && $inlinetagpos !== false) {
- if ($tagpos > $inlinetagpos) {
- $tagpos = false;
- } else {
- $inlinetagpos = false;
- }
- }
- if ($tagpos !== false) {
- continue $this->searchForHTMLTag($tagpos,
- $state, $esctag, $linestart, $trimline);
- }
- if ($inlinetagpos !== false) {
- $state = $this->searchForInlineTag($inlinetagpos, $comment);
- $linestart = false;
- continue 2; // to while (true)
- }
- if (strpos($this->processedline, '*/')) {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_DESC,
- substr($this->processedline,
- 0, strpos($this->processedline, '*/')));
- return $this->tokens;
- }
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_DESC, $this->processedline);
- }
- break;
- case PHPDOC_LEXER_INTERNAL :
- $internalendpos = strpos($this->processedline, '}}');
- case PHPDOC_LEXER_SIMPLELIST :
- if ($linestart && $state == PHPDOC_LEXER_SIMPLELIST) {
- if (!$this->processSimpleList()) {
- while (count($this->simplelist) && !$this->processSimpleList());
- }
- if (!count($this->simplelist)) {
- array_shift($this->states);
- $state = array_shift($this->states);
- array_unshift($this->states, $state);
- }
- }
- case PHPDOC_LEXER_DESC :
- if (strpos($this->processedline, '*/')) {
- $this->processedline = substr($this->processedline,
- 0, strpos($this->processedline, '*/'));
- }
- if (!$this->processedline) {
- if ($this->linenum != $lastline) {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_NEWLINE, "\n");
- }
- continue 3; // to foreach
- }
- $trimline = trim($this->processedline);
- if ($linestart && $state != PHPDOC_LEXER_TAGS && $trimline{0} == '@') {
- if ($state == PHPDOC_LEXER_INTERNAL) {
- // throw exception
- return $this->throwException('Cannot start tags in {@internal}} ' .
- ' in line number ' .
- $this->linenum . ': "' . $line . '"', 'tag');
- }
- $this->states = array(PHPDOC_LEXER_TAGS);
- $state = PHPDOC_LEXER_TAGS;
- continue 2; // to while(true)
-
- }
- if ($state != PHPDOC_LEXER_SIMPLELIST && $linestart && strlen($trimline) > 3 &&
- ($trimline{0} == '-' || $trimline{0} == '*' ||
- $trimline{0} == '#' || $trimline{0} == 'o' ||
- $trimline{0} == '1')) {
- if ($this->searchForSimplelist($trimline)) {
- $state = PHPDOC_LEXER_SIMPLELIST;
- $linestart = false;
- continue 2; // to while(true)
- }
- }
- $tagpos = strpos($this->processedline, '<');
- $inlinetagpos = strpos($this->processedline, '{@');
- if (isset($internalendpos) && $internalendpos !== false) {
- do {
- if ($tagpos !== false && $internalendpos > $tagpos) {
- break;
- }
- if ($inlinetagpos !== false && $internalendpos > $inlinetagpos) {
- break;
- }
- // }} is the next important token
- $this->appendDesc(substr($this->processedline, 0, $internalendpos));
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_INTERNALCLOSE, '}}');
- $this->processedline = substr($this->processedline, $internalendpos
- + 2);
- array_shift($this->states);
- $state = PHPDOC_LEXER_DESC;
- continue 3; // to while(true);
- } while (false);
- }
- if ($tagpos !== false && $inlinetagpos !== false) {
- if ($tagpos > $inlinetagpos) {
- $tagpos = false;
- } else {
- $inlinetagpos = false;
- }
- }
- if ($tagpos !== false) {
- continue $this->searchForHTMLTag($tagpos, $state,
- $esctag, $linestart, $trimline);
- }
- if ($inlinetagpos !== false) {
- $state = $this->searchForInlineTag($inlinetagpos, $comment);
- $linestart = false;
- continue 2; // to while (true)
- }
- $this->appendDesc($this->processedline);
- break;
- case PHPDOC_LEXER_ESCTAG :
- if (!$this->processedline) {
- if ($this->linenum != $lastline) {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_NEWLINE, "\n");
- }
- continue 3; // to foreach
- }
- $endpos = strpos($this->processedline, $esctag);
- $inlinetagpos = strpos($this->processedline, '{@');
- if ($endpos !== false && $inlinetagpos !== false) {
- if ($endpos > $inlinetagpos) {
- $endpos = false;
- } else {
- $inlinetagpos = false;
- }
- }
- if ($endpos !== false) {
- if (strlen(substr($this->processedline, 0, $endpos))) {
- $this->appendDesc(substr($this->processedline, 0, $endpos));
- }
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ESCTAGCLOSE, $esctag);
- $this->processedline = substr($this->processedline, $endpos +
- strlen($esctag));
- $state = $this->states[0];
- if (count($this->states) > 1) {
- array_shift($this->states);
- }
- if (!$this->processedline) {
- break 2;
- }
- }
- if ($inlinetagpos !== false) {
- array_unshift($this->states, PHPDOC_LEXER_ESCTAG);
- $state = $this->searchForInlineTag($inlinetagpos, $comment);
- $linestart = false;
- continue 2; // to while (true)
- }
- $this->appendDesc($this->processedline);
- break;
- case PHPDOC_LEXER_INLINETAG :
- if (!$this->processedline) {
- if ($this->linenum != $lastline) {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_NEWLINE, "\n");
- }
- continue 3; // to foreach
- }
- $endpos = strpos($this->processedline, '}');
- if ($endpos !== false) {
- if (strlen(substr($this->processedline, 0, $endpos))) {
- $this->appendDesc(substr($this->processedline, 0, $endpos));
- }
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_INLINETAGCLOSE, '}');
- $this->processedline = substr($this->processedline, $endpos + 1); // strlen('}')
- $state = $this->states[0];
- if (count($this->states) > 1) {
- array_shift($this->states);
- }
- if (!$this->processedline) {
- break 2;
- }
- if ($state != PHPDOC_LEXER_INLINETAG && strlen($this->processedline)) {
- $linestart = false;
- continue 2; // to while (true)
- }
- }
- $this->appendDesc($this->processedline);
- break;
- }
- break;
- }
- if ($this->linenum != $lastline) {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_NEWLINE, "\n");
- }
- }
- return $this->tokens;
- }
-
- function searchForSimplelist($trimline)
- {
- $whitespace = strpos($this->processedline, $trimline);
- switch ($trimline{0}) {
- case '-' :
- case '*' :
- case '+' :
- case 'o' :
- if (strlen($trimline) < 3 || $trimline{1} != ' ') {
- return false;
- }
- // unordered lists
- $this->simplelist[] = 'u' . $trimline{0};
- $this->whitespace[] = $whitespace;
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTSTART, '');
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_UNORDEREDBULLET, $trimline{0});
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- $trimline{0}) + 2);
- array_unshift($this->states, PHPDOC_LEXER_SIMPLELIST);
- return true;
- break;
- case '#' :
- if (strlen($trimline) < 3) {
- return false;
- }
- // ordered lists
- $this->simplelist[] = '#1';
- $this->whitespace[] = $whitespace;
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTSTART, '');
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ORDEREDBULLET, '#');
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- '#') + 2);
- array_unshift($this->states, PHPDOC_LEXER_SIMPLELIST);
- return true;
- case '1' :
- if (strlen($trimline) < 4) {
- return false;
- }
- if ($trimline{1} == ' ') {
- $this->simplelist[] = 'O1';
- } elseif ($trimline{1} == '.' && $trimline{2} == ' ') {
- $this->simplelist[] = 'o1';
- } else {
- return false;
- }
- $this->whitespace[] = $whitespace;
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTSTART, '');
- if ($trimline{1} == '.') {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ORDEREDBULLET, '1.');
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- '1.') + 3);
- } else {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ORDEREDBULLET, '1');
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- '1') + 2);
- }
- array_unshift($this->states, PHPDOC_LEXER_SIMPLELIST);
- return true;
- }
- return false;
- }
-
- /**
- * @todo process multi-line elements via whitespace
- * @todo process nested simple lists
- */
- function processSimpleList()
- {
- $trimline = trim($this->processedline);
- $index = count($this->simplelist) - 1;
- $whitespace = strpos($this->processedline, $trimline);
- if ($whitespace < $this->whitespace[$index]) {
- while (count($this->whitespace[$index]) && $whitespace < $this->whitespace[$index]) {
- // the end of the current simplelist
- $this->tokens = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTEND, '');
- array_pop($this->simplelist);
- $index--;
- }
- if ($index == -1) {
- return false; // all simple lists concluded
- }
- }
- if ($whitespace > $this->whitespace[$index]) {
- // could be a multi-line element or a new list
- if (!$this->searchForSimplelist($trimline)) {
- // trim off the simple list whitespace if this is multi-line
- $this->processedline = substr($this->processedline, $this->whitespace[$index] + 2);
- }
- return true;
- }
- // implied: whitespace matches exactly so this is either another
- // bullet point or the end of the simple list
- switch ($this->simplelist[$index]{0}) {
- case 'u' :
- if (strlen($trimline) < 3 || $trimline{0} != $this->simplelist[$index]{1} ||
- $trimline{1} != ' ') {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTEND, '');
- array_pop($this->simplelist);
- return false;
- }
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_UNORDEREDBULLET, $trimline{0});
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- $trimline{0}) + 2);
- break;
- case 'o' :
- if (strlen($trimline) < 4 || ($trimline{0} !=
- ($this->simplelist[$index]{1} + 1) . '') ||
- $trimline{1} != '.' || $trimline{2} != ' ') {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTEND, '');
- array_pop($this->simplelist);
- return false;
- }
- $this->simplelist[$index] = $this->simplelist[$index]{0} .
- ($this->simplelist[$index]{1} + 1);
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ORDEREDBULLET,
- $this->simplelist[$index]{1} . '.');
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- $trimline{0} . '.') + 3);
- break;
- case 'O' :
- if (strlen($trimline) < 3 || $trimline{0} != ($this->simplelist[$index]{1} + 1) . '' ||
- $trimline{1} != ' ') {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTEND, '');
- array_pop($this->simplelist);
- return false;
- }
- $this->simplelist[$index] = $this->simplelist[$index]{0} .
- ($this->simplelist[$index]{1} + 1);
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ORDEREDBULLET,
- $this->simplelist[$index]{1});
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- $this->simplelist[$index]{1}) + 2);
- break;
- case '#' :
- if (strlen($trimline) < 3 || $trimline{0} != '#' ||
- $trimline{1} != ' ') {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTEND, '');
- array_pop($this->simplelist);
- return false;
- }
- $this->simplelist[$index] = $this->simplelist[$index]{0} .
- ($this->simplelist[$index]{1} + 1);
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ORDEREDBULLET,
- $this->simplelist[$index]{1});
- $this->processedline = substr($this->processedline, strpos($this->processedline,
- '#') + 2);
- break;
- }
- return true;
- }
-
- function searchForHTMLTag($tagpos, &$state, &$esctag, &$linestart,
- &$trimline)
- {
- if (preg_match('/^<(<\/?[a-zA-Z]+ ?\/?>)>/', substr($this->processedline, $tagpos),
- $matches)) {
- if ($tagpos) {
- $this->appendDesc(substr($this->processedline, 0, $tagpos));
- }
- $this->appendDesc($matches[1]);
- $this->processedline = substr($this->processedline, $tagpos
- + strlen($matches[1])
- + 2);
- return 2;
- } elseif (!count($matches) &&
- preg_match('/^<(<\/?[a-zA-Z]+ ?\/?>)>/', substr($this->processedline, $tagpos + 1),
- $matches)) {
- if ($tagpos) {
- $this->appendDesc(substr($this->processedline, 0, $tagpos));
- }
- $this->appendDesc('<' . $matches[1]);
- $this->processedline = substr($this->processedline, $tagpos
- + strlen($matches[1])
- + 3);
- return 2;
- } elseif (preg_match('#^(br>|br/>|br />)#',
- substr($this->processedline, $tagpos + 1), $matches)) {
- if ($tagpos) {
- $this->appendDesc(substr($this->processedline, 0, $tagpos));
- }
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_HTMLTAG, 'br');
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_HTMLTAGCLOSE, 'br');
- $this->processedline = substr($this->processedline, $tagpos
- + strlen($matches[1])
- + 1);
- return 2;
- } elseif (preg_match('/^(b>|i>|li>|ol>|ul>|p>|pre>|var>)/',
- substr($this->processedline, $tagpos + 1), $matches)) {
- if ($tagpos) {
- $this->appendDesc(substr($this->processedline, 0, $tagpos));
- }
- $matches = substr($matches[1], 0, strlen($matches[1]) - 1);
- array_push($this->tagStack, $matches);
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_HTMLTAG, $matches);
- $this->processedline = substr($this->processedline, $tagpos
- + strlen($matches)
- + 2);
- return 2;
- } elseif (preg_match('#^(/b>|/i>|/li>|/ol>|/ul>|/p>|/pre>|/var>)#',
- substr($this->processedline, $tagpos + 1), $matches)) {
- if ($tagpos) {
- $this->appendDesc(substr($this->processedline, 0, $tagpos));
- }
- $matches = substr($matches[1], 1, strlen($matches[1]) - 2);
- $test = array_pop($this->tagStack);
- if ($matches != $test) {
- // throw exception
- $this->throwException('Invalid closing html tag encountered in line number ' .
- $this->linenum . ': "</' . $matches . '>", expecting "</' . $test . '>"', 'htmltag');
- return 3;
- }
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_HTMLTAGCLOSE, $matches);
- $this->processedline = substr($this->processedline, $tagpos
- + strlen($matches)
- + 3);
- return 2;
- } elseif (preg_match('/^(code>|pre>|kbd>|samp>)/',
- substr($this->processedline, $tagpos + 1), $matches)) {
- $esctag = '</' . $matches[0];
- if ($tagpos) {
- $this->appendDesc(substr($this->processedline, 0, $tagpos));
- }
- switch ($matches[0]) {
- case 'code>' :
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ESCTAGOPEN,
- '<code>');
- break;
- case 'pre>' :
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ESCTAGOPEN,
- '<pre>');
- break;
- case 'kbd>' :
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ESCTAGOPEN,
- '<kbd>');
- break;
- case 'samp>' :
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_ESCTAGOPEN,
- '<samp>');
- break;
- }
- $this->processedline = $line = substr($this->processedline, $tagpos
- + strlen($matches[0])
- + 1);
- $state = PHPDOC_LEXER_ESCTAG;
- if (!$this->processedline) {
- return 3; // to foreach
- }
- if (strpos($this->processedline, $esctag) !== false) {
- if (!strpos($this->processedline, $esctag)) {
- $linestart = false;
- return 2; // to while (true)
- }
- if (strpos($this->processedline, $esctag)) {
- $this->appendDesc(substr($this->processedline, 0,
- strpos($this->processedline, $esctag)));
- }
- $this->processedline = $trimline =
- substr($this->processedline, strpos($this->processedline, $esctag));
- $linestart = false;
- return 2; // to while(true)
- }
- }
- }
-
- function searchForInlineTag($inlinetagpos, $comment)
- {
- if ($inlinetagpos) {
- $this->appendDesc(substr($this->processedline, 0, $inlinetagpos));
- }
- if ($inlinetagpos === strpos($this->processedline, '{@internal')) {
- $state = array_shift($this->states);
- array_unshift($this->states, $state);
- if ($state == PHPDOC_LEXER_INTERNAL || $state == PHPDOC_LEXER_INTERNALTAG) {
- // throw exception
- return $this->throwException('cannot nest {@internal}} in line number ' .
- $this->linenum . ': "' . $line . '"', 'internaltag');
- }
- $basestate = array_pop($this->states);
- array_push($this->states, $basestate);
- if ($basestate == PHPDOC_LEXER_DESC) {
- $newstate = PHPDOC_LEXER_INTERNAL;
- } else {
- $newstate = PHPDOC_LEXER_INTERNALTAG;
- }
- array_unshift($this->states, $newstate);
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_INTERNAL, '{@internal');
- $this->processedline = substr($this->processedline, $inlinetagpos + strlen('{@internal'));
- return $newstate;
- }
- if (!preg_match('/^({@[^}\s]+)\s/', substr($this->processedline, $inlinetagpos), $matches)) {
- if (!preg_match('/^({@[^}\s]+)}/', substr($this->processedline, $inlinetagpos), $matches)) {
- if ($this->hasEndchar($comment, '}')) {
- $matches = array(substr($this->processedline, $inlinetagpos),
- substr($this->processedline, $inlinetagpos));
- } else {
- // throw exception if this does not match
- $this->throwException('Unclosed inline tag encountered on line number ' .
- $this->linenum . ': "' . $line . '"', 'tag');
- return PHPDOC_LEXER_DESC;
- }
- } else {
- // throw exception if this does not match
- $this->throwException('Invalid inline tag encountered in line number ' .
- $this->linenum . ': "' . $line . '"', 'tag');
- return PHPDOC_LEXER_DESC;
- }
- }
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_INLINETAG, $matches[1]);
- $this->processedline = substr($this->processedline, $inlinetagpos + strlen($matches[1]));
- return PHPDOC_LEXER_INLINETAG;
- }
-
- function appendDesc($desc)
- {
- if (!strlen($desc)) {
- return;
- }
- if (count($this->tokens)) {
- $last = array_pop($this->tokens);
- if ($last[0] == PHPDOC_DOCBLOCK_TOKEN_DESC) {
- $last[1] .= $desc;
- $this->tokens[] = $last;
- } else {
- $this->tokens[] = $last;
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_DESC, $desc);
- }
- } else {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_DESC, $desc);
- }
- }
-
- function hasEndChar($comment, $char)
- {
- $linenum = $this->linenum;
- foreach ($comment as $num => $line) {
- if ($linenum !== false && $num <= $linenum) {
- continue;
- }
- $linenum = false;
- $processedline = trim($line);
- if ($processedline == '*/') {
- break;
- }
- if (!$processedline) {
- continue;
- }
- if (substr($processedline, 0, 3) == '/**') {
- $processedline = substr($processedline, 3);
- if (!$processedline) {
- continue;
- }
- if (trim($processedline) == '*/') {
- break;
- }
- } else {
- $processedline = substr($processedline, 1);
- }
- if (strpos($processedline, $char) !== false) {
- return true;
- }
- }
- return false;
- }
-
- function endSimpleList()
- {
- if (count($this->tagStack)) {
- $this->tokens = array();
- return $this->throwException('Error: unclosed html tags: "' .
- implode(', ', $this->tagStack) . '"', 'simplelist');
- }
- while (count($this->simplelist)) {
- $this->tokens[] = array(PHPDOC_DOCBLOCK_TOKEN_SIMPLELISTEND, '');
- }
- }
-
- function throwException($message, $type)
- {
- $this->error = array($message, $this->linenum, $type);
- $this->exception = true;
- }
-}
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/DocBlockTags.inc b/buildscripts/PhpDocumentor/phpDocumentor/DocBlockTags.inc
deleted file mode 100644
index fa465deb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/DocBlockTags.inc
+++ /dev/null
@@ -1,984 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * All abstract representations of DocBlock tags are defined
- * by the classes in this file
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @since separate file since version 1.2
- */
-/**
- * used to represent standard tags like @access, etc.
- * This class is aware of inline tags, and will automatically handle them
- * using inherited functions
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: DocBlockTags.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-class parserTag extends parserStringWithInlineTags
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * always '_tag'
- * @var string
- */
- var $type = '_tag';
- /**
- * tag name (see, access, etc.)
- * @var string
- */
- var $keyword = '';
-
- /**
- * Set up the tag
- *
- * {@source}
- * @param string $keyword tag name
- * @param parserStringWithInlineTags $value
- * @param boolean whether to parse the $value for html tags
- */
- function parserTag($keyword, $value, $noparse = false)
- {
- $this->keyword = $keyword;
- if (!$noparse)
- {
- $parser = new parserDescParser;
- $parser->subscribe('*',$this);
- $parser->parse($value->value,true,'parserstringwithinlinetags');
- } else $this->value = $value;
- }
-
- /**
- * @param Converter
- * @see Converter
- */
- function Convert(&$converter)
- {
- if (is_array($this->value))
- {
- if (count($this->value) == 1)
- {
- list(,$val) = each($this->value);
- reset($this->value);
- return $val->Convert($converter);
- }
- $result = '';
- foreach($this->value as $val)
- {
- // this is only true if we processed the description in
- // the constructor
- if (phpDocumentor_get_class($val) == 'parserstringwithinlinetags')
- $result .= $converter->EncloseParagraph($val->Convert($converter));
- else
- $result .= $val->Convert($converter);
- }
- return $result;
- } else
- {
- return $this->value->Convert($converter);
- }
- }
-
- /**
- * Gets a count of the number of paragraphs in this
- * tag's description.
- *
- * Useful in determining whether to enclose the
- * tag in a paragraph or not.
- * @access private
- * @return integer
- */
- function _valueParagraphCount()
- {
- }
-
- /**
- * Called by the {@link parserDescParser} when processing a description.
- * @param integer not used
- * @param array array of {@link parserStringWithInlineTags} representing
- * paragraphs in the tag description
- * @see parserTag::parserTag()
- */
- function HandleEvent($a,$desc)
- {
- $this->value = $desc;
- }
-
- /**
- * @return string returns the text minus any inline tags
- * @see parserStringWithInlineTags::getString()
- */
- function getString()
- {
- if (is_array($this->value))
- {
- $result = '';
- foreach($this->value as $val)
- {
- $result .= $val->getString();
- }
- return $result;
- } else return $this->value->getString();
- }
-}
-
-/**
- * This class represents the @name tag
- * @tutorial tags.name.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- */
-class parserNameTag extends parserTag
-{
- /**
- * tag name
- * @var string
- */
- var $keyword = 'name';
-
- /**
- * @param string not used
- * @param string name
- */
- function parserNameTag($name, $value)
- {
- $this->value = $value;
- }
-
- /**
- * @see parserStringWithInlineTags::Convert()
- * @param Converter
- * @return string converted value of the tag
- */
- function Convert(&$c)
- {
- return $this->value;
- }
-}
-
-/**
- * This class represents the @access tag
- * @tutorial tags.access.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- */
-class parserAccessTag extends parserTag
-{
- /**
- * tag name
- * @var string
- */
- var $keyword = 'access';
-
- /**
- * set to true if the returned tag has a value type of private, protected
- * or public, false otherwise
- * @var boolean
- */
- var $isvalid = false;
-
- /**
- * checks $value to make sure it is private, protected or public, otherwise
- * it's not a valid @access tag
- * @see $isvalid
- * @param parserStringWithInlineTags $value
- */
- function parserAccessTag($value)
- {
- if (!is_string($value))
- {
- if (is_object($value))
- {
- if (method_exists($value,'getstring'))
- {
- $value = $value->getString();
- }
- }
- }
- switch(trim($value))
- {
- case 'private' :
- case 'public' :
- case 'protected' :
- $this->value = $value;
- $this->isvalid = true;
- break;
- default :
- addError(PDERROR_ACCESS_WRONG_PARAM,$value);
- $this->value = 'public';
- break;
- }
- }
-
- /**
- * @see parserStringWithInlineTags::Convert()
- * @param Converter
- * @return string converted value of the tag
- */
- function Convert(&$converter)
- {
- return $this->value;
- }
-
- /**
- * No inline tags are possible, returns 'public', 'protected' or 'private'
- * @return string returns the text minus any inline tags
- */
- function getString()
- {
- return $this->value;
- }
-}
-
-/**
- * represents "@return"
- * @tutorial tags.return.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: DocBlockTags.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-class parserReturnTag extends parserTag
-{
- /**
- * always 'return'
- * @var string
- */
- var $keyword = 'return';
- /**
- * the type a function returns
- */
- var $returnType = 'void';
-
- /**
- * contains a link to the documentation for a class passed as a type in @return, @var or @param
- *
- * Example:
- *
- * <code>
- * class myclass
- * {
- * ...
- * }
- * /** @return myclass blahblahblah
- * ...
- * </code>
- *
- * In this case, $converted_returnType will contain a link to myclass instead of the string 'myclass'
- * @var mixed either the same as $returnType or a link to the docs for a class
- * @see $returnType
- */
- var $converted_returnType = false;
-
- /**
- * @param string
- * @param parserStringWithInlineTags
- */
- function parserReturnTag($returnType, $value)
- {
- $this->returnType = $returnType;
- parent::parserTag('return',$value);
- }
-
- /**
- * sets up $converted_returnType
- * @see parserStringWithInlineTags::Convert(), $converted_returnType
- * @param Converter
- * @return string converted value of the tag
- */
- function Convert(&$converter)
- {
- $my_types = '';
- if (strpos($this->returnType,'|'))
- {
- $types = explode('|',$this->returnType);
- foreach($types as $returntype)
- {
- $a = $converter->getLink($returntype);
- if (is_object($a) && phpDocumentor_get_class($a) == 'classlink')
- {
- if (!empty($my_types)) $my_types .= '|';
- $my_types .= $converter->returnSee($a,$converter->type_adjust($returntype));
- } else
- {
- if (!empty($my_types)) $my_types .= '|';
- $my_types .= $converter->type_adjust($returntype);
- }
- }
- $this->converted_returnType = $my_types;
- } else
- {
- $a = $converter->getLink($this->returnType);
- if (is_object($a) && phpDocumentor_get_class($a) == 'classlink')
- {
- $this->converted_returnType = $converter->returnSee($a,$converter->type_adjust($this->returnType));
- } else
- {
- $this->converted_returnType = $converter->type_adjust($this->returnType);
- }
- }
- return parserTag::Convert($converter);
- }
-}
-
-/**
- * represents "@var"
- * @tutorial tags.var.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: DocBlockTags.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-class parserVarTag extends parserReturnTag
-{
- /**
- * always 'var'
- * @var string
- */
- var $keyword = 'var';
- /**
- * the type a var has
- * @var string
- */
- var $returnType = 'mixed';
-}
-
-/**
- * Represents "@param"
- * @tutorial tags.param.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- */
-class parserParamTag extends parserVarTag
-{
- /**
- * always 'param'
- * @var string
- */
- var $keyword = 'param';
-}
-
-/**
- * Represents "@staticvar"
- * @tutorial tags.staticvar.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- */
-class parserStaticvarTag extends parserParamTag
-{
- /**
- * always 'staticvar'
- * @var string
- */
- var $keyword = 'staticvar';
-}
-
-/**
- * represents "@link"
- * @tutorial tags.link.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: DocBlockTags.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-class parserLinkTag extends parserTag
-{
- /**
- * always 'link'
- * @var string
- */
- var $keyword = 'link';
-
- /**
- * URL to link to
- * @param string $link
- */
- function parserLinkTag($link)
- {
- $start = $val = $link->getString();
- if (strpos($val,' '))
- {
- $start = array_shift($val = explode(' ',$val));
- $val = join($val, ' ');
- }
- $a = new parserLinkInlineTag($start,$val);
- $b = new parserStringWithInlineTags;
- $b->add($a);
- $this->value = $b;
- }
-}
-
-/**
- * represents "@see"
- * @tutorial tags.see.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: DocBlockTags.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-class parserSeeTag extends parserLinkTag
-{
- /**
- * always 'see'
- * @var string
- */
- var $keyword = 'see';
-
- /**
- * @param string element to link to
- */
- function parserSeeTag($name)
- {
- parserTag::parserTag($this->keyword,$name,true);
- }
-
- /**
- * @param Converter
- * @see parserStringWithInlineTags::Convert()
- */
- function Convert(&$converter)
- {
- if ($this->value->hasInlineTag())
- {
- addErrorDie(PDERROR_INLINETAG_IN_SEE);
- }
- $a = $converter->getLink(trim($this->value->Convert($converter)));
- if (is_string($a))
- {
- // feature 564991
- if (strpos($a,'://'))
- {
- // php function
- return $converter->returnLink($a,str_replace('PHP_MANUAL#','',$this->value->Convert($converter)));
- }
- return $a;
- }
- if (is_object($a)) return $converter->returnSee($a);
- // getLink parsed a comma-delimited list of linked thingies, add the commas back in
- if (is_array($a))
- {
- $b = '';
- foreach($a as $i => $bub)
- {
- if (!empty($b)) $b .= ', ';
- if (is_string($a[$i])) $b .= $a[$i];
- if (is_object($a[$i])) $b .= $converter->returnSee($a[$i]);
- }
- return $b;
- }
- return false;
- }
-}
-
-/**
- * represents "@license"
- *
- * Link to a license, instead of including lines and lines of license information
- * in every file
- * @tutorial tags.license.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- */
-class parserLicenseTag extends parserLinkTag
-{
- /**
- * always 'license'
- * @var string
- */
- var $keyword = 'license';
-
- /**
- * URL to link to
- * @param string $link
- */
- function parserLicenseTag($name, $link)
- {
- $a = explode(' ',$link->getString());
- $url = array_shift($a);
- $license = join($a,' ');
- if (empty($license)) $license = $url;
- $a = new parserLinkInlineTag($url, $license);
- $b = new parserStringWithInlineTags;
- $b->add($a);
- $this->value = $b;
- }
-}
-
-/**
- * represents "@uses"
- *
- * This is exactly like @see except that the element used has a @useby link to this element added to its docblock
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @tutorial tags.uses.pkg
- * @since 1.2
- */
-class parserUsesTag extends parserSeeTag
-{
- /**
- * Always "uses"
- * @var string
- */
- var $keyword = 'uses';
- /** @access private */
- var $_description;
-
- /**
- * @param string element to link to
- * @param parserStringWithInlineTags description of how the element is used
- */
- function parserUsesTag($seeel, $description)
- {
- parent::parserSeeTag($seeel);
- $this->_description = $description;
- }
-
- /**
- * Return a link to documentation for other element, and description of how
- * it is used
- *
- * Works exactly like {@link parent::Convert()} except that it also includes
- * a description of how the element used is used.
- * @return string
- * @param Converter
- */
- function Convert(&$c)
- {
- $val = $this->value;
- $see = parent::Convert($c);
- $this->value = $this->_description;
- $desc_val = parserTag::Convert($c);
- if (!empty($desc_val)) {
- $see .= ' - '.$desc_val;
- }
- $this->value = $val;
- return $see;
- }
-
- /**
- * Get the text of the link to the element that is being used
- * @return string
- * @access private
- */
- function getSeeElement()
- {
- return $this->value->getString();
- }
-
- /**
- * Get the description of how the element used is being used.
- * @return parserStringWithInlineTags
- */
- function getDescription()
- {
- return $this->_description;
- }
-}
-
-/**
- * This is a virtual tag, it is created by @uses to cross-reference the used element
- *
- * This is exactly like @uses.
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @since 1.2
- */
-class parserUsedByTag extends parserUsesTag
-{
- /**
- * Always "usedby"
- * @var string
- */
- var $keyword = 'usedby';
- /** @access private */
- var $_link;
-
- /**
- * @param abstractLink link of element that uses this element
- * @param string description of how the element is used
- */
- function parserUsedByTag($link, $description)
- {
- $this->value = $description;
- $this->_link = $link;
- }
-
- /**
- * @return string
- * @param Converter
- */
- function Convert(&$c)
- {
- $see = $c->returnSee($this->_link);
- $desc_val = parserTag::Convert($c);
- if (!empty($desc_val)) {
- $see .= ' - '.$desc_val;
- }
- return $see;
- }
-}
-
-/**
- * represents "@tutorial"
- *
- * This is exactly like @see except that it only links to tutorials
- * @tutorial phpDocumentor/tutorials.pkg
- * @tutorial tags.tutorial.pkg
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @since 1.2
- */
-class parserTutorialTag extends parserSeeTag
-{
- /**
- * Always "tutorial"
- * @var string
- */
- var $keyword = 'tutorial';
- /**
- * @param Converter
- * @see parserStringWithInlineTags::Convert()
- */
- function Convert(&$converter)
- {
- $a = $converter->getTutorialLink(trim($this->value->Convert($converter)));
- if (is_string($a))
- {
- return $a;
- }
- if (is_object($a)) return $converter->returnSee($a);
- // getLink parsed a comma-delimited list of linked thingies, add the commas back in
- if (is_array($a))
- {
- $b = '';
- foreach($a as $i => $bub)
- {
- if (!empty($b)) $b .= ', ';
- if (is_string($a[$i])) $b .= $a[$i];
- if (is_object($a[$i])) $b .= $converter->returnSee($a[$i]);
- }
- return $b;
- }
- return false;
- }
-}
-
-/**
- * represents "@filesource"
- *
- * Use this to create a link to a highlighted phpxref-style source file listing
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @tutorial tags.filesource.pkg
- */
-class parserFileSourceTag extends parserTag
-{
- /**
- * Always "filesource"
- * @var string
- */
- var $keyword = 'filesource';
- /** @var array */
- var $source;
- /** @var string */
- var $path;
- /**
- * Flag variable, controls double writes of file for each converter
- * @access private
- * @var array
- */
- var $_converted = array();
- /**
- * Set {@link $source} to $value, and set up path
- * @param string
- * @param array output from {@link phpDocumentorTWordParser::getFileSource()}
- */
- function parserFileSourceTag($filepath, $value)
- {
- parent::parserTag($this->keyword, '');
- $this->path = $filepath;
- $this->source = $value;
- }
-
- /**
- * Return a link to the highlighted source and generate the source
- * @uses ConvertSource() generate source code and write it out
- * @return string output from {@link getSourceLink()}
- * @param Converter
- */
- function Convert(&$c)
- {
- if (!isset($this->_converted[$c->name]))
- {
- $this->ConvertSource($c);
- $this->_converted[$c->name] = true;
- }
- return $this->getSourceLink($c);
- }
-
- /**
- * @param Converter
- * @uses phpDocumentor_HighlightParser highlights source code
- * @uses writeSource()
- */
- function ConvertSource(&$c)
- {
- $this->writeSource($c, $c->ProgramExample($this->source, true, false, false, false, $this->path));
- return;
- $parser = new phpDocumentor_HighlightParser;
- $return = '';
- $return = $parser->parse($this->source,$c, false, false, false, $this->path);
- $this->writeSource($c, $return);
- }
-
- /**
- * @param Converter
- * @param string highlighted source code
- * @uses Converter::writeSource() export highlighted file source
- */
- function writeSource(&$c, $source)
- {
- $c->writeSource($this->path, $source);
- }
-
- /**
- * @uses Converter::getSourceLink()
- * @param Converter
- * @return output from getSourceLink()
- */
- function getSourceLink(&$c)
- {
- return $c->getSourceLink($this->path);
- }
-}
-
-/**
- * represents "@example"
- *
- * The example tag
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @tutorial tags.example.pkg
- */
-class parserExampleTag extends parserFileSourceTag
-{
- /**
- * always "example"
- * @var string
- */
- var $keyword = 'example';
- /**
- * Reads and parses the example file indicated
- *
- * The example tag takes one parameter: the full path to a php file that
- * should be parsed and included as an example.
- * @uses phpDocumentorTWordParser::getFileSource() uses to parse an example
- * and retrieve all tokens by line number
- * @param parserStringWithInlineTags
- * @param string path of file containing this @example tag
- */
- function parserExampleTag($value, $current_path)
- {
- global $_phpDocumentor_setting;
- parent::parserTag('example', $value);
- $path = false;
- // code thanks to Sam Blum, modified by Greg Beaver
- $tagValue = $value->getString();
- $path = $isAbsPath = $pathOnly = $fileName = $fileExt = $original_path = $title = FALSE;
- do
- {
- // make sure the format is stuff.ext description
- if (!preg_match('`(.*)\.(\w*)\s(.*)`', $tagValue, $match))
- {
- // or format is stuff.ext
- if (!preg_match('`(.*)\.(\w*)\s*$`', $tagValue, $match))
- {
- // Murphy: Some funny path was given
- $original_path = $tagValue; // used for error output
- break; // try-block
- }
- }
- if (strlen($match[1]) === 0)
- {
- // Murphy: Some funny path was given
- $original_path = $tagValue; // used for error output
- break; // try-block
- }
- $fileExt = $match[2];
- $title = 'example';
- if (isset($match[3]))
- {
- $title = trim($match[3]);
- }
- $pathTmp = str_replace('\\', '/', $match[1]); // Replace windows '\' the path.
-
- // Is there a path and a file or is it just a file?
- if (strpos($pathTmp,'/') === false)
- {
- // No path part
- $pathOnly = '';
- $fileName = $pathTmp .'.'. $fileExt;
- } else
- {
- $splitPos = strrpos($pathTmp,'/'); // split the path on the last directory, find the filename
- $pathOnly = substr($match[1], 0, $splitPos+1);
- $fileName = substr($match[1], $splitPos+1) .'.'. $fileExt;
- // Is the path absolute? (i.e. does it start like an absolute path?)
- if (('/' === $pathTmp[0]) || preg_match('`^\w*:`i', $pathTmp))
- { // works for both windows 'C:' and URLs like 'http://'
- $isAbsPath = true; // Yes
- }
- }
-
- $original_path = $pathOnly . $fileName;
-
- // Now look for the file starting with abs. path.
- if ($isAbsPath)
- {
- $tmp = realpath($original_path); // remove any weirdities like /../file.ext
- if ($tmp && is_file($tmp))
- {
- $path = $tmp;
- }
- // Alway break if abs. path was detected; even if file was not found.
- break; // try-block
- }
-
- // Search for the example file some standard places
- // 1) Look if the ini-var examplesdir is set and look there ...
- if (isset($_phpDocumentor_setting['examplesdir']))
- {
- $tmp = realpath($_phpDocumentor_setting['examplesdir'] . PATH_DELIMITER . $original_path);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- }
-
- // 2) Then try to look for an 'example/'-dir below the *currently* parsed file ...
- if (!empty($current_path))
- {
- $tmp = realpath(dirname($current_path) . PATH_DELIMITER . 'examples' . PATH_DELIMITER . $fileName);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- }
-
- // 3) Then try to look for the example file below the subdir PHPDOCUMENTOR_BASE/examples/ ...
- if (is_dir(PHPDOCUMENTOR_BASE . PATH_DELIMITER . 'examples'))
- {
- $tmp = realpath(PHPDOCUMENTOR_BASE . PATH_DELIMITER . 'examples' . PATH_DELIMITER . $original_path);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- }
-
- $tmp = realpath(PHPDOCUMENTOR_BASE . PATH_DELIMITER . $original_path);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- // If we reach this point, nothing was found and $path is false.
- } while (false);
-
- if (!$path)
- {
- addWarning(PDERROR_EXAMPLE_NOT_FOUND, $original_path);
- $this->_title = 'example not found';
- $this->path = false;
- } else
- {
- $this->_title = ($title) ? $title : 'example';
- // make a unique html-filename but avoid it to get too long.
- $uniqueFileName = str_replace(array(':', DIRECTORY_SEPARATOR,'/'), array('_', '_', '_'), $path);
- $uniqueFileName = substr($uniqueFileName,-50) . '_' . md5($path);
- $this->path = $uniqueFileName;
-
- $f = @fopen($path,'r');
- if ($f)
- {
- $example = fread($f,filesize($path));
- if (tokenizer_ext)
- {
- $obj = new phpDocumentorTWordParser;
- $obj->setup($example);
- $this->source = $obj->getFileSource();
- unset($obj);
- } else
- {
- $this->source = $example;
- }
- }
- }
- }
-
- /**
- * @param Converter
- * @uses phpDocumentor_HighlightParser highlights source code
- * @uses writeSource()
- */
- function ConvertSource(&$c)
- {
- $this->writeSource($c, $c->ProgramExample($this->source, true));
- return;
- $parser = new phpDocumentor_HighlightParser;
- $return = '';
- $return = $parser->parse($this->source,$c);
- $this->writeSource($c, $return);
- }
-
- /**
- * @param Converter $c
- * @param string parsed example source
- * @uses Converter::writeExample() writes final example out
- * @access private
- */
- function writeSource(&$c, $source)
- {
- if ($this->path)
- $c->writeExample($this->_title, $this->path, $source);
- }
-
- /**
- * Retrieve a converter-specific link to the example
- *
- * @param Converter
- * @uses Converter::getExampleLink() retrieve the link to the example
- */
- function getSourceLink(&$c)
- {
- if (!$this->path) return $this->_title;
- return $c->getExampleLink($this->path, $this->_title);
- }
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Errors.inc b/buildscripts/PhpDocumentor/phpDocumentor/Errors.inc
deleted file mode 100644
index 99bada26..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Errors.inc
+++ /dev/null
@@ -1,793 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * @package phpDocumentor
- * @subpackage Errors
- * @author Gregory Beaver <cellog@users.sourceforge.net>
- * @version $Id: Errors.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-/**
- * warning triggered when inheritance could be from more than one class
- */
-define("PDERROR_MULTIPLE_PARENT",1);
-/**
- * warning triggered when parent class doesn't exist
- */
-define("PDERROR_PARENT_NOT_FOUND",2);
-/**
- * warning triggered when an {@inline tag} is not terminated (no } before the * / ending the comment)
- */
-define("PDERROR_UNTERMINATED_INLINE_TAG",3);
-/**
- * warning triggered when inheritance could be from more than one class
- */
-define("PDERROR_CLASS_EXISTS",4);
-/**
- * warning triggered when inheritance could be from more than one class
- */
-define("PDERROR_INHERITANCE_CONFLICT",5);
-/**
- * warning triggered when a converter is passed to {@link phpDocumentor_IntermediateParser::addConverter()} that is not a class
- */
-define("PDERROR_CONVERTER_NOT_FOUND",6);
-/**
- * warning triggered when a converter is passed to {@link phpDocumentor_IntermediateParser::addConverter()} that is not a class
- */
-define("PDERROR_NO_CONVERTERS",7);
-/**
- * warning triggered when the arguments to @access are neither public nor private
- */
-define("PDERROR_ACCESS_WRONG_PARAM",8);
-/**
- * warning triggered when there are multiple @access tags in a docblock
- */
-define("PDERROR_MULTIPLE_ACCESS_TAGS",9);
-/**
- * warning triggered when there are multiple @return tags in a docblock
- */
-define("PDERROR_MULTIPLE_RETURN_TAGS",10);
-/**
- * warning triggered when there are multiple @var tags in a docblock
- */
-define("PDERROR_MULTIPLE_VAR_TAGS",11);
-/**
- * warning triggered when there are multiple @package tags in a docblock
- */
-define("PDERROR_MULTIPLE_PACKAGE_TAGS",12);
-/**
- * warning triggered when there are multiple @subpackage tags in a docblock
- */
-define("PDERROR_MULTIPLE_SUBPACKAGE_TAGS",13);
-/**
- * warning triggered when the package or subpackage name is illegal
- */
-define("PDERROR_ILLEGAL_PACKAGENAME",14);
-/**
- * warning triggered when there a @package tag is used in a function, define, method, var or include
- */
-define("PDERROR_OVERRIDDEN_PACKAGE_TAGS",15);
-/**
- * warning triggered when there a @subpackage tag is used in a function, define, method, var or include
- */
-define("PDERROR_OVERRIDDEN_SUBPACKAGE_TAGS",16);
-/**
- * warning triggered when classes in the same package have the same name
- */
-define("PDERROR_CLASS_CONFLICT",17);
-/**
- * warning triggered when classes in the same package have the same name
- */
-define("PDERROR_UNKNOWN_TAG",18);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- */
-define("PDERROR_MULTIPLE_NAME_TAGS",19);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- */
-define("PDERROR_PACKAGEOUTPUT_DELETES_PARENT_FILE",20);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- */
-define("PDERROR_GLOBAL_NOT_FOUND",21);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- */
-define("PDERROR_MULTIPLE_GLOBAL_TAGS",22);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- */
-define("PDERROR_MALFORMED_GLOBAL_TAG",23);
-/**
- * warning triggered when an @ignore tag is used in a DocBlock preceding a method, variable, include, or global variable
- */
-define("PDERROR_IGNORE_TAG_IGNORED",24);
-/**
- * warning triggered when a duplicate element is encountered that will be ignored by the documentor
- */
-define("PDERROR_ELEMENT_IGNORED",25);
-/**
- * warning triggered when an entire page is ignored because of @access private
- */
-define("PDERROR_PARSEPRIVATE",26);
-/**
- * warning triggered when an entire page is ignored because of @access private
- */
-define("PDERROR_UNKNOWN_COMMANDLINE",27);
-/**
- * warning triggered when an entire page is ignored because of @access private
- */
-define("PDERROR_NEED_WHITESPACE",28);
-/**
- * warning triggered when an entire page is ignored because of @access private
- */
-define("PDERROR_CLASS_PARENT_NOT_FOUND",29);
-/**
- * warning triggered when a getClassByPackage is called and can't find the class
- */
-define("PDERROR_CLASS_NOT_IN_PACKAGE",30);
-/**
- * warning triggered when a { @source } inline tag is used in a docblock not preceding a function
- */
-define("PDERROR_SOURCE_TAG_FUNCTION_NOT_FOUND",31);
-/**
- * warning triggered when a docblock template is never turned off with /**#@-* / (no space)
- */
-define("PDERROR_DB_TEMPLATE_UNTERMINATED",32);
-/**
- * warning triggered when a docblock has an unmatched &lt;ol&gt; or &lt;ul&gt;
- */
-define("PDERROR_UNMATCHED_LIST_TAG",33);
-/**
- * warning triggered when another tag is nested in &lt;b&gt; - not allowed in phpDocumentor
- */
-define("PDERROR_CANT_NEST_IN_B",34);
-/**
- * warning triggered when a docbook tag is not properly matched
- */
-define("PDERROR_UNMATCHED_TUTORIAL_TAG",35);
-/**
- * warning triggered when an inline tag is found inside an xml tag name in a package page
- */
-define("PDERROR_CANT_HAVE_INLINE_IN_TAGNAME",36);
-/**
- * warning triggered when a tutorial is referenced via @tutorial/{ @tutorial} and is not found
- */
-define("PDERROR_TUTORIAL_NOT_FOUND",37);
-/**
- * warning triggered when a tutorial lists itself as a child tutorial
- */
-define("PDERROR_TUTORIAL_IS_OWN_CHILD",38);
-/**
- * warning triggered when a tutorial's child lists the parent tutorial as a child tutorial
- */
-define("PDERROR_TUTORIAL_IS_OWN_GRANDPA",39);
-/**
- * warning triggered when a tutorial's child in the .ini file doesn't exist in the
- * package and subpackage of the parent
- */
-define("PDERROR_CHILD_TUTORIAL_NOT_FOUND",40);
-/**
- * warning triggered when a <pdffunction:funcname /> tag is used in the PDF
- * Converter and no funcname is present (<pdffunction: />)
- */
-define("PDERROR_PDFFUNCTION_NO_FUNC",41);
-/**
- * warning triggered when a <pdffunction:funcname /> tag is used in the PDF
- * Converter and funcname is not a {@link Cezpdf} method
- */
-define("PDERROR_PDF_METHOD_DOESNT_EXIST",42);
-/**
- * warning triggered when a <pdffunction:funcname arg=$tempvar/> tag is used in the PDF
- * Converter and "tempvar" is not set from the return of a previous pdffunction tag
- */
-define("PDERROR_PDF_TEMPVAR_DOESNT_EXIST",43);
-/**
- * warning triggered when a subsection's title is asked for, but the subsection is not found
- */
-define("PDERROR_TUTORIAL_SUBSECTION_NOT_FOUND",44);
-/**
- * warning triggered when a subsection's title is asked for, but the subsection is not found
- */
-define("PDERROR_UNTERMINATED_ATTRIB",45);
-/**
- * warning triggered when no @package tag is used in a page-level or class-level DocBlock
- */
-define("PDERROR_NO_PACKAGE_TAG",46);
-/**
- * warning triggered when no @access private tag is used in a global variable/method/var
- * with _ as first char in name and --pear was specified
- */
-define("PDERROR_PRIVATE_ASSUMED",47);
-/**
- * warning triggered when an example's path from @example /path/to/example.php
- * is not found
- */
-define("PDERROR_EXAMPLE_NOT_FOUND",48);
-/**
- * warning triggered when an example's path from @example /path/to/example.php
- * is not found
- */
-define("PDERROR_NO_CONVERTER_HANDLER",49);
-/**
- * warning triggered when an example's path from @example /path/to/example.php
- * is not found
- */
-define("PDERROR_INLINETAG_IN_SEE",50);
-/**
- * warning triggered when an id attribute in a tutorial docbook tag is not
- * an {@}id} inline tag
- */
-define("PDERROR_ID_MUST_BE_INLINE",51);
-/**
- * warning triggered when an {@}internal}} tag is not closed
- */
-define("PDERROR_INTERNAL_NOT_CLOSED",52);
-/**
- * warning triggered when an {@}source} tag is found in a short description
- */
-define("PDERROR_SOURCE_TAG_IGNORED",53);
-/**
- * warning triggered when a child converter doesn't override getFormattedClassTrees()
- */
-define("PDERROR_CONVERTER_OVR_GFCT",54);
-/**
- * warning triggered when a package is already associated with a category, and
- * a new association is found
- */
-define("PDERROR_PACKAGECAT_SET",55);
-/**
- * warning triggered when text in a docblock list is not contained in
- * an <<li>> opening tag
- */
-define("PDERROR_TEXT_OUTSIDE_LI",56);
-/**
- * warning triggered when a DocBlock html tag is unclosed
- */
-define("PDERROR_UNCLOSED_TAG",57);
-/**
- * warning triggered by @filesource, if PHP < 4.3.0
- */
-define("PDERROR_TAG_NOT_HANDLED",58);
-/**
- * warning triggered by sourcecode="on", if PHP < 4.3.0
- */
-define("PDERROR_SOURCECODE_IGNORED",59);
-/**
- * warning triggered by an empty tag
- */
-define("PDERROR_MALFORMED_TAG",60);
-/**
- * warning triggered by more than 1 @category tag
- */
-define("PDERROR_MULTIPLE_CATEGORY_TAGS",61);
-/**
- * warning triggered by {@}inheritdoc} in a non-inheritable situation
- */
-define("PDERROR_INHERITDOC_DONT_WORK_HERE",62);
-/**
- * warning triggered by @example path/to/example with no title
- */
-define("PDERROR_EMPTY_EXAMPLE_TITLE",63);
-/**
- * warning triggered by non-existent template directory
- */
-define("PDERROR_TEMPLATEDIR_DOESNT_EXIST",64);
-/**
- * warning triggered by an unterminated entity in a tutorial
- */
-define("PDERROR_UNTERMINATED_ENTITY",65);
-/**
- * warning triggered by an unterminated entity in a tutorial
- */
-define("PDERROR_BEAUTIFYING_FAILED",66);
-/**
- * warning triggered by a function with no name
- *
- * <pre>
- * function ($params)
- * {
- * }
- * </pre>
- * triggers this error
- */
-define("PDERROR_FUNCTION_HAS_NONAME",67);
-/**
- * warning triggered by a page-level docblock preceding a source element
- *
- * <code>
- * <?php
- * /**
- * * Page-level DocBlock
- * * @package pagepackage
- * *{@*}
- * include 'file.php';
- * </code>
- */
-define("PDERROR_DOCBLOCK_CONFLICT", 68);
-/**
- * warning triggered when a file does not contain a page-level docblock
- */
-define("PDERROR_NO_PAGE_LEVELDOCBLOCK", 69);
-/**
- * warning triggered when the first docblock in a file with a @package tag
- * precedes a class. In this case, the class gets the docblock.
- */
-define("PDERROR_DOCBLOCK_GOES_CLASS", 70);
-/**
- * warning triggered in tutorial parsing if there is a missing {@id} inline tag
- */
-define("PDERROR_NO_DOCBOOK_ID", 71);
-/**
- * warning triggered if someone brilliant tries "class X extends X {"
- */
-define("PDERROR_CANNOT_EXTEND_SELF", 72);
-
-/**
- * Error messages for phpDocumentor parser warnings
- * @global array $GLOBALS['phpDocumentor_warning_descrip']
- * @name $phpDocumentor_warning_descrip
- */
-$GLOBALS['phpDocumentor_warning_descrip'] =
- array(
- PDERROR_MULTIPLE_PARENT => 'Class %s has multiple possible parents, package inheritance aborted',
- PDERROR_PARENT_NOT_FOUND => 'Class %s parent %s not found',
- PDERROR_INHERITANCE_CONFLICT => 'Class %s in file %s has multiple possible parents named %s. Cannot resolve name conflict,'."\n".' try ignoring a file that contains the conflicting parent class',
- PDERROR_UNKNOWN_TAG => 'Unknown tag "@%s" used',
- PDERROR_IGNORE_TAG_IGNORED => '@ignore tag used for %s element "%s" will be ignored',
- PDERROR_ELEMENT_IGNORED => "\n".'duplicate %s element "%s" in file %s will be ignored.'."\n".'Use an @ignore tag on the original if you want this case to be documented.',
- PDERROR_PARSEPRIVATE => "entire page %s ignored because of @access private.\nChoose -pp to enable parsing of private elements",
- PDERROR_CLASS_PARENT_NOT_FOUND => "class %s in package %s parent not found in @see parent::%s",
- PDERROR_CLASS_NOT_IN_PACKAGE => "class %s was not found in package %s",
- PDERROR_DB_TEMPLATE_UNTERMINATED => "docblock template never terminated with /**#@-*/",
- PDERROR_PDF_METHOD_DOESNT_EXIST => '<pdffunction:%s /> called, but pdf method "%s" doesn\'t exist',
- PDERROR_TUTORIAL_NOT_FOUND => "tutorial \"%s\" not found, does it exist?",
- PDERROR_CHILD_TUTORIAL_NOT_FOUND => 'child tutorial "%s" listed in %s not found in parent package "%s" subpackage "%s"',
- PDERROR_TUTORIAL_SUBSECTION_NOT_FOUND => 'tutorial %s subsection "%s" doesn\'t exist, but its title was asked for',
- PDERROR_NO_PACKAGE_TAG => 'no @package tag was used in a DocBlock for %s %s',
- PDERROR_PRIVATE_ASSUMED => '%s "%s" is assumed to be @access private because its name starts with _, but has no @access tag',
- PDERROR_EXAMPLE_NOT_FOUND => 'example file "%s" does not exist',
- PDERROR_SOURCE_TAG_IGNORED => '{@source} can only be used in the long description, not in the short description: "%s"',
- PDERROR_PACKAGECAT_SET => 'package %s is already in category %s, will now replace with category %s',
- PDERROR_SOURCECODE_IGNORED => 'sourcecode command-line option is ignored for PHP versions < 4.3.0',
- PDERROR_INHERITDOC_DONT_WORK_HERE => '{@inheritdoc} can only be used in the docblock of a child class',
- PDERROR_EMPTY_EXAMPLE_TITLE => 'Example file found at "%s" has no title, using "%s"',
- PDERROR_DOCBLOCK_CONFLICT => 'Page-level DocBlock precedes "%s %s", use another DocBlock to document the source element',
- PDERROR_NO_PAGE_LEVELDOCBLOCK => 'File "%s" has no page-level DocBlock, use @package in the first DocBlock to create one',
- PDERROR_DOCBLOCK_GOES_CLASS => 'DocBlock would be page-level, but precedes class "%s", use another DocBlock to document the file',
- PDERROR_NO_DOCBOOK_ID => 'Tutorial section %s "%s" has no id="{@id subsection}" tag ({@id} for refentry)',
- PDERROR_BEAUTIFYING_FAILED => 'Beautifying failed: %s',
- );
-
-
-
-//********************************************************
-
-
-
-/**
- * Error messages for phpDocumentor parser errors
- * @global array $GLOBALS['phpDocumentor_error_descrip']
- * @name $phpDocumentor_error_descrip
- */
-$GLOBALS['phpDocumentor_error_descrip'] =
- array(
- PDERROR_UNTERMINATED_INLINE_TAG => 'Inline tag {@%s} in tag %s is unterminated, "%s"',
- PDERROR_CLASS_EXISTS => 'Class %s already exists in package "%s"',
- PDERROR_CONVERTER_NOT_FOUND => 'Converter %s specified by --output command-line option is not a class',
- PDERROR_NO_CONVERTERS => 'No Converters have been specified by --output command-line option',
- PDERROR_ACCESS_WRONG_PARAM => '@access was passed neither "public" nor "private." Was passed: "%s"',
- PDERROR_MULTIPLE_ACCESS_TAGS => 'DocBlock has multiple @access tags, illegal. ignoring additional tag "@access %s"',
- PDERROR_MULTIPLE_RETURN_TAGS => 'DocBlock has multiple @return tags, illegal. ignoring additional tag "@return %s %s"',
- PDERROR_MULTIPLE_VAR_TAGS => 'DocBlock has multiple @var tags, illegal. ignoring additional tag "@var %s %s"',
- PDERROR_MULTIPLE_PACKAGE_TAGS => 'DocBlock has multiple @package tags, illegal. ignoring additional tag "@package %s"',
- PDERROR_MULTIPLE_SUBPACKAGE_TAGS => 'DocBlock has multiple @subpackage tags, illegal. ignoring additional tag "@subpackage %s"',
- PDERROR_ILLEGAL_PACKAGENAME => '@%s tag has illegal %s name "%s"',
- PDERROR_OVERRIDDEN_PACKAGE_TAGS => '%s %s\'s DocBlock has @package tag, illegal. ignoring tag "@package %s"',
- PDERROR_OVERRIDDEN_SUBPACKAGE_TAGS => '"%s" %s\'s DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage %s"',
- PDERROR_CLASS_CONFLICT => 'class "%s" has multiple declarations in package %s, in file %s and file %s, documentation will have output errors!',
- PDERROR_MULTIPLE_NAME_TAGS => 'DocBlock has multiple @name tags, illegal. ignoring additional tag "@name %s"',
- PDERROR_PACKAGEOUTPUT_DELETES_PARENT_FILE => '-po (packageoutput) option deletes parent file "%s" containing class "%s."'."\n".' Try using --defaultpackagename (-dn) %s to include the parent file in the same package as the class',
- PDERROR_GLOBAL_NOT_FOUND => 'global variable %s specified in @global tag was never found',
- PDERROR_MULTIPLE_GLOBAL_TAGS => '@global define tag already used for global variable "%s", ignoring @global %s',
- PDERROR_MALFORMED_GLOBAL_TAG => 'incorrect @global syntax. Should be @global vartype $varname or @global vartype description',
- PDERROR_UNKNOWN_COMMANDLINE => 'Unknown command-line option "%s" encountered, use phpdoc -h for help',
- PDERROR_NEED_WHITESPACE => 'phpDocumentor programmer error - wordparser whitespace set to false in handleDocBlock, notify developers. You should never see this error',
- PDERROR_SOURCE_TAG_FUNCTION_NOT_FOUND => '{@source} tag used in a docblock that isn\'t preceding a function',
- PDERROR_UNMATCHED_LIST_TAG => 'unmatched ol or ul tag in DocBlock, parsing will be incorrect',
- PDERROR_CANT_NEST_IN_B => 'Can\'t nest a code, pre, ul, or ol tag in a b tag in phpDocumentor DocBlock (%s tag nested)',
- PDERROR_UNMATCHED_TUTORIAL_TAG => 'While parsing extended documentation, "%s" tag was matched with "%s" endtag, missing endtag'."\ntag contents:\"%s\"",
- PDERROR_CANT_HAVE_INLINE_IN_TAGNAME => 'Can\'t have an inline tag inside a package page XML tag!',
- PDERROR_TUTORIAL_IS_OWN_CHILD => 'Tutorial %s lists itself as its own child in %s, illegal',
- PDERROR_TUTORIAL_IS_OWN_GRANDPA => 'Tutorial %s\'s child %s lists %s as its child in %s, illegal',
- PDERROR_PDFFUNCTION_NO_FUNC => 'Invalid pdffunction syntax: "<pdffunction: />", should be "<pdffunction:functionname [arg="value"...]/>"',
- PDERROR_PDF_TEMPVAR_DOESNT_EXIST => '<pdffunction:%s arg=%s /> called but temporary variable "%s" doesn\'t exist',
- PDERROR_UNTERMINATED_ATTRIB => 'Tutorial tag %s attribute %s is unterminated, current value "%s"',
- PDERROR_NO_CONVERTER_HANDLER => 'Handler for element of type "%s" called, but %s is not a method of %s',
- PDERROR_INLINETAG_IN_SEE => 'Inline tags are not allowed in a @see tag',
- PDERROR_ID_MUST_BE_INLINE => '<%s id="%s"> must be <%s id="{@id %s}">',
- PDERROR_INTERNAL_NOT_CLOSED => '{@internal was never terminated with }}',
- PDERROR_CONVERTER_OVR_GFCT => 'Converter "%s" must override getFormattedClassTrees() but doesn\'t',
- PDERROR_TEXT_OUTSIDE_LI => 'Text cannot be outside of li tag in a DocBlock list, parsing will be incorrect',
- PDERROR_UNCLOSED_TAG => 'Unclosed %s tag in DocBlock, parsing will be incorrect',
- PDERROR_TAG_NOT_HANDLED => '"%s" tag is not available in PHP versions less than 4.3.0, tag ignored',
- PDERROR_MALFORMED_TAG => '"%s" tag was used without any parameters, illegal',
- PDERROR_MULTIPLE_CATEGORY_TAGS => 'package has multiple @category tags, ignoring "@category %s"',
- PDERROR_TEMPLATEDIR_DOESNT_EXIST => 'template directory "%s" does not exist',
- PDERROR_UNTERMINATED_ENTITY => 'entity &%s is unterminated',
- PDERROR_FUNCTION_HAS_NONAME => 'function has no name (PHP error - test your file before parsing!)',
- PDERROR_CANNOT_EXTEND_SELF => 'class %s cannot extend itself - TEST YOUR CODE BEFORE PARSING',
- );
-
-/**
- * encapsulates warning information
- * @package phpDocumentor
- * @subpackage Errors
- */
-class RecordWarning
-{
- /**
- * name of global variable that descriptors for this warning/error is kept
- * @var string
- */
- var $type = 'phpDocumentor_warning_descrip';
- /**
- * file this error occurred in
- * @var string
- */
- var $file = false;
- /**
- * line number of the file this error occurred in
- * @var integer
- */
- var $linenum;
- /**
- * error string
- * @var string
- */
- var $data;
- /**
- * error number
- * @see Errors.inc
- * @var string
- */
- var $num;
- /**
- * @param string $file filename this error occurred in ({@link $file})
- * @param integer $linenum line number this error occurred on ({@link $linenum})
- * @param integer $num Error number defined in {@link Errors.inc}
- * @param string $data... variable number of strings, up to 4, to sprintf based on the error number
- */
- function RecordWarning($file,$linenum,$num)
- {
- $this->file = $file;
- $this->linenum = $linenum;
- $a = array('','','','');
- if (func_num_args()>3)
- {
- for($i=3;$i<func_num_args();$i++)
- {
- $a[$i - 3] = func_get_arg($i);
- }
- }
-
- $this->num = $num;
- $this->data = sprintf($GLOBALS[$this->type][$this->num],$a[0],$a[1],$a[2],$a[3]);
- $this->output();
- }
-
- /**
- * prints the warning
- */
- function output($string = false)
- {
- if ($string)
- {
- if ($this->file)
- return "WARNING in $this->file on line $this->linenum: $this->data\n";
- else
- return "WARNING: $this->data\n";
- }
- if ($this->file)
- phpDocumentor_out("WARNING in $this->file on line $this->linenum: $this->data\n");
- else
- phpDocumentor_out("WARNING: $this->data\n");
- flush();
- }
-}
-
-/**
- * encapsulates error information
- * @package phpDocumentor
- * @subpackage Errors
- */
-class RecordError extends RecordWarning
-{
- /**
- * name of global variable that descriptors for this warning/error is kept
- * @var string
- */
- var $type = 'phpDocumentor_error_descrip';
-
- /**
- * prints the error
- */
- function output($string = false)
- {
- if ($string)
- {
- if ($this->file)
- return "\n\tERROR in $this->file on line $this->linenum: $this->data\n";
- else
- return "\n\tERROR: $this->data\n";
- }
- if ($this->file)
- phpDocumentor_out("\n\tERROR in $this->file on line $this->linenum: $this->data\n");
- else
- phpDocumentor_out("\n\tERROR: $this->data\n");
- flush();
- }
-}
-
-/**
- * contains all the errors/warnings
- * @see $errors, $warnings
- * @package phpDocumentor
- * @subpackage Errors
- */
-class ErrorTracker
-{
- /**
- * array of {@link RecordError}s
- * @var array
- */
- var $errors = array();
- /**
- * array of {@link RecordWarning}s
- * @var array
- */
- var $warnings = array();
- /**
- * @var string
- */
- var $curfile = '';
- /**
- * @var integer
- */
- var $linenum = 0;
-
- /**
- * index in {@link $errors} of last error triggered
- * @var integer|false
- */
- var $lasterror = false;
-
- /**
- * index in {@link $warnings} of last warning triggered
- * @var integer|false
- */
- var $lastwarning = false;
-
- /**
- * This function subscribes to two events in the Parser in order to keep track of line number information and file name.
- * @param integer $num parser-passed event (see {@link PHPDOCUMENTOR_EVENT_NEWLINENUM, PHPDOCUMENTOR_EVENT_NEWFILE})
- * @param mixed $data either a line number if $num is PHPDOCUMENTOR_EVENT_NEWLINENUM or a file name if $num is PHPDOCUMENTOR_EVENT_NEWFILE
- */
- function handleEvent($num,$data)
- {
- switch($num)
- {
- case PHPDOCUMENTOR_EVENT_NEWLINENUM :
- $this->linenum = $data;
- break;
- case PHPDOCUMENTOR_EVENT_NEWFILE :
- $this->linenum = 0;
- $this->curfile = $data;
- break;
- // debugging
- case 1000000635 :
- phpDocumentor_out($this->curfile.' has '.$this->linenum.' lines'."\n");
- flush();
- break;
- }
- }
-
- /**
- * add a new warning to the {@link $warnings} array
- * @param integer $num error number from {@link Errors.inc}
- * @param string $data... up to 4 string parameters to sprintf() into the error string for error number $num
- */
- function addWarning($num)
- {
- $a = array('','','','');
- if (func_num_args()>1)
- {
- for($i=1;$i<func_num_args();$i++)
- {
- $a[$i - 1] = func_get_arg($i);
- }
- }
- $this->warnings[] = new RecordWarning($this->curfile,$this->linenum,$num,$a[0],$a[1],$a[2],$a[3]);
- $this->lastwarning = count($this->warnings) - 1;
- }
-
- /**
- * add a new error to the {@link $errors} array
- * @param integer $num error number from {@link Errors.inc}
- * @param string $data... up to 4 string parameters to sprintf() into the error string for error number $num
- */
- function addError($num)
- {
- $a = array('','','','');
- if (func_num_args()>1)
- {
- for($i=1;$i<func_num_args();$i++)
- {
- $a[$i - 1] = func_get_arg($i);
- }
- }
- $this->errors[] = new RecordError($this->curfile,$this->linenum,$num,$a[0],$a[1],$a[2],$a[3]);
- $this->lasterror = count($this->errors) - 1;
- }
-
- /**
- * add a new error to the {@link $errors} array and returns the error string
- * @param integer $num error number from {@link Errors.inc}
- * @param string $data... up to 4 string parameters to sprintf() into the error string for error number $num
- */
- function addErrorReturn($num)
- {
- $a = array('','','','');
- if (func_num_args()>1)
- {
- for($i=1;$i<func_num_args();$i++)
- {
- $a[$i - 1] = func_get_arg($i);
- }
- }
- $this->errors[] = new RecordError($this->curfile,$this->linenum,$num,$a[0],$a[1],$a[2],$a[3],false);
- $this->lasterror = count($this->errors) - 1;
- }
-
- /**
- * Get sorted array of all warnings in parsing/conversion
- * @return array
- */
- function &returnWarnings()
- {
- usort($this->warnings,array($this,"errorsort"));
- return $this->warnings;
- }
-
- /**
- * Get sorted array of all non-fatal errors in parsing/conversion
- * @return array
- */
- function &returnErrors()
- {
- usort($this->errors,array($this,"errorsort"));
- return $this->errors;
- }
-
- /**
- * @access private
- * @param RecordError|RecordWarning
- * @param RecordError|RecordWarning
- */
- function errorsort($a, $b)
- {
- if (!$a->file) return -1;
- if (!$b->file) return 1;
- if ($a->file == $b->file)
- {
- if ($a->linenum == $b->linenum) return 0;
- if ($a->linenum < $b->linenum) return -1;
- return 1;
- }
- return strnatcasecmp($a->file,$b->file);
- }
-
- /**
- * Get the error message of the last error
- * @return string
- */
- function returnLastError()
- {
- return $this->errors[$this->lasterror]->output(true);
- }
-
- /**
- * Get the warning message of the last warning
- * @return string
- */
- function returnLastWarning()
- {
- return $this->warnings[$this->lastwarning]->output(true);
- }
-}
-
-/**
- * @global ErrorTracker $GLOBALS['phpDocumentor_errors']
- * @name $phpDocumentor_errors
- */
-$GLOBALS['phpDocumentor_errors'] = new ErrorTracker;
-
-/**
- * @param integer $num error number from {@link Errors.inc}
- * @param string $data... up to 4 string parameters to sprintf() into the error string for error number $num
- * @see ErrorTracker::addError()
- */
-function addError($num)
-{
- global $phpDocumentor_errors;
- $a = array('','','','');
- if (func_num_args()>1)
- {
- for($i=1;$i<func_num_args();$i++)
- {
- $a[$i - 1] = func_get_arg($i);
- }
- }
- $phpDocumentor_errors->addError($num,$a[0],$a[1],$a[2],$a[3]);
-}
-
-/**
- * like {@link addError()} but exits parsing
- * @param integer $num error number from {@link Errors.inc}
- * @param string $data... up to 4 string parameters to sprintf() into the error string for error number $num
- * @global ErrorTracker repository for all errors generated by phpDocumentor
- * @see ErrorTracker::addError()
- */
-function addErrorDie($num)
-{
- global $phpDocumentor_errors;
- $a = array('','','','');
- if (func_num_args()>1)
- {
- for($i=1;$i<func_num_args();$i++)
- {
- $a[$i - 1] = func_get_arg($i);
- }
- }
- $phpDocumentor_errors->addErrorReturn($num,$a[0],$a[1],$a[2],$a[3]);
- die($phpDocumentor_errors->returnLastError());
-}
-
-/**
- * @param integer $num warning number from {@link Errors.inc}
- * @param string $data... up to 4 string parameters to sprintf() into the error string for error number $num
- * @global ErrorTracker repository for all errors generated by phpDocumentor
- * @see ErrorTracker::addWarning()
- */
-function addWarning($num)
-{
- global $phpDocumentor_errors;
- $a = array('','','','');
- if (func_num_args()>1)
- {
- for($i=1;$i<func_num_args();$i++)
- {
- $a[$i - 1] = func_get_arg($i);
- }
- }
-
- $phpDocumentor_errors->addWarning($num,$a[0],$a[1],$a[2],$a[3]);
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/EventStack.inc b/buildscripts/PhpDocumentor/phpDocumentor/EventStack.inc
deleted file mode 100644
index 5e2690e8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/EventStack.inc
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * An event Stack
- *
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: EventStack.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- * @package phpDocumentor
- */
-/**
- * An event Stack
- *
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: EventStack.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- * @package phpDocumentor
- */
-class EventStack
-{
- /**
- * The stack
- * @var array
- */
- var $stack = array(PARSER_EVENT_NOEVENTS);
-
- /**
- * The number of events in the stack
- * @var integer
- */
- var $num = 0;
-
- /**
- * Push an event onto the stack
- *
- * @param int $event All events must be constants
- */
- function pushEvent($event)
- {
- $this->num = array_push($this->stack,$event) - 1;
- }
-
- /**
- * Pop an event from the stack
- *
- * @return int An event
- */
- function popEvent()
- {
- $this->num--;
- return array_pop($this->stack);
- }
-
- /**
- * Get the current event
- *
- * @return int An event
- */
- function getEvent()
- {
- return $this->stack[$this->num];
- }
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/HighlightParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/HighlightParser.inc
deleted file mode 100644
index f2a26ee9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/HighlightParser.inc
+++ /dev/null
@@ -1,2354 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Source Code Highlighting
- *
- * The classes in this file are responsible for the dynamic @example, @filesource
- * and {@}source} tags output. Using the phpDocumentor_HighlightWordParser,
- * the phpDocumentor_HighlightParser retrieves PHP tokens one by one from the
- * array generated by {@link phpDocumentorTWordParser} source retrieval functions
- * and then highlights them individually.
- *
- * It accomplishes this highlighting through the assistance of methods in
- * the output Converter passed to its parse() method, and then returns the
- * fully highlighted source as a string
- * @tutorial tags.example.pkg, tags.filesource.pkg, tags.inlinesource.pkg
- * @package phpDocumentor
- * @subpackage Parsers
- * @since 1.2.0beta3
- */
-/**
- * Retrieve tokens from an array of tokens organized by line numbers
- * @package phpDocumentor
- * @subpackage Parsers
- * @since 1.2.0beta3
- */
-class phpDocumentor_HighlightWordParser extends phpDocumentorTWordParser
-{
- /**
- * Hash used to keep track of line numbers that have already been initialized
- * @var array
- * @access private
- */
- var $_listLineNums = array();
- /**
- * @param array
- * @param phpDocumentor_HighlightParser
- */
- function setup(&$input, &$parser)
- {
- $this->_parser = &$parser;
- $this->data = &$input;
- $this->_all = $input;
- $this->_sourceline = 0;
- $this->pos = 0;
- $this->linenum = 0;
- }
-
- /**
- * debugging function
- * @access private
- */
- function printState()
- {
- $linenum = $this->linenum;
- $pos = $this->pos;
- if (!isset($this->_all[$this->linenum][$this->pos]))
- {
- $linenum++;
- $pos = 0;
- }
- $details = '';
- $token = $this->_all[$linenum][$pos];
- if (is_array($token))
- {
- $details = token_name($token[0]);
- $token = htmlspecialchars($token[1]);
- } else $token = htmlspecialchars($token);
- debug('Next Token '.$this->linenum.'-'.$this->pos.':'.$details);
- var_dump($token);
- }
-
- /**
- * Retrieve the position of the next token that will be parsed
- * in the internal token array
- * @return array format: array(line number, position)
- */
- function nextToken()
- {
- $linenum = $this->linenum;
- $pos = $this->pos;
- if (!isset($this->_all[$this->linenum][$this->pos]))
- {
- $linenum++;
- $pos = 0;
- }
- if (!isset($this->_all[$linenum][$pos])) return false;
- return array($linenum, $pos);
- }
-
- /**
- * Retrieve the next token
- * @return array|string either array(PHP token constant, token) or string
- * non-specific separator
- */
- function getWord()
- {
- if (!isset($this->_all[$this->linenum][$this->pos]))
- {
- $this->linenum++;
- $this->pos = 0;
- if (!isset($this->_all[$this->linenum])) return false;
- $this->_parser->newLineNum();
- return $this->getWord();
- }
- $word = $this->_all[$this->linenum][$this->pos++];
- return str_replace("\t",' ',$word);
- }
-
- /**
- * back the word parser to the previous token as defined by $last_token
- * @param array|string token, or output from {@link nextToken()}
- * @param boolean if true, backupPos interprets $last_token to be the
- * position in the internal token array of the last token
- */
- function backupPos($last_token, $is_pos = false)
- {
- if ($is_pos)
- {
- $this->linenum = $last_token[0];
- $this->pos = $last_token[1];
- return;
- }
- if ($last_token === false) return;
-//fancy_debug('before',$this->linenum,$this->pos,token_name($this->_all[$this->linenum][$this->pos][0]),htmlentities($this->_all[$this->linenum][$this->pos][1]),$this->_all[$this->linenum]);
- do
- {
- $this->pos--;
- if ($this->pos < 0)
- {
- $this->linenum--;
- if ($this->linenum < 0) {
- var_dump($last_token);
- break;
- }
- $this->pos = count($this->_all[$this->linenum]) - 1;
- }
- } while (!$this->tokenEquals($last_token,str_replace("\t", ' ', $this->_all[$this->linenum][$this->pos])));
- //fancy_debug('after',$this->linenum,$this->pos,token_name($this->_all[$this->linenum][$this->pos][0]),htmlentities($this->_all[$this->linenum][$this->pos][1]));
- }
-}
-
-/**
- * Highlights source code using {@link parse()}
- * @package phpDocumentor
- * @subpackage Parsers
- */
-class phpDocumentor_HighlightParser extends phpDocumentorTParser
-{
- /**#@+ @access private */
- /**
- * Highlighted source is built up in this string
- * @var string
- */
- var $_output;
- /**
- * contents of the current source code line as it is parsed
- * @var string
- */
- var $_line;
- /**
- * Used to retrieve highlighted tokens
- * @var Converter a descendant of Converter
- */
- var $_converter;
- /**
- * Path to file being highlighted, if this is from a @filesource tag
- * @var false|string full path
- */
- var $_filesourcepath;
- /**
- * @var array
- */
- var $eventHandlers = array(
- PARSER_EVENT_ARRAY => 'defaultHandler',
- PARSER_EVENT_CLASS => 'handleClass',
- PARSER_EVENT_COMMENT => 'handleComment',
- PARSER_EVENT_DOCBLOCK_TEMPLATE => 'handleDocBlockTemplate',
- PARSER_EVENT_END_DOCBLOCK_TEMPLATE => 'handleEndDocBlockTemplate',
- PARSER_EVENT_LOGICBLOCK => 'handleLogicBlock',
- PARSER_EVENT_METHOD_LOGICBLOCK => 'handleMethodLogicBlock',
- PARSER_EVENT_NOEVENTS => 'defaultHandler',
- PARSER_EVENT_OUTPHP => 'defaultHandler',
- PARSER_EVENT_CLASS_MEMBER => 'handleClassMember',
- PARSER_EVENT_DEFINE => 'defaultHandler',
- PARSER_EVENT_DEFINE_PARAMS => 'defaultHandler',
- PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS => 'defaultHandler',
- PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS => 'defaultHandler',
- PARSER_EVENT_DOCBLOCK => 'handleDocBlock',
- PARSER_EVENT_TAGS => 'handleTags',
- PARSER_EVENT_DESC => 'handleDesc',
- PARSER_EVENT_DOCKEYWORD => 'handleTag',
- PARSER_EVENT_DOCKEYWORD_EMAIL => 'handleDockeywordEmail',
- PARSER_EVENT_EOFQUOTE => 'handleQuote',
- PARSER_EVENT_FUNCTION => 'handleFunction',
- PARSER_EVENT_METHOD => 'handleMethod',
- PARSER_EVENT_FUNCTION_PARAMS => 'handleFunctionParams',
- PARSER_EVENT_FUNC_GLOBAL => 'handleFuncGlobal',
- PARSER_EVENT_INLINE_DOCKEYWORD => 'handleInlineDockeyword',
- PARSER_EVENT_INCLUDE => 'defaultHandler',
- PARSER_EVENT_INCLUDE_PARAMS => 'defaultHandler',
- PARSER_EVENT_QUOTE => 'handleQuote',
- PARSER_EVENT_QUOTE_VAR => 'handleQuoteVar',
- PARSER_EVENT_PHPCODE => 'handlePhpCode',
- PARSER_EVENT_SINGLEQUOTE => 'handleSingleQuote',
- PARSER_EVENT_STATIC_VAR => 'defaultHandler',
- PARSER_EVENT_STATIC_VAR_VALUE => 'defaultHandler',
- PARSER_EVENT_VAR => 'handleVar',
- );
-
- /**
- * event handlers for @tags
- * @tutorial tags.pkg
- */
- var $tagHandlers = array(
- '*' => 'defaultTagHandler',
- 'abstract' => 'coreTagHandler',
- 'access' => 'coreTagHandler',
- 'author' => 'coreTagHandler',
- 'category' => 'coreTagHandler',
- 'copyright' => 'coreTagHandler',
- 'deprecated' => 'coreTagHandler',
- 'example' => 'coreTagHandler',
- 'filesource' => 'coreTagHandler',
- 'final' => 'coreTagHandler',
- 'global' => 'globalTagHandler',
- 'ignore' => 'coreTagHandler',
- 'license' => 'coreTagHandler',
- 'link' => 'coreTagHandler',
- 'name' => 'coreTagHandler',
- 'package' => 'coreTagHandler',
- 'param' => 'paramTagHandler',
- 'parameter' => 'paramTagHandler',
- 'see' => 'coreTagHandler',
- 'since' => 'coreTagHandler',
- 'subpackage' => 'coreTagHandler',
- 'internal' => 'coreTagHandler',
- 'return' => 'returnTagHandler',
- 'static' => 'coreTagHandler',
- 'staticvar' => 'staticvarTagHandler',
- 'throws' => 'coreTagHandler',
- 'todo' => 'coreTagHandler',
- 'tutorial' => 'coreTagHandler',
- 'uses' => 'coreTagHandler',
- 'var' => 'varTagHandler',
- 'version' => 'coreTagHandler',
- );
- /**#@-*/
-
- /**
- * @uses Converter::SourceLine() encloses {@link $_line} in a
- * converter-specific format
- */
- function newLineNum()
- {
- if ($this->_pf_no_output_yet) return;
- $this->_flush_save();
- $this->_line .= $this->_converter->flushHighlightCache();
- $this->_output .= $this->_converter->SourceLine($this->_wp->linenum, $this->_line, $this->_path);
- $this->_line = '';
- }
-
- /**
- * Start the parsing at a certain line number
- */
- function setLineNum($num)
- {
- $this->_wp->linenum = $num;
- }
-
- /**
- * Parse a new file
- *
- * The parse() method is a do...while() loop that retrieves tokens one by
- * one from the {@link $_event_stack}, and uses the token event array set up
- * by the class constructor to call event handlers.
- *
- * The event handlers each process the tokens passed to them, and use the
- * {@link _addoutput()} method to append the processed tokens to the
- * {@link $_line} variable. The word parser calls {@link newLineNum()}
- * every time a line is reached.
- *
- * In addition, the event handlers use special linking functions
- * {@link _link()} and its cousins (_classlink(), etc.) to create in-code
- * hyperlinks to the documentation for source code elements that are in the
- * source code.
- *
- * @uses setupStates() initialize parser state variables
- * @uses configWordParser() pass $parse_data to prepare retrieval of tokens
- * @param array $parse_data
- * @param Converter $converter
- * @param boolean $inlinesourceparse whether this data is from an
- * inline {@}source} tag
- * @param string|false if a string, it is the name of the class whose
- * method we are parsing containing a {@}source} tag
- * @param false|integer starting line number from {@}source linenum}
- * @param false|string full path to file with @filesource tag, if this
- * is a @filesource parse
- * @staticvar integer used for recursion limiting if a handler for
- * an event is not found
- * @return bool
- */
- function parse (&$parse_data, &$converter, $inlinesourceparse = false, $class = false, $linenum = false, $filesourcepath = false)
- {
- if (!tokenizer_ext)
- {
- if (is_array($parse_data))
- {
- $parse_data = join($parse_data,'');
- }
- $parse_data = explode("\n", $parse_data);
- $this->_output = '';
- foreach($parse_data as $linenum => $line)
- {
- if ($linenum > 0)
- {
- $this->_output .= $converter->SourceLine($linenum, $line, $filesourcepath);
- }
- }
- return $converter->PreserveWhiteSpace($this->_output);
- }
- static $endrecur = 0;
- $this->_converter = &$converter;
- $converter->startHighlight();
- $this->_path = $filesourcepath;
- $this->setupStates($inlinesourceparse, $class);
-
- $this->configWordParser($parse_data);
- if ($linenum !== false) $this->setLineNum($linenum);
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
-
- do
- {
- $lpevent = $pevent;
- $pevent = $this->_event_stack->getEvent();
- if ($lpevent != $pevent)
- {
- $this->_last_pevent = $lpevent;
- }
-
- if ($pevent == PARSER_EVENT_CLASS_MEMBER)
- {
- $this->_wp->setWhitespace(true);
- } else
- {
- $this->_wp->setWhitespace(false);
- }
-
- if (!is_array($word)) $lw = $word;
- if (is_array($word) && $word[0] != T_WHITESPACE) $lw = $word;
- $dbg_linenum = $this->_wp->linenum;
- $dbg_pos = $this->_wp->getPos();
- $word = $this->_wp->getWord();
- if (is_array($word) && $word[0] == T_WHITESPACE && $pevent != PARSER_EVENT_CLASS_MEMBER)
- {
-// debug("added ".$this->_wp->linenum.'-'.$this->_wp->pos);
- $this->_addoutput($word);
- continue;
- } else $this->_pv_last_word = $lw;
- if ($pevent != PARSER_EVENT_DOCBLOCK)
- {
- $this->_pv_last_next_word = $this->_pv_next_word;
- $this->_pv_next_word = $this->_wp->nextToken();
- }
- // in wordparser, have to keep track of lines
-// $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWLINENUM, $this->_wp->linenum);
- if (0)//PHPDOCUMENTOR_DEBUG == true)
- {
- echo "LAST: ";
- if (is_array($this->_pv_last_word))
- {
- echo token_name($this->_pv_last_word[0]). ' => |'.htmlspecialchars($this->_pv_last_word[1]);
- } else echo "|" . $this->_pv_last_word;
- echo "|\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo "LASTPEVENT: " . $this->getParserEventName($this->_last_pevent) . "\n";
-// echo "LINE: ".$this->_line."\n";
-// echo "OUTPUT: ".$this->_output."\n";
- echo $dbg_linenum.'-'.$dbg_pos . ": ";
- if (is_array($word))
- {
- echo token_name($word[0]).' => |'.htmlspecialchars($word[1]);
- } else echo '|'.htmlspecialchars($word);
- echo "|\n";
- $this->_wp->printState();
- echo "NEXT TOKEN: ";
- $tok1 = $this->_pv_next_word;
- $tok = $this->_wp->_all[$tok1[0]][$tok1[1]];
- if (is_array($tok))
- {
- echo token_name($tok[0]). ' => '.$tok1[0].'-'.$tok1[1].'|'.htmlspecialchars($tok[1]);
- } else echo "|" . $tok;
- echo "|\n";
- echo "-------------------\n\n\n";
- flush();
- }
- if (isset($this->eventHandlers[$pevent]))
- {
- $handle = $this->eventHandlers[$pevent];
- $this->$handle($word, $pevent);
- } else
- {
- debug('WARNING: possible error, no handler for event number '.$pevent);
- if ($endrecur++ == 25)
- {
- die("FATAL ERROR, recursion limit reached");
- }
- }
- } while (!($word === false));
- if (strlen($this->_line)) $this->newLineNum();
- return $this->_output;
- }
-
- /**#@+
- * Event Handlers
- *
- * All Event Handlers use {@link checkEventPush()} and
- * {@link checkEventPop()} to set up the event stack and parser state.
- * @access private
- * @param string|array token value
- * @param integer parser event from {@link Parser.inc}
- */
- /**
- * Most tokens only need highlighting, and this method handles them
- */
- function defaultHandler($word, $pevent)
- {
- $this->_addoutput($word);
- if ($this->checkEventPush($word, $pevent)) return;
- $this->checkEventPop($word, $pevent);
- }
-
- /**
- * Handles global declarations in a function, like:
- *
- * <code>
- * function foobar()
- * {
- * global $_phpDocumentor_setting;
- * }
- * </code>
- * @uses _globallink() instead of _addoutput(), to link to global variables
- * if they are used in a function
- */
- function handleFuncGlobal($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent)) return;
- $this->_globallink($word);
- $this->checkEventPop($word, $pevent);
- }
-
- /**
- * Handles strings in quotation marks and heredoc
- *
- * Special handling is needed for strings that contain variables like:
- *
- * <code>$a = "$test string"</code>
- *
- * The tokenizer parses out tokens '"',array(T_VARIABLE,'$test'),' string',
- * and '"'. Since it is possible to have $this->classvar in a string,
- * we save a variable name just in case the next token is -> to allow linking
- * to class members. Otherwise, the string is simply highlighted.
- *
- * constant strings (with no $variables in them) are passed as a single
- * entity, and so will be saved in the last token parsed. This means the
- * event handler must tell the word parser to re-retrieve the current token
- * so that the correct event handler can process it.
- */
- function handleQuote($word, $pevent)
- {
- if ($this->_pf_inmethod && is_array($word) && $word[0] == T_VARIABLE) $this->_pv_lastvar = $word;
- if ($this->checkEventPush($word, $pevent))
- {
- $this->_addoutput($word);
- return;
- }
- if ($this->_pf_quote_active &&
- (($this->_pv_last_word == '"' && $this->_last_pevent != PARSER_EVENT_QUOTE) ||
- (is_array($this->_pv_last_word) && $this->_pv_last_word[0] == T_END_HEREDOC &&
- $this->_last_pevent != PARSER_EVENT_EOFQUOTE)))
- {
- $this->_pf_quote_active = false;
- $this->_wp->backupPos($word);
- $this->_event_stack->popEvent();
- return;
- }
- if (!$this->_pf_quote_active &&
- (($this->_pv_last_word == '"' && $this->_last_pevent != PARSER_EVENT_QUOTE) ||
- (is_array($this->_pv_last_word) && $this->_pv_last_word[0] == T_END_HEREDOC &&
- $this->_last_pevent != PARSER_EVENT_EOFQUOTE)))
- {
- if (is_array($word) && $word[0] == T_VARIABLE) $this->_pv_lastvar = $word;
- $this->_pf_quote_active = true;
- $this->_save_highlight_state = $this->_converter->getHighlightState();
- $this->_converter->startHighlight();
- $this->_addoutput($word);
- $this->checkEventPop($word, $pevent);
- return;
- } elseif (is_array($this->_pv_last_word) && $this->_pv_last_word[0] == T_CONSTANT_ENCAPSED_STRING)
- {
-// $this->_pv_quote_data = $this->_pv_last_word[1];
- $this->_event_stack->popEvent();
- $this->_wp->backupPos($word);
- return;
- }
- if ($this->checkEventPop($word, $pevent))
- {
- $this->_pf_quote_active = false;
- }
- $this->_addoutput($word);
- }
-
- /**
- * Handles {$variable} within a "quote"
- *
- * This is a simple handler, for a very complex
- * array of legal syntax. It is legal to nest control structures
- * inside the {}, and other weird stuff.
- */
- function handleQuoteVar($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent))
- {
- $this->_pf_quote_active = true;
- $this->_addoutput($word);
- return;
- }
- if ($this->_pf_inmethod && is_array($word) && $word[0] == T_VARIABLE) $this->_pv_lastvar = $word;
- if ($this->checkEventPush($word, $pevent))
- {
- $this->_pf_quote_active = false;
- if (is_string($word) && ($word == '{' || $word == '"' || $word == "'"))
- {
- $this->_pf_quote_active = true;
- $this->_pv_lastvar = false;
- }
- }
- $this->_addoutput($word);
- }
-
- /**
- * Handles define() statements
- *
- * The only thing this handler cares about is retrieving the name of the
- * define variable, and the end of the define statement, so after the name
- * is found, it simply makes sure parentheses are matched as in this case:
- *
- * <code>
- * define("test",array("hello",6 => 4, 5 => array('there')));
- * </code>
- *
- * This handler and the DEFINE_PARAMS_PARENTHESIS handler (which is just
- * {@link defaultHandler()} in this version, as nothing fancy is needed)
- * work together to ensure proper parenthesis matching.
- *
- * If the define variable is documented, a link will be created to its
- * documentation using the Converter passed.
- */
- function handleDefine($word, $pevent)
- {
- static $token_save;
- if (!isset($token_save)) $token_save = array();
- $e = $this->checkEventPush( $word, $pevent);
- if ($e && $e != PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS) return;
-
- if(!isset($this->_pv_define_params_data)) $this->_pv_define_params_data = '';
-
- if ($this->checkEventPop($word,$pevent))
- {
- unset($token_save);
- $this->_addoutput($word);
- }
- if ($this->_pf_definename_isset)
- {
- $this->_addoutput($word);
- } else
- {
- if ($word != ",")
- {
- $token_save[] = $word;
- if (is_array($word)) $word = $word[1];
- $this->_pv_define_params_data .= $word;
- } else
- {
- if (substr($this->_pv_define_params_data,0,1) ==
- substr($this->_pv_define_params_data,strlen($this->_pv_define_params_data) - 1) &&
- in_array(substr($this->_pv_define_params_data,0,1),array('"',"'")))
- { // remove leading and ending quotation marks if there are only two
- $a = substr($this->_pv_define_params_data,0,1);
- $b = substr($this->_pv_define_params_data,1,strlen($this->_pv_define_params_data) - 2);
- if (strpos($b,$a) === false)
- {
- $this->_pv_define_params_data = $b;
- }
- }
- $this->_pf_definename_isset = true;
- $link = $this->_converter->getLink($this->_pv_define_params_data);
- foreach ($token_save as $token)
- {
- if (is_object($link))
- {
- if (is_array($token)) $token = $token[1];
- $this->_addoutput($this->_converter->returnSee($link, $token));
- } else
- {
- $this->_addoutput($save, $token);
- }
- }
- $this->_pv_define_params_data = '';
- }
- }
- }
-
- /**
- * Handles normal global code. Special consideration is taken for DocBlocks
- * as they need to retrieve the whole DocBlock before doing any output, so
- * the parser flag {@link $_pf_no_output_yet} is set to tell
- * {@link _addoutput()} not to spit anything out yet.
- * @uses _link() make any global code that is a documentable element link
- * to the php manual or its documentation
- */
- function handlePhpCode($word, $pevent)
- {
- $test = $this->checkEventPush($word, $pevent);
- if ($test == PARSER_EVENT_DOCBLOCK || $test == PARSER_EVENT_COMMENT)
- {
- $this->_pf_no_output_yet = true;
- $this->_pv_saveline = $this->_wp->linenum + 1;
- return;
- }
- if (is_array($word) && $word[0] == T_DOUBLE_COLON) $this->_pf_colon_colon = true;
- if (!$this->_pf_colon_colon && is_array($word) && $word[0] == T_STRING) $this->_pv_last_string = $word;
- $this->_link($word);
- $this->checkEventPop($word, $pevent);
- }
-
- /**
- * Handle the function declaration header
- *
- * This handler only sees the "function name" portion of the function
- * declaration. Handling of the function parameters is by
- * {@link handleFunctionParams()}, and the function body is handled by
- * {@link handleLogicBlock()}
- */
- function handleFunction($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- $this->_addoutput($word);
- return;
- }
- if ($this->checkEventPop($word, $pevent)) return;
- $this->_link($word);
- }
-
- /**
- * Handle the method declaration header
- *
- * This handler only sees the "function name" portion of the method
- * declaration. Handling of the method parameters is by
- * {@link handleFunctionParams()}, and the method body is handled by
- * {@link handleMethodLogicBlock()}
- */
- function handleMethod($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- $this->_addoutput($word);
- return;
- }
- if ($this->checkEventPop($word, $pevent)) {
- if ($word == ';') {
- $this->_addoutput($word);
- }
- return;
- }
- $this->_methodlink($word);
- }
-
- /**
- * Handler for the stuff between ( and ) in a function declaration
- *
- * <code>
- * function handles($only,$these,$parameters){...}
- * </code>
- */
- function handleFunctionParams($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- $this->_addoutput($word);
- return;
- }
- $this->_addoutput($word);
- $this->checkEventPop($word, $pevent);
- }
-
- /**
- * Handler for function body.
- *
- * The function body is checked for php functions, documented constants,
- * functions, and indirectly for global statements. It hyperlinks to the
- * documentation for detected elements is created. Everything else is
- * highlighted normally.
- */
- function handleLogicBlock($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- $this->_addoutput($word);
- return;
- }
- if (is_array($word) && $word[0] == T_DOUBLE_COLON) $this->_pf_colon_colon = true;
- if (!$this->_pf_colon_colon && is_array($word) && $word[0] == T_STRING) $this->_pv_last_string = $word;
- $this->_link($word);
- if ($this->checkEventPop($word,$pevent))
- {
- $e = $this->_event_stack->popEvent();
- $this->_event_stack->pushEvent($e);
- if ($e == PARSER_EVENT_FUNCTION)
- {
- $this->_wp->backupPos($word);
- }
- }
- }
-
- /**
- * Handler for method body.
- *
- * Like functions, the method body is checked for php functions, documented
- * constants, functions, and indirectly for global statements. It also
- * checks for "$this->XXXX" where XXXX is a class variable or method, and
- * links to the documentation for detected elements is created. Everything
- * else is highlighted normally.
- */
- function handleMethodLogicBlock($word, $pevent)
- {
- if (isset($this->_pv_prev_var_type))
- {
-// debug('prevtype is set');
- if (!is_array($word)) unset($this->_pv_prev_var_type);
- else
- {
- if ($word[0] != T_WHITESPACE && $word[0] != T_STRING && $word[0] != T_OBJECT_OPERATOR)
- {
-// fancy_debug('unset',$word);
- unset($this->_pv_prev_var_type);
- }
- }
- }
- $this->_pf_inmethod = true;
- if ($e = $this->checkEventPush($word, $pevent))
- {
- $this->_addoutput($word);
- if ($e == PARSER_EVENT_CLASS_MEMBER) {
- $this->_pf_no_output_yet = true;
- }
- return;
- }
- if (is_array($word) && $word[0] == T_DOUBLE_COLON) $this->_pf_colon_colon = true;
- if (!$this->_pf_colon_colon && is_array($word) && $word[0] == T_STRING) $this->_pv_last_string = $word;
- if (is_array($word) && $word[0] == T_VARIABLE) $this->_pv_lastvar = $word;
- $this->_link($word);
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_pf_inmethod = false;
- $e = $this->_event_stack->popEvent();
- $this->_event_stack->pushEvent($e);
- if ($e == PARSER_EVENT_METHOD)
- {
- $this->_wp->backupPos($word);
- }
- }
- }
-
- /**
- * Handles $obj->classmember in a method body
- *
- * This handler is responsible for linking to the documentation of a
- * class member when it is used directly in a method body.
- *
- * There are two methods of determining whether to link:
- * - $this->member
- * - $this->member->submember
- *
- * The first case is handled by the $_pv_lastvar variable, and the
- * second case is handled by the $_pv_prev_var_type variable. $_pv_lastvar
- * is always set to the value of the last T_VARIABLE token, if and only if
- * no text has occurred between the variable and a T_OBJECT_OPERATOR token
- * "->". handleClassMember will only link if the last variable encountered
- * was $this.
- *
- * When $this->variable is encountered, the variable is looked up to see
- * if it can be found, and if so, the contents of its @var tag are processed
- * to see if the member variable is defined to have 1 and only 1 class.
- * If so, the $_pv_prev_var_type variable is set to this classname. When
- * submember is processed, the HighlightParser checks to see if
- * $_pv_prev_var_type::submember() or $_pv_prev_var_type::$submember exists,
- * and if it does, it is linked to.
- */
- function handleClassMember($word, $pevent)
- {
- if (!isset($this->_pv_lastvar) && !isset($this->_pv_prev_var_type))
- {
-// fancy_debug('returned from',$word,$this->_pv_prev_var_type);
- $this->_pf_no_output_yet = false;
- $this->_event_stack->popEvent();
- return $this->defaultHandler($word, $pevent);
- }
- if (isset($this->_pv_cm_name))
- {
- $this->_pf_obj_op = false;
- $name = $this->_pv_cm_name;
- unset($this->_pv_cm_name);
-// debug('unset pvcmname');
- $this->_event_stack->popEvent();
- // control variable for _pv_prev_var_type
- $setnow = false;
- if ((isset($this->_pv_lastvar) && $this->_pv_lastvar[1] == '$this')
- || isset($this->_pv_prev_var_type))
- {
- if (is_array($word) && $word[0] == T_WHITESPACE)
- {
- // preserve value of _pv_prev_var_type
- $setnow = true;
- $save = $this->_wp->nextToken();
- $temp = $this->_wp->getWord();
- $this->_wp->backupPos($save, true);
- }
- if ((is_string($word) && $word == '(') ||
- (isset($temp) && is_string($temp) && $temp == '('))
- { // it's a function
- $this->_pf_no_output_yet = false;
- $this->_methodlink($name);
- unset($this->_pv_prev_var_type);
- } else
- { // it's a variable
-// fancy_debug('name is ',$name);
- $this->_pf_no_output_yet = false;
- $this->_varlink($name, true);
- $templink = $this->_converter->getLink('object '.$this->_pv_class);
- $class = false;
- if (is_object($templink)) {
- $class = $this->_converter->classes->getClass($templink->name, $templink->path);
- }
- if ($class)
- {
- $varname = $name;
- if (is_array($varname)) $varname = $name[1];
- if ($varname{0} != '$') $varname = '$'.$varname;
- $var = $class->getVar($this->_converter, $varname);
-
- if (is_object($var) && $var->docblock->var)
- $type = $var->docblock->var->returnType;
- if (isset($type))
- {
- if (strpos($type, 'object') === false)
- $type = 'object '.$type;
- $type = $this->_converter->getLink($type);
- if (phpDocumentor_get_class($type) == 'classlink')
- { // the variable's type is a class, save it for future ->
-// fancy_debug('set prev_var_type!',$type->name);
- $setnow = true;
- $this->_pv_prev_var_type = $type->name;
- } else unset($this->_pv_prev_var_type);
- } else unset($this->_pv_prev_var_type);
- } else unset($this->_pv_prev_var_type);
- }
- } else {
- $this->_pf_no_output_yet = false;
- // this does NewLinenum if necessary
- $this->_wp->backupPos($word);
- $this->_wp->getWord();
- $this->_addoutput($name);
- }
- if (!$setnow)
- {
-// debug('unset prevtype, no setnow');
- unset($this->_pv_prev_var_type);
- }
- unset($this->_pv_lastvar);
- $this->_pf_no_output_yet = false;
- // this does NewLinenum if necessary
- $this->_wp->backupPos($word);
- $this->_wp->getWord();
- if ($word[0] == T_OBJECT_OPERATOR)
- $this->_wp->backupPos($word);
- else
- $this->_addoutput($word);
- return;
- }
- if (!$this->_pf_obj_op && is_array($this->_pv_last_word) && $this->_pv_last_word[0] == T_OBJECT_OPERATOR)
- {
- if ((isset($this->_pv_lastvar) && $this->_pv_lastvar[1] == '$this') || isset($this->_pv_prev_var_type))
- {
- $this->_pf_obj_op = true;
- } else
- {
- $this->_pf_no_output_yet = false;
- // this does NewLinenum if necessary
- $this->_wp->backupPos($word);
- $this->_wp->getWord();
- $this->_addoutput($word);
- $this->_event_stack->popEvent();
- }
- }
- if (is_array($word) && $word == T_WHITESPACE)
- {
- $this->_pf_no_output_yet = false;
- // this does NewLinenum if necessary
- $this->_wp->backupPos($word);
- $this->_wp->getWord();
- $this->_addoutput($word);
- return;
- }
- if ($this->_pf_obj_op)
- {
- if (!(is_array($word) && ($word[0] == T_STRING || $word[0] == T_WHITESPACE)))
- {
- unset($this->_pv_lastvar);
-// debug('unset lastvar');
- $this->_event_stack->popEvent();
- $this->_pf_no_output_yet = false;
- // this does NewLinenum if necessary
- $this->_wp->backupPos($word);
- $this->_wp->getWord();
- $this->_addoutput($word);
- return;
- }
- if ($word[0] == T_STRING)
- {
-// fancy_debug('set pvcmname to',$word);
- $this->_pv_cm_name = $word;
- } else {
- $this->_pf_no_output_yet = false;
- // this does NewLinenum if necessary
- $this->_wp->backupPos($word);
- $this->_wp->getWord();
- $this->_addoutput($word);
- }
- }
- }
-
- /**
- * Handles comments
- *
- * Comments are almost always single-line tokens, and so will be
- * in the last word. This handler checks to see if the current token
- * is in fact a comment, and if it isn't, it backs up and returns control
- * to the parent event handler with that word.
- */
- function handleComment($word, $pevent)
- {
- $w = $this->_pv_last_word;
- // don't perform this check if this is a normal comment. Docblocks
- // have the _pf_no_output_yet variable set to true
- if ($this->_pf_no_output_yet &&
- is_array($w) && (in_array($w[0], array(T_COMMENT, T_DOC_COMMENT)) && strpos($w[1],'/**') === 0)) {
- $this->_event_stack->popEvent();
- $this->_event_stack->pushEvent(PARSER_EVENT_DOCBLOCK);
- return $this->handleDocBlock($word, PARSER_EVENT_DOCBLOCK);
- }
- if ($this->_pf_no_output_yet) {
- $flag = 1;
- $this->_pf_no_output_yet = false;
- $this->_addoutput($this->_pv_last_word);
- }
- if (!is_array($word) || !in_array($word[0], array(T_COMMENT, T_DOC_COMMENT)) ||
- (in_array($word[0], array(T_COMMENT, T_DOC_COMMENT)) && strpos($word[1],'/**') === 0))
- {
- $this->_event_stack->popEvent();
- if (strpos($this->_pv_last_word[1], "\n") !== false)
- {
-// $this->_wp->linenum++;
-// $this->newLineNum();
- }
- $this->_wp->backupPos($this->_pv_last_word);
- $this->_wp->getWord();
-// var_dump($this->_wp->nextToken());
- return;
- } elseif (isset($flag)) {
- $this->newLineNum();
- }
- $this->_addoutput($word);
- $this->checkEventPop($word, $pevent);
- if (strpos($word[1], '*/') === strlen($word[1]) - 2) {
- $this->_event_stack->popEvent();
- }
- }
-
- /**
- * Handle class declarations
- *
- * Handles the initial declaration line:
- *
- * <code>class X</code>
- *
- * or
- *
- * <code>class X extends Y implements I</code>
- *
- * @uses _classlink() to link to documentation for X and for Y class in
- * "class X extends Y"
- */
- function handleClass($word, $pevent)
- {
- $this->_pf_in_class = true;
- $a = $this->checkEventPush( $word, $pevent);
-
- if (!isset($this->_pv_class) && is_array($word) && $word[0] == T_STRING)
- {
- $this->_pv_class = $this->_converter->class = $word[1];
- $this->_classlink($word);
- return;
- }
-
- if (is_array($word) && in_array($word[0], array(T_PRIVATE, T_PROTECTED, T_PUBLIC))) {
- $starttok = $this->_wp->nextToken();
- $test = array(T_WHITESPACE);
- while ($test && $test[0] == T_WHITESPACE) {
- $tok = $this->_wp->nextToken();
- $test = $this->_wp->getWord();
- } // while
-
- if (is_array($test) && $test[0] == T_VARIABLE) {
- $this->_wp->backupPos($tok, true);
- return;
- }
- $this->_wp->backupPos($starttok, true);
- }
-
- if (@in_array($this->_pv_last_word[0], array(T_PRIVATE, T_PROTECTED, T_PUBLIC))) {
- if (is_array($word) && $word[0] == T_VARIABLE) {
- $this->_wp->backupPos($this->_pv_last_word);
- $this->_event_stack->pushEvent(PARSER_EVENT_VAR);
- return;
- }
- }
-
- if ($this->_pf_extends_found && is_array($word) && $word[0] == T_STRING)
- {
- $this->_classlink($word);
- return;
- }
- if (is_array($word) && $word[0] == T_EXTENDS) $this->_pf_extends_found = true;
- if ($a == PARSER_EVENT_DOCBLOCK)
- {
- $this->_pf_no_output_yet = true;
- $this->_pv_saveline = $this->_wp->linenum + 1;
- return;
- }
- $this->_addoutput($word);
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_pf_in_class = false;
- unset($this->_pv_class);
- }
- }
-
- /**
- * Handles class variable declaration
- *
- * <code>
- * class X
- * {
- * var $Y;
- * }
- * </code>
- * @uses _varlink() make a link to $Y documentation in class variable
- * declaration "var $Y;"
- */
- function handleVar($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- $this->_addoutput($word);
- return;
- }
- if (is_array($word) && $word[0] == T_VARIABLE)
- {
- return $this->_varlink($word);
- }
- $this->_addoutput($word);
- $this->checkEventPop($word, $pevent);
- }
-
- /**
- * This handler is responsible for highlighting DocBlocks
- *
- * handleDocBlock determines whether the docblock is normal or a template,
- * and gathers all the lines of the docblock together before doing any
- * processing
- *
- * As it is not possible to distinguish any comment token from a docblock
- * token, this handler is also called for comments, and will pass control
- * to {@link handleComment()} if the comment is not a DocBlock
- * @uses commonDocBlock() once all lines of the DocBlock have been retrieved
- */
- function handleDocBlock($word, $pevent)
- {
- if (!($this->_pf_docblock || $this->_pf_docblock_template))
- {
- if (strpos($this->_pv_last_word[1],'/**') !== 0)
- { // not a docblock
- $this->_wp->backupPos($this->_pv_last_word);
- $this->_event_stack->popEvent();
- $this->_event_stack->pushEvent(PARSER_EVENT_COMMENT);
- $this->_pf_no_output_yet = false;
- return;
- } else
- {
- $this->_pf_no_output_yet = true;
- $this->_pv_db_lines = array();
- }
- }
- $last_word = $this->_pv_last_word[1];
- $dtype = '_pv_docblock';
- if ($last_word == '/**#@-*/')
- { // stop using docblock template
- $this->_pf_no_output_yet = false;
- $this->_addDocBlockoutput('closetemplate', $last_word);
- if ($this->_pv_next_word !== false) {
- $this->_wp->backupPos($this->_pv_next_word,true);
- }
- $this->_event_stack->popEvent();
- return;
- }
- if (!($this->_pf_docblock || $this->_pf_docblock_template))
- {
- $this->_pv_db_lines = array();
- if (strpos($last_word,'/**#@+') === 0)
- { // docblock template definition
- $this->_pf_docblock_template = true;
- } else
- {
- $this->_pf_docblock = true;
- }
- $this->_pv_db_lines[] = $last_word;
- if (strpos($last_word,'*/') !== false)
- {
- $this->commonDocBlock();
- return;
- }
- $this->_pv_db_lines[] = $word[1];
- if (strpos($word[1],'*/') !== false)
- {
- $this->commonDocBlock();
- }
- } else
- {
- $this->_pv_db_lines[] = $word[1];
- }
- if (($this->_pf_docblock || $this->_pf_docblock_template) && (strpos($word[1],'*/') !== false))
- {
- $this->commonDocBlock();
- }
- }
- /**#@-*/
- /**
- * This continuation of handleDocBlock splits DocBlock comments up into
- * phpDocumentor tokens. It highlights DocBlock templates in a different
- * manner from regular DocBlocks, recognizes inline tags, regular tags,
- * and distinguishes between standard core tags and other tags, and
- * recognizes parameters to tags like @var.
- *
- * the type in "@var type description" will be highlighted as a php type,
- * and the var in "@param type $var description" will be highlighted as a
- * php variable.
- * @uses handleDesc() highlight inline tags in the description
- * @uses handleTags() highlight all tags
- * @access private
- */
- function commonDocBlock()
- {
- $this->_event_stack->popEvent();
- $lines = $this->_pv_db_lines;
- $go = count($this->_pv_db_lines);
- for($i=0;$i<$go;$i++)
- {
- if (substr(trim($lines[$i]),0,2) == '*/' || substr(trim($lines[$i]),0,1) != '*' && substr(trim($lines[$i]),0,3) != '/**')
- {
- $lines[$i] = array($lines[$i],false);
- } elseif (substr(trim($lines[$i]),0,3) == '/**')
- {
- $linesi = array();
- $linesi[1] = substr(trim($lines[$i]),3); // remove leading "/**"
- if (empty($linesi[1]))
- $linesi[0] = $lines[$i];
- else
- $linesi[0] = substr($lines[$i],0,strpos($lines[$i],$linesi[1]));
- $lines[$i] = $linesi;
- } else
- {
- $linesi = array();
- $linesi[1] = substr(trim($lines[$i]),1); // remove leading "* "
- if (empty($linesi[1]))
- $linesi[0] = $lines[$i];
- else
- $linesi[0] = substr($lines[$i],0,strpos($lines[$i],$linesi[1]));
- $lines[$i] = $linesi;
- }
- }
- for($i = 0;$i<count($lines);$i++)
- {
- if ($lines[$i][1] === false) continue;
- if (substr(trim($lines[$i][1]),0,1) == '@' && substr(trim($lines[$i][1]),0,2) != '@ ')
- {
- $tagindex = $i;
- $i = count($lines);
- }
- }
- if (isset($tagindex))
- {
- $tags = array_slice($lines,$tagindex);
- $desc = array_slice($lines,0,$tagindex);
- } else
- {
- $tags = array();
- $desc = $lines;
- }
-// var_dump($desc,$tags);
- $this->_pf_no_output_yet = false;
- $save = $this->_wp->linenum;
- $this->_wp->linenum = $this->_pv_saveline;
- $this->handleDesc($desc);
- $this->handleTags($tags);
- $this->_pv_db_lines = array();
- $this->_wp->linenum = $save;
- if (strpos($this->_pv_last_word[1],'*/') !== false)
- {
- $this->_wp->backupPos($this->_pv_next_word,true);
- }
- $this->_pf_docblock = $this->_pf_docblock_template = false;
- }
-
- /**
- * Handle the description area of a DocBlock
- *
- * This method simply finds inline tags and highlights them
- * separately from the rest of the description.
- * @uses getInlineTags()
- * @access private
- */
- function handleDesc($desc)
- {
- $dbtype = 'docblock';
- $dbtype .= ($this->_pf_docblock ? '' : 'template');
- foreach($desc as $line)
- {
- $this->getInlineTags($line[0].$line[1]);
- if (strpos($line[0],'*/') === false)
- {
- $this->newLineNum();
- $this->_wp->linenum++;
- }
- }
- if ($this->_pf_internal)
- {
- $this->_pf_internal = false;
- }
- }
-
- /**
- * Handle phpDocumentor tags in a DocBlock
- *
- * This method uses the {@link $tagHandlers} array to determine which
- * method will handle tags found in the docblock, and passes the data to
- * the individual handlers one by one
- * @access private
- */
- function handleTags($tags)
- {
- $newtags = array();
- $curtag = array();
- for($i=0;$i < count($tags);$i++)
- {
- $tagsi = trim($tags[$i][1]);
- if (substr($tagsi,0,1) == '@' && substr($tagsi,0,2) != '@ ')
- { // start a new tag
- $tags[$i][1] = array(substr($tags[$i][1],0,strpos($tags[$i][1],$tagsi)),$tagsi);
- if (!empty($curtag))
- {
- $newtags[] = $curtag;
- $curtag = array();
- }
- $curtag[] = $tags[$i];
- } else $curtag[] = $tags[$i];
- }
- if (!empty($curtag)) $newtags[] = $curtag;
- foreach($newtags as $tag)
- {
- foreach($tag as $i => $t)
- {
- if ($t[1] === false) continue;
- if (is_array($t[1]))
- {
- $tag[$i][1][1] = explode(" ",str_replace("\t",' ',$t[1][1]));
- $x = $tag[$i][1][1];
- }
- }
- $tagname = substr(array_shift($x),1);
- $restoftag = $tag;
- if (isset($this->tagHandlers[$tagname]))
- $handle = $this->tagHandlers[$tagname];
- else
- $handle = $this->tagHandlers['*'];
- $this->$handle($tagname,$restoftag);
- }
- }
-
- /**
- * This handler recognizes all {@}inline} tags
- *
- * Normal inline tags are simply highlighted. the {@}internal}} inline
- * tag {@tutorial tags.inlineinternal.pkg} is highlighted differently
- * to distinguish it from other inline tags.
- * @access private
- */
- function getInlineTags($value, $endinternal = false)
- {
- if (!$value) return;
- if ($this->_pf_internal && !$endinternal)
- {
- if (strpos($value,'}}') !== false)
- {
- $x = strrpos($value,'}}');
- // add the rest of internal
- $this->getInlineTags(substr($value,0,$x + 3), true);
- // strip internal from value
- $value = substr($value,strrpos($value,'}}') + 1);
- // turn off internal
- $this->_pf_internal = false;
- }
- }
- if (!$value) return;
- $dbtype = 'docblock';
- $dbtype .= ($this->_pf_docblock ? '' : 'template');
- $save = $value;
- $value = explode('{@',$value);
- $newval = array();
- // everything before the first {@ is normal text
- $this->_addDocBlockoutput($dbtype, $value[0]);
- for($i=1;$i<count($value);$i++)
- {
- if (substr($value[$i],0,1) == '}')
- {
- $this->_addDocBlockoutput($dbtype, '{@}'.substr($value[$i],1));
- } else
- {
- $save = $value[$i];
- $value[$i] = str_replace("\t"," ",$value[$i]);
- $value[$i] = explode(" ",$value[$i]);
- $word = array_shift($value[$i]);
- $val = join(' ',$value[$i]);
- if ($word == 'internal')
- {
- $this->_pf_internal = true;
- $this->_addDocBlockoutput($dbtype, '{@internal ');
- $value[$i] = substr($save,strlen('internal') + 1);
- // strip internal and cycle as if it were normal text.
- $this->_addDocBlockoutput($dbtype, $value[$i]);
- continue;
- }
- if (in_array(str_replace('}','',$word),$this->allowableInlineTags))
- {
- if (strpos($word,'}'))
- {
- $word = str_replace('}','',$word);
- $val = '} '.$val;
- }
- $val = explode('}',$val);
- if (count($val) == 1)
- {
-// addError(PDERROR_UNTERMINATED_INLINE_TAG,$word,'',$save);
- }
- $rest = $val;
- $val = array_shift($rest);
- if ($endinternal)
- $rest = join('}',$rest);
- else
- $rest = join(' ',$rest);
- if (isset($this->inlineTagHandlers[$word]))
- $handle = $this->inlineTagHandlers[$word];
- else
- $handle = $this->inlineTagHandlers['*'];
- $this->$handle($word,$val);
- $this->_addDocBlockoutput($dbtype, $rest);
- } else
- {
- $val = $word.' '.$val;
- $this->_addDocBlockoutput($dbtype, '{@'.$val);
- }
- }
- }
- }
-
-
- /**
- * Handles all inline tags
- * @access private
- */
- function handleDefaultInlineTag($name, $value)
- {
- $this->_addDocBlockoutput('inlinetag','{@'.$name.' '.$value.'}');
- }
-
- /**#@+
- * phpDocumentor DocBlock tag handlers
- * @access private
- * @param string tag name
- * @param array array of lines contained in the tag description
- */
- /**
- * Handle normal tags
- *
- * This handler adds to outpu all comment information before the tag begins
- * as in " * " before "@todo" in " * @todo"
- *
- * Then, it highlights the tag as a regular or coretag based on $coretag.
- * Finally, it uses getInlineTags to highlight the description
- * @uses getInlineTags() highlight a tag description
- * @param boolean whether this tag is a core tag or not
- */
- function defaultTagHandler($name, $value, $coretag = false)
- {
- $dbtype = 'docblock';
- $dbtype .= ($this->_pf_docblock ? '' : 'template');
- foreach($value as $line)
- {
- $this->_addDocBlockoutput($dbtype, $line[0]);
- if ($line[1] === false)
- {
- if (trim($line[0]) != '*/')
- {
- $this->newLineNum();
- $this->_wp->linenum++;
- }
- continue;
- }
- $this->_addDocBlockoutput($dbtype, $line[1][0]);
- $stored = '';
- if (is_array($line[1][1]))
- {
- foreach($line[1][1] as $i => $tpart)
- {
- if ($tpart == '@'.$name && $i == 0)
- {
- $tagname = 'tag';
- if ($coretag) $tagname = 'coretag';
- $this->_addDocBlockoutput($tagname,'@'.$name);
- continue;
- }
- $stored .= ' '.$tpart;
- }
- } else $stored = $line[1];
- $this->getInlineTags($stored);
- if (strpos($stored,'*/') === false)
- {
- $this->newLineNum();
- $this->_wp->linenum++;
- }
- }
- }
-
- /**
- * @see defaultTagHandler()
- */
- function coreTagHandler($name, $value)
- {
- return $this->defaultTagHandler($name, $value, true);
- }
-
- /**
- * Handles @global
- *
- * This handler works like {@link defaultTagHandler()} except it highlights
- * the type and variable (if present) in "@global type $variable" or
- * "@global type description"
- */
- function globalTagHandler($name, $value)
- {
- $this->paramTagHandler($name, $value);
- }
-
- /**
- * Handles @param
- *
- * This handler works like {@link defaultTagHandler()} except it highlights
- * the type and variable (if present) in "@param type $variable description"
- * or "@param type description"
- * @param boolean private parameter, checks for $var or not
- */
- function paramTagHandler($name, $value, $checkforvar = true)
- {
- $dbtype = 'docblock';
- $dbtype .= ($this->_pf_docblock ? '' : 'template');
- $ret = $this->retrieveType($value,0,$checkforvar);
- foreach($value as $num => $line)
- {
- $this->_addDocBlockoutput($dbtype, $line[0]);
- if ($line[1] === false)
- {
- if (trim($line[0]) != '*/')
- {
- $this->newLineNum();
- $this->_wp->linenum++;
- }
- continue;
- }
- $this->_addDocBlockoutput($dbtype, $line[1][0]);
- $stored = '';
- $typeloc = 1;
- $varloc = 2;
- if (is_array($line[1][1]))
- {
- $this->_addDocBlockoutput('coretag','@'.$name.' ');
- foreach($ret[0] as $text)
- {
- if (is_string($text)) $this->_addDocBlockoutput($dbtype,$text);
- if (is_array($text))
- {
- if ($text[0] != 'desc') $this->_addDocBlockoutput($text[0],$text[1]);
- else $stored .= $text[1];
- }
- }
- } else
- {
- if (isset($ret[$num]))
- {
- foreach($ret[$num] as $text)
- {
- if (is_string($text)) $this->_addDocBlockoutput($dbtype,$text);
- if (is_array($text))
- {
- if ($text[0] != 'desc') $this->_addDocBlockoutput($text[0],$text[1]);
- else $stored .= $text[1];
- }
- }
- } else $stored = $line[1];
- }
- $this->getInlineTags($stored);
- if (strpos($stored,'*/') === false)
- {
- $this->newLineNum();
- $this->_wp->linenum++;
- }
- }
- }
-
- /**
- * @see paramTagHandler()
- */
- function staticvarTagHandler($name, $value)
- {
- return $this->paramTagHandler($name, $value);
- }
-
- /**
- * @see paramTagHandler()
- */
- function varTagHandler($name, $value)
- {
- return $this->paramTagHandler($name, $value);
- }
-
- /**
- * Handles @return
- *
- * This handler works like {@link defaultTagHandler()} except it highlights
- * the type in "@return type description"
- */
- function returnTagHandler($name, $value)
- {
- $this->paramTagHandler($name, $value, false);
- }
- /**#@-*/
-
- /**
- * Retrieve the type portion of a @tag type description
- *
- * Tags like @param, @return and @var all have a PHP type portion in their
- * description. Since the type may contain the expression "object blah"
- * where blah is a classname, it makes parsing out the type field complex.
- *
- * Even more complicated is the case where a tag variable can contain
- * multiple types, such as object blah|object blah2|false, and so this
- * method handles these cases.
- * @param array array of words that were separated by spaces
- * @param 0|1 0 = find the type, 1 = find the var, if present
- * @param boolean flag to determine whether to check for the end of a
- * type is defined by a $varname
- * @return array Format: array(state (0 [find type], 1 [var], 2 [done]),
- *
- * @access private
- */
- function retrieveType($value, $state = 0, $checkforvar = false)
- {
- $index = 0;
- $result = array();
- do
- {
- if (!isset($value[$index][1])) return $result;
- $val = $value[$index][1];
- if (empty($val)) return $result;
- if ($index == 0)
- {
- $val = $val[1];
- array_shift($val);
- } else
- {
- $val = explode(' ',$val);
- }
- $ret = $this->_retrieveType($val, $state, $checkforvar);
- $state = $ret[0];
- $result[$index++] = $ret[1];
- } while ((!$checkforvar && $state < 1) || ($state < 2 && $checkforvar));
- return $result;
- }
-
- function _retrieveType($value, $state, $checkforvar)
- {
- $result = array();
- $result[] = $this->_removeWhiteSpace($value, 0);
- if ($state == 0)
- {
- if (!count($value)) return array(2,$result);
- $types = '';
- $index = 0;
- if (trim($value[0]) == 'object')
- {
- $result[] = array('tagphptype', $value[0].' ');
- $types .= array_shift($value).' ';
- $result[] = $this->_removeWhiteSpace($value, 0);
- if (!count($value))
- { // was just passed "object"
- return array(2,$result);
- }
- if ($value[0]{0} == '$' || substr($value[0],0,2) == '&$')
- { // was just passed "object" and the next thing is a variable name
- if ($checkforvar)
- {
- $result[] = array('tagvarname' , $value[0].' ');
- array_shift($value);
- }
- $result[] = array('desc', join(' ', $value));
- return array(2,$result);
- }
- }
- $done = false;
- $loop = -1;
- do
- { // this loop checks for type|type|type and for
- // type|object classname|type|object classname2
- if (strpos($value[0], '|'))
- {
- $temptypes = explode('|', $value[0]);
- while(count($temptypes))
- {
- $type = array_shift($temptypes);
- $result[] = array('tagphptype',$type);
- if (count($temptypes)) $result[] = '|';
- }
- if (trim($type) == 'object')
- {
- $result[] = array('tagphptype', $types . ' ');
- $result[] = $this->_removeWhiteSpace($value,0);
- } else $done = true;
- array_shift($value);
- if (count($value) && strlen($value[0]) && isset ($value[0]) && ($value[0]{0} == '$' || substr($value[0],0,2) == '&$'))
- { // was just passed "object" and the next thing is a variable name
- $result[] = array('tagvarname' , $value[0].' ');
- array_shift($value);
- $result[] = array('desc', join(' ', $value));
- return array(2,$result);
- }
- } else
- {
- $result[] = array('tagphptype', $value[0].' ');
- array_shift($value);
- $done = true;
- }
- $loop++;
- } while (!$done && count($value));
- if ($loop) $result[] = ' ';
- // still searching for type
- if (!$done && !count($value)) return array(0,$result);
- // still searching for var
- if ($done && !count($value)) return array(1,$result);
- }
- $result[] = $this->_removeWhiteSpace($value,0);
- $state = 1;
- if ($checkforvar)
- {
- if (count($value))
- {
- $state = 2;
- if (substr($value[0],0,1) == '$' || substr($value[0],0,2) == '&$')
- {
- $result[] = array('tagvarname' , $value[0].' ');
- array_shift($value);
- }
- } else $state = 1;
- }
- $result[] = array('desc', join(' ',$value));
- return array($state,$result);
- }
-
-
- /**
- * @param array array of string
- * @param integer index to seek non-whitespace to
- * @access private
- * @return string whitespace
- */
- function _removeWhiteSpace(&$value, $index)
- {
- $result = '';
- if (count($value) > $index && empty($value[$index]))
- {
- $found = false;
- for($i=$index; $i<count($value) && !strlen($value[$i]); $i++) $result .= ' ';
- array_splice($value, $index, $i - $index);
- }
- return $result;
- }
-
- /**#@+
- * Link generation methods
- * @access private
- * @param string|array token to try to link
- */
- /**
- * Generate a link to documentation for an element
- *
- * This method tries to link to documentation for functions, methods,
- * PHP functions, class names, and if found, adds the links to output
- * instead of plain text
- */
- function _link($word)
- {
- if (is_array($word) && $word[0] == T_STRING)
- {
- if ($this->_pf_colon_colon)
- {
- $this->_pf_colon_colon = false;
- $combo = $this->_pv_last_string[1].'::'.$word[1].'()';
-// debug('testing '.$combo);
- $link = $this->_converter->getLink($combo);
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- }
- $this->_addoutput($word);
- return;
- }
- $link = $this->_converter->getLink($word[1].'()');
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- } elseif (is_string($link) && strpos($link,'ttp://'))
- {
- $this->_addoutput($this->_converter->returnLink($link, $word[1]), true);
- return;
- } else
- {
- $link = $this->_converter->getLink($word[1]);
- if (is_object($link)) $word[1] = $this->_converter->returnSee($link, $word[1]);
- $this->_addoutput($word, true);
- return;
- }
- }
- $this->_addoutput($word);
- }
-
- /**
- * Works like {@link _link()} except it only links to global variables
- */
- function _globallink($word)
- {
- if (!is_array($word)) return $this->_addoutput($word);
- if ($word[0] != T_VARIABLE) return $this->_addoutput($word);
- if (is_array($word) && $word[0] == T_VARIABLE)
- {
- $link = $this->_converter->getLink('global '.$word[1]);
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- }
- }
- $this->_addoutput($word);
- }
-
- /**
- * Works like {@link _link()} except it only links to classes
- */
- function _classlink($word)
- {
-// debug("checking class ".$word[1]);
- if (is_array($word) && $word[0] == T_STRING)
- {
- $link = $this->_converter->getLink($word[1]);
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- }
- }
- $this->_addoutput($word);
- }
-
- /**
- * Works like {@link _link()} except it only links to methods
- */
- function _methodlink($word)
- {
- if (is_array($word) && $word[0] == T_STRING)
- {
-// debug("checking method ".$this->_pv_class.'::'.$word[1].'()');
- if (isset($this->_pv_prev_var_type))
- {
- $link = $this->_converter->getLink($this->_pv_prev_var_type.'::'.$word[1].'()');
- } else
- $link = $this->_converter->getLink($this->_pv_class.'::'.$word[1].'()');
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- }
- if (isset($this->_pv_prev_var_type))
- {
- $this->_addoutput($word);
- return;
- }
-// debug("checking method ".$word[1].'()');
- $link = $this->_converter->getLink($word[1].'()');
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- }
- }
- $this->_addoutput($word);
- }
-
- /**
- * Works like {@link _link()} except it only links to class variables
- */
- function _varlink($word, $justastring=false)
- {
- if ($justastring)
- {
- $word[0] = T_VARIABLE;
- }
- if (is_array($word) && $word[0] == T_VARIABLE)
- {
- $x = ($justastring ? '$' : '');
-// debug("checking var ".$this->_pv_class.'::'.$x.$word[1]);
- if (isset($this->_pv_prev_var_type))
- {
-// debug("checking var ".$this->_pv_prev_var_type.'::'.$x.$word[1]);
- $link = $this->_converter->getLink($this->_pv_prev_var_type.'::'.$x.$word[1]);
- }
- else
- $link = $this->_converter->getLink($this->_pv_class.'::'.$x.$word[1]);
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- }
-// debug("checking var ".$x.$word[1]);
- if (isset($this->_pv_prev_var_type))
- {
- $this->_addoutput($word);
- return;
- }
- $link = $this->_converter->getLink($x.$word[1]);
- if (is_object($link))
- {
- $this->_addoutput($this->_converter->returnSee($link, $word[1]), true);
- return;
- }
- }
- $this->_addoutput($word);
- }
- /**#@-*/
-
- /**#@+
- * Output Methods
- * @access private
- */
- /**
- * This method adds output to {@link $_line}
- *
- * If a string with variables like "$test this" is present, then special
- * handling is used to allow processing of the variable in context.
- * @see _flush_save()
- */
- function _addoutput($word, $preformatted = false)
- {
- if ($this->_pf_no_output_yet) return;
- if ($this->_pf_quote_active)
- {
- if (is_array($word)) $this->_save .= $this->_converter->highlightSource($word[0], $word[1]);
- else
- $this->_save .= $this->_converter->highlightSource(false, $word, true);
- } else
- {
- $this->_flush_save();
- if (is_string($word) && trim($word) == '')
- {
- $this->_line .= $word;
- return;
- }
- if (is_array($word) && trim($word[1]) == '')
- {
- $this->_line .= $word[1];
- return;
- }
- if (is_array($word))
- {
- $this->_line .= $this->_converter->highlightSource($word[0], $word[1], $preformatted);
- } else
- {
- $this->_line .= $this->_converter->highlightSource(false, $word, $preformatted);
- }
- }
- }
-
- /**
- * Like {@link _output()}, but for DocBlock highlighting
- */
- function _addDocBlockoutput($dbtype, $word, $preformatted = false)
- {
- if ($this->_pf_internal)
- {
- $this->_line .= $this->_converter->highlightDocBlockSource('internal', $word, $preformatted);
- } else
- {
- $this->_line .= $this->_converter->highlightDocBlockSource($dbtype, $word, $preformatted);
- }
- }
-
- /**
- * Flush a saved string variable highlighting
- *
- * {@source}
- */
- function _flush_save()
- {
- if (!empty($this->_save))
- {
- $this->_save .= $this->_converter->flushHighlightCache();
- // clear the existing cache, reset it to the old value
- $this->_converter->_setHighlightCache($this->_save_highlight_state[0], $this->_save_highlight_state[1]);
- $this->_line .= $this->_converter->highlightSource(T_CONSTANT_ENCAPSED_STRING, $this->_save, true);
- $this->_save = '';
- }
- }
- /**#@-*/
-
- /**
- * Give the word parser necessary data to begin a new parse
- * @param array all tokens separated by line number
- */
- function configWordParser(&$data)
- {
- $this->_wp->setup($data, $this);
- $this->_wp->setWhitespace(true);
- }
-
- /**
- * Initialize all parser state variables
- * @param boolean true if we are highlighting an inline {@}source} tag's
- * output
- * @param false|string name of class we are going to start from
- * @uses $_wp sets to a new {@link phpDocumentor_HighlightWordParser}
- */
- function setupStates($inlinesourceparse, $class)
- {
- $this->_output = '';
- $this->_line = '';
- unset($this->_wp);
- $this->_wp = new phpDocumentor_HighlightWordParser;
- $this->_event_stack = new EventStack;
- if ($inlinesourceparse)
- {
- $this->_event_stack->pushEvent(PARSER_EVENT_PHPCODE);
- if ($class)
- {
- $this->_event_stack->pushEvent(PARSER_EVENT_CLASS);
- $this->_pv_class = $class;
- }
- } else $this->_pv_class = null;
- $this->_pv_define = null;
- $this->_pv_define_name = null;
- $this->_pv_define_value = null;
- $this->_pv_define_params_data = null;
- $this->_pv_dtype = null;
- $this->_pv_docblock = null;
- $this->_pv_dtemplate = null;
- $this->_pv_func = null;
- $this->_pv_global_name = null;
- $this->_pv_global_val = null;
- $this->_pv_globals = null;
- $this->_pv_global_count = null;
- $this->_pv_include_params_data = null;
- $this->_pv_include_name = null;
- $this->_pv_include_value = null;
- $this->_pv_linenum = null;
- $this->_pv_periodline = null;
- $this->_pv_paren_count = 0;
- $this->_pv_statics = null;
- $this->_pv_static_count = null;
- $this->_pv_static_val = null;
- $this->_pv_quote_data = null;
- $this->_pv_function_data = null;
- $this->_pv_var = null;
- $this->_pv_varname = null;
- $this->_pf_definename_isset = false;
- $this->_pf_extends_found = false;
- $this->_pf_includename_isset = false;
- $this->_pf_get_source = false;
- $this->_pf_getting_source = false;
- $this->_pf_in_class = false;
- $this->_pf_in_define = false;
- $this->_pf_in_global = false;
- $this->_pf_in_include = false;
- $this->_pf_in_var = false;
- $this->_pf_funcparam_val = false;
- $this->_pf_quote_active = false;
- $this->_pf_reset_quote_data = true;
- $this->_pf_useperiod = false;
- $this->_pf_var_equals = false;
- $this->_pf_obj_op = false;
- $this->_pf_docblock = false;
- $this->_pf_docblock_template = false;
- $this->_pf_colon_colon = false;
- $this->_pv_last_string = false;
- $this->_pf_inmethod = false;
- $this->_pf_no_output_yet = false;
- $this->_pv_saveline = 0;
- $this->_pv_next_word = false;
- $this->_save = '';
- }
-
- /**
- * Initialize the {@link $tokenpushEvent, $wordpushEvent} arrays
- */
- function phpDocumentor_HighlightParser()
- {
- if (!defined('T_INTERFACE')) {
- define('T_INTERFACE', -1);
- }
- $this->allowableTags = $GLOBALS['_phpDocumentor_tags_allowed'];
- $this->allowableInlineTags = $GLOBALS['_phpDocumentor_inline_doc_tags_allowed'];
- $this->inlineTagHandlers = array('*' => 'handleDefaultInlineTag');
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_NOEVENTS] =
- array(
- T_OPEN_TAG => PARSER_EVENT_PHPCODE,
- );
-
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_PHPCODE] =
- array(
- T_FUNCTION => PARSER_EVENT_FUNCTION,
- T_CLASS => PARSER_EVENT_CLASS,
- T_INTERFACE => PARSER_EVENT_CLASS,
- T_INCLUDE_ONCE => PARSER_EVENT_INCLUDE,
- T_INCLUDE => PARSER_EVENT_INCLUDE,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- T_REQUIRE => PARSER_EVENT_INCLUDE,
- T_REQUIRE_ONCE => PARSER_EVENT_INCLUDE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_PHPCODE] =
- array(
- "define" => PARSER_EVENT_DEFINE,
- );
-/**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_FUNCTION] =
- array(
- '{' => PARSER_EVENT_LOGICBLOCK,
- '(' => PARSER_EVENT_FUNCTION_PARAMS,
- );
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
-
- $this->wordpopEvent[PARSER_EVENT_FUNCTION] = array("}");
-/**************************************************************/
-
- $this->tokenpopEvent[PARSER_EVENT_EOFQUOTE] = array(T_END_HEREDOC);
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION_PARAMS] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_ARRAY => PARSER_EVENT_ARRAY,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_FUNCTION_PARAMS] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_FUNCTION_PARAMS] = array(")");
-/**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_LOGICBLOCK] =
- array(
- "{" => PARSER_EVENT_LOGICBLOCK,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->tokenpushEvent[PARSER_EVENT_LOGICBLOCK] =
- array(
- T_GLOBAL => PARSER_EVENT_FUNC_GLOBAL,
- T_STATIC => PARSER_EVENT_STATIC_VAR,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- T_CURLY_OPEN => PARSER_EVENT_LOGICBLOCK,
- T_DOLLAR_OPEN_CURLY_BRACES => PARSER_EVENT_LOGICBLOCK,
- );
-
- $this->wordpopEvent[PARSER_EVENT_LOGICBLOCK] = array("}");
- $this->tokenpopEvent[PARSER_EVENT_LOGICBLOCK] = array(T_CURLY_OPEN);
-
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_ARRAY] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpopEvent[PARSER_EVENT_ARRAY] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNC_GLOBAL] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
-
- $this->wordpopEvent[PARSER_EVENT_FUNC_GLOBAL] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_STATIC_VAR] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_STATIC_VAR] =
- array(
- "=" => PARSER_EVENT_STATIC_VAR_VALUE,
- );
- $this->wordpopEvent[PARSER_EVENT_STATIC_VAR] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_STATIC_VAR_VALUE] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_ARRAY => PARSER_EVENT_ARRAY,
- );
- $this->wordpushEvent[PARSER_EVENT_STATIC_VAR_VALUE] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_STATIC_VAR_VALUE] = array(";",",");
-/**************************************************************/
- $this->tokenpushEvent[PARSER_EVENT_QUOTE] =
- array(
- T_OBJECT_OPERATOR => PARSER_EVENT_CLASS_MEMBER,
- T_CURLY_OPEN => PARSER_EVENT_QUOTE_VAR,
- );
-
- $this->wordpopEvent[PARSER_EVENT_QUOTE] = array('"');
-/**************************************************************/
- $this->tokenpushEvent[PARSER_EVENT_QUOTE_VAR] =
- array(
- T_OBJECT_OPERATOR => PARSER_EVENT_CLASS_MEMBER,
- T_CURLY_OPEN => PARSER_EVENT_QUOTE_VAR,
- );
-
- $this->wordpushEvent[PARSER_EVENT_QUOTE_VAR] =
- array(
- "{" => PARSER_EVENT_QUOTE_VAR,
- '"' => PARSER_EVENT_QUOTE_VAR,
- "'" => PARSER_EVENT_QUOTE_VAR,
- );
- $this->wordpopEvent[PARSER_EVENT_QUOTE_VAR] = array('}');
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_PARAMS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_PARAMS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_PARAMS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_VAR] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_ARRAY => PARSER_EVENT_ARRAY,
- );
- $this->wordpopEvent[PARSER_EVENT_VAR] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_CLASS] =
- array(
- T_FUNCTION => PARSER_EVENT_METHOD,
- T_VAR => PARSER_EVENT_VAR,
- T_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_CLOSE_TAG => PARSER_EVENT_OUTPHP,
- );
- $this->wordpopEvent[PARSER_EVENT_CLASS] = array("}");
-
-/**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_METHOD] =
- array(
- '{' => PARSER_EVENT_METHOD_LOGICBLOCK,
- '(' => PARSER_EVENT_FUNCTION_PARAMS,
- );
- $this->tokenpushEvent[PARSER_EVENT_METHOD] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
-
- $this->wordpopEvent[PARSER_EVENT_METHOD] = array("}", ";");
-/**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_METHOD_LOGICBLOCK] =
- array(
- "{" => PARSER_EVENT_METHOD_LOGICBLOCK,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->tokenpushEvent[PARSER_EVENT_METHOD_LOGICBLOCK] =
- array(
- T_OBJECT_OPERATOR => PARSER_EVENT_CLASS_MEMBER,
- T_GLOBAL => PARSER_EVENT_FUNC_GLOBAL,
- T_STATIC => PARSER_EVENT_STATIC_VAR,
- T_CURLY_OPEN => PARSER_EVENT_LOGICBLOCK,
- T_DOLLAR_OPEN_CURLY_BRACES => PARSER_EVENT_LOGICBLOCK,
- );
-
- $this->wordpopEvent[PARSER_EVENT_METHOD_LOGICBLOCK] = array("}");
- $this->tokenpopEvent[PARSER_EVENT_METHOD_LOGICBLOCK] = array(T_CURLY_OPEN);
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE_PARAMS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE_PARAMS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE_PARAMS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] = array(")");
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/InlineTags.inc b/buildscripts/PhpDocumentor/phpDocumentor/InlineTags.inc
deleted file mode 100644
index 27ae3165..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/InlineTags.inc
+++ /dev/null
@@ -1,854 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * All abstract representations of inline tags are in this file
- * @package phpDocumentor
- * @subpackage InlineTags
- * @since separate file since version 1.2
- * @version $Id: InlineTags.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
- */
-/**
- * Use this element to represent an {@}inline tag} like {@}link}
- * @see parserStringWithInlineTags
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Revision: 1.1 $
- * @tutorial inlinetags.pkg
- */
-class parserInlineTag extends parserBase
-{
- /**
- * Element type
- *
- * Type is used by many functions to skip the hassle of
- *
- * <code>
- * if phpDocumentor_get_class($blah) == 'parserBlah'
- * </code>
- * always "inlinetag"
- * @var string
- */
- var $type = 'inlinetag';
- /**
- * the name of the inline tag (like link)
- * @var string
- */
- var $inlinetype = '';
-
- /**
- * @param string $type tag type (example: link)
- * @param string $value tag value (example: what to link to)
- */
- function parserInlineTag($type,$value)
- {
- $this->inlinetype = $type;
- $this->value = trim($value);
- }
-
- /**
- * @return integer length of the tag
- */
- function Strlen()
- {
- // fix 1203451
- if (is_array($this->value))
- {
- return array_reduce(create_function('$a,$b', 'return $a + strlen($b);')) +
- count($this->value);
- }
- return strlen($this->value);
- }
-
- /**
- * @return string always '', used by {@link Parser::handleDocBlock()} to
- * calculate the short description of a DocBlock
- * @see parserStringWithInlineTags::getString()
- * @see parserStringWithInlineTags::trimmedStrlen()
- */
- function getString()
- {
- return '';
- }
-}
-
-/**
- * represents inline links
- * @tutorial tags.inlinelink.pkg
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- */
-class parserLinkInlineTag extends parserInlineTag
-{
- /**
- * text to display in the link, can be different from the link for standard
- * links like websites
- * @var string
- */
- var $linktext = '';
-
- /**
- * @param string $link stored in $value, see {@link parserBase::$value}
- * @param string $text see {@link $linktext}
- */
- function parserLinkInlineTag($link,$text)
- {
- if (strpos($link, ','))
- {
- $link = explode(',',$link);
- parserInlineTag::parserInlineTag('link','');
- $this->value = $link;
- } else
- {
- parserInlineTag::parserInlineTag('link',$link);
- }
- $this->linktext = trim($text);
- }
-
- /**
- * @param Converter converter used to change the abstract link into text for
- * display
- * @return false|string returns the converted link or false if not converted
- * successfully
- */
- function Convert(&$c)
- {
- if (is_array($this->value))
- {
- $ret = '';
- foreach($this->value as $text)
- {
- if (!empty($ret))
- {
- $ret .= ', ';
- }
- $ret .= $this->ConvertPart($c, trim($text));
- }
- return $ret;
- } else
- {
- return $this->ConvertPart($c, $this->value);
- }
- }
-
- function ConvertPart(&$c, $value)
- {
- if (strpos($value,'://') || (strpos($value,'mailto:') === 0))
- {
- if (strpos($value, ' '))
- {
- $value = explode(' ', $value);
- $link = array_shift($value);
- $text = join(' ', $value);
- } else
- {
- $link = $value;
- $text = $this->linktext;
- }
- return $c->returnLink($link,htmlspecialchars($text));
- } else
- {
- $savevalue = $value;
- $descrip = false;
- if (strpos(trim($value),' '))
- {
- $v = preg_split('/\s/',trim($value));
- if (in_array(strtolower($v[0]), array('object', 'function')))
- {
- if (!isset($v[1]) ||
- (isset($v[1]) && strlen($v[1])
- && !in_array($v[1]{0}, array('$','&'))
- && $v[1] != '###commanana####'))
- {
- $vsave = $v[0];
- array_shift($v);
- $v[0] = $vsave . ' ' . $v[0];
- }
- }
- $value = $c->getLink($v[0]);
- array_shift($v);
- $descrip = join($v,' ');
- $descrip = str_replace('###commanana####', ',', $descrip);
- } else
- {
- $value = $c->getLink($value);
- }
- if (is_string($value))
- {
- // feature 564991
- if (strpos($value,'://'))
- {
- // php function
- return $c->returnLink($value,str_replace('PHP_MANUAL#','',$value));
- }
- return $value;
- }
- if (!$descrip) $descrip = $c->type_adjust($savevalue);
- if (is_object($value)) return $c->returnSee($value, $descrip);
-/* // getLink parsed a comma-delimited list of linked thingies, add the commas back in
- if (is_array($value))
- {
- $a = '';
- foreach($value as $i => $bub)
- {
- if (!empty($a)) $a .= ', ';
- if (is_string($value[$i]))
- {
- // feature 564991
- if (strpos($value[$i],'://'))
- {
- // php function
- $a .= $c->returnLink($value[$i],str_replace('PHP_MANUAL#','',$vals[$i]));
- } else
- $a .= $value[$i];
- }
- if (is_object($value[$i])) $a .= $c->returnSee($value[$i],$descrip[$i]);
- }
- return $a;
- } */
- return $savevalue;
- }
- }
-}
-
-/**
- * Represents inline links to external tutorial documentation
- * @tutorial tags.inlinetutorial.pkg
- * @package phpDocumentor
- * @subpackage InlineTags
- */
-class parserTutorialInlineTag extends parserLinkInlineTag
-{
- /**
- * @param string $link stored in $value, see {@link parserBase::$value}
- * @param string $text see {@link $linktext}
- */
- function parserTutorialInlineTag($link,$text)
- {
- parserInlineTag::parserInlineTag('tutorial',$link);
- $this->linktext = trim($text);
- }
-
- /**
- * @param Converter converter used to change the abstract link into text for display
- * @return mixed returns the converted link or false if not converted successfully
- */
- function Convert(&$c)
- {
- $descrip = false;
- if (strpos($this->value,',') === false)
- {
- if (strpos(trim($this->value),' '))
- {
- $v = explode(' ', trim($this->value));
- $value = $c->getTutorialLink($v[0]);
- array_shift($v);
- $descrip = join($v,' ');
- } else $value = $c->getTutorialLink($this->value);
- } else
- {
- $vals = explode(',',$this->value);
- $descrip = array();
- foreach($vals as $val)
- {
- $val = trim($val);
- if (strpos($val,' '))
- {
- $v = explode(' ',$val);
- $value[] = $c->getTutorialLink($v[0]);
- array_shift($v);
- $descrip[] = join($v,' ');
- } else
- {
- $value[] = $c->getTutorialLink($val);
- $descrip[] = false;
- }
- }
- }
- if (is_string($value))
- {
- return $value;
- }
- if (is_object($value)) return $c->returnSee($value,$descrip);
- // getLink parsed a comma-delimited list of linked thingies, add the commas back in
- if (is_array($value))
- {
- $a = '';
- foreach($value as $i => $bub)
- {
- if (!empty($a)) $a .= ', ';
- if (is_string($value[$i]))
- {
- $a .= $value[$i];
- }
- if (is_object($value[$i])) $a .= $c->returnSee($value[$i],$descrip[$i]);
- }
- return $a;
- }
- return false;
- }
-}
-
-/**
- * represents inline source tag, used for function/method source
- * @tutorial tags.inlinesource.pkg
- * @package phpDocumentor
- * @subpackage InlineTags
- */
-class parserSourceInlineTag extends parserInlineTag
-{
- /**
- * always 'source'
- * @var string
- */
- var $inlinetype = 'source';
- /**
- * First line of source code to display
- * @var integer
- * @see $end
- */
- var $start = 1;
- /**
- * Last line to display
- * @var '*'|integer If '*' then the whole source will be used, otherwise
- * the {@link $start} to $end line numbers will be displayed
- */
- var $end = '*';
- /**
- * tokenized source organized by line numbers for php 4.3.0+, the old
- * {@}source} tag used a string
- * @var string|array
- */
- var $source = false;
- /**#@+ @access private */
- /** @var string|false */
- var $_class;
- /**#@-*/
- /**
- * @param string format "start [end]" where start and end are line numbers
- * with the end line number optional
- */
- function parserSourceInlineTag($value)
- {
- parserInlineTag::parserInlineTag('source','');
- preg_match('/^([0-9]*)\W([0-9]*)$/',trim($value), $match);
- if (!count($match))
- {
- preg_match('/^([0-9]*)$/',trim($value),$match);
- if (count($match))
- {
- $this->start = (int) $match[1];
- }
- } else
- {
- $this->start = (int) $match[1];
- $this->end = (int) $match[2];
- }
- }
-
- /**
- * only used to determine blank lines. {@}source} will not be blank,
- * probably
- */
- function Strlen()
- {
- return 1;
- }
-
- function getString()
- {
- return '{@source}';
- }
-
- /**
- * @param string|array source code
- * @param boolean in php 4.3.0, if this is a method this will be true
- * @param string class name if this is a method
- */
- function setSource($source, $class = false)
- {
- if (is_array($source))
- {
- $this->_class = $class;
- $this->source = $source;
- } else
- {
- $source = strstr($source,'function');
- $pos = strrpos($source,'}');
- $this->source = substr($source,0,$pos + 1);
- }
- }
-
- /**
- * @uses stringConvert() in PHP 4.2.3-, this method is used to convert
- * @uses arrayConvert() in PHP 4.3.0+, this method is used to convert
- * @param Converter
- */
- function Convert(&$c)
- {
- if (is_string($this->source)) return $this->stringConvert($c);
- return $this->arrayConvert($c);
- }
-
- /**
- * @param Converter
- * @uses phpDocumentor_HighlightParser Parses the tokenized source
- */
- function arrayConvert(&$c)
- {
- $source = $this->source;
- if ($this->end != '*')
- {
- $source = array_slice($this->source,0,$this->end + $this->start - 1);
- }
- $start = $this->start - 1;
- if ($start < 0) $start = 0;
- return $c->ProgramExample($source, true, true, $this->_class, $start);
- }
-
- /**
- * @param Converter
- * @uses Converter::unmangle() remove the extraneous stuff from
- * {@link highlight_string()}
- * @deprecated in favor of PHP 4.3.0+ {@link arrayConvert()}
- */
- function stringConvert(&$c)
- {
- $source = highlight_string('<?php '.$this->source.' ?>', true);
- $source = '<code>'.substr($source,strlen('<code><font color="#000000">
-<font color="#0000CC">&lt;?php&nbsp;</font>') - 1);
- $source = str_replace('}&nbsp;</font><font color="#0000CC">?&gt;</font>','}</font></code>',$source);
- if ($this->start || ($this->end != '*'))
- {
- $source = explode('<br />',$source);
- $start = $this->start;
- if ($this->end != '*')
- {
- $source = array_slice($source,$start - 1,$this->end - $start + 1);
- } else
- {
- $source = array_slice($source,$start - 1);
- }
- $source = implode($source,'<br />');
- if ($start > 0) $source = "<code>$source";
- if ($this->end != '*') $source = "$source</code>";
- }
- $source = $c->unmangle($source,$this->source);
- return $source;
- }
-}
-
-/**
- * Represents the example inline tag, used to display an example file
- * inside a docblock or tutorial
- * @tutorial tags.inlineexample.pkg
- * @package phpDocumentor
- * @subpackage InlineTags
- */
-class parserExampleInlineTag extends parserSourceInlineTag
-{
- /**
- * @param string format "filepath[ start [end]]" where start and end are line numbers
- * with the end line number optional
- * @param string full path to the current file, used to check relative
- * directory locations
- * @param boolean if true, then this is in a tutorial
- */
- function parserExampleInlineTag($value, $current_path, $isTutorial = false)
- {
- global $_phpDocumentor_setting;
- parserInlineTag::parserInlineTag('example','');
- $path = false;
- $tagValue = trim($value);
- $path = $isAbsPath = $pathOnly = $fileName = $fileExt = $original_path = $title = FALSE;
- do
- {
- // make sure the format is stuff.ext startline[ endline]
- if (!preg_match('`(.*)\.(\w*)\s(.*)`', $tagValue, $match))
- {
- // or format is stuff.ext
- if (!preg_match('`(.*)\.(\w*)\s*$`', $tagValue, $match))
- {
- // Murphy: Some funny path was given
- $original_path = $tagValue; // used for error output
- break; // try-block
- }
- }
- if (strlen($match[1]) === 0)
- {
- // Murphy: Some funny path was given
- $original_path = $tagValue; // used for error output
- break; // try-block
- }
- $fileExt = $match[2];
- if (isset($match[3]))
- {
- $lines = explode(' ', trim($match[3]));
- $this->start = (int) $lines[0];
- if (isset($lines[1])) {
- $this->end = (int) $lines[1];
- }
- }
- $pathTmp = str_replace('\\', '/', $match[1]); // Replace windows '\' the path.
-
- // Is there a path and a file or is it just a file?
- if (strpos($pathTmp,'/') === false)
- {
- // No path part
- $pathOnly = '';
- $fileName = $pathTmp .'.'. $fileExt;
- } else
- {
- $splitPos = strrpos($pathTmp,'/'); // split the path on the last directory, find the filename
- $pathOnly = substr($match[1], 0, $splitPos+1);
- $fileName = substr($match[1], $splitPos+1) .'.'. $fileExt;
- // Is the path absolute? (i.e. does it start like an absolute path?)
- if (('/' === $pathTmp[0]) || preg_match('`^\w*:`i', $pathTmp))
- { // works for both windows 'C:' and URLs like 'http://'
- $isAbsPath = true; // Yes
- }
- }
-
- $original_path = $pathOnly . $fileName;
-
- // Now look for the file starting with abs. path.
- if ($isAbsPath)
- {
- $tmp = realpath($original_path); // remove any weirdities like /../file.ext
- if ($tmp && is_file($tmp))
- {
- $path = $tmp;
- }
- // Alway break if abs. path was detected; even if file was not found.
- break; // try-block
- }
-
- // Search for the example file some standard places
- // 1) Look if the ini-var examplesdir is set and look there ...
- if (isset($_phpDocumentor_setting['examplesdir']))
- {
- $tmp = realpath($_phpDocumentor_setting['examplesdir'] . PATH_DELIMITER . $original_path);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- }
-
- // 2) Then try to look for an 'example/'-dir below the *currently* parsed file ...
- if (!empty($current_path))
- {
- $tmp = realpath(dirname($current_path) . PATH_DELIMITER . 'examples' . PATH_DELIMITER . $fileName);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- }
-
- // 3) Then try to look for the example file below the subdir PHPDOCUMENTOR_BASE/examples/ ...
- if (is_dir(PHPDOCUMENTOR_BASE . PATH_DELIMITER . 'examples'))
- {
- $tmp = realpath(PHPDOCUMENTOR_BASE . PATH_DELIMITER . 'examples' . PATH_DELIMITER . $original_path);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- }
-
- $tmp = realpath(PHPDOCUMENTOR_BASE . PATH_DELIMITER . $original_path);
- if ($tmp && is_file($tmp))
- {
- $path = $tmp; // Yo! found it :)
- break; // try-block
- }
- // If we reach this point, nothing was found and $path is false.
- } while (false);
-
- if (!$path)
- {
- addWarning(PDERROR_EXAMPLE_NOT_FOUND, $original_path);
- $this->path = false;
- } else
- {
- $f = @fopen($path,'r');
- if ($f)
- {
- $example = fread($f,filesize($path));
- if (tokenizer_ext && !$isTutorial)
- {
- $obj = new phpDocumentorTWordParser;
- $obj->setup($example);
- $this->setSource($obj->getFileSource());
- unset($obj);
- } else
- {
- $this->setSource($example);
- }
- }
- }
- }
-
- /**
- * @param string|array source code
- * @param boolean in php 4.3.0, if this is a method this will be true
- * @param string class name if this is a method
- */
- function setSource($source, $class = false)
- {
- $this->_class = $class;
- $this->source = $source;
- }
-
- /**
- * @param Converter
- * @uses phpDocumentor_HighlightParser Parses the tokenized source
- */
- function arrayConvert(&$c)
- {
- $source = $this->source;
- if ($this->end != '*')
- {
- $source = array_slice($this->source,0,$this->end + $this->start - 1);
- }
- $start = $this->start - 1;
- if ($start < 0) $start = 0;
- return $c->exampleProgramExample($source, true, true, $this->_class, $start);
- }
-
- /**
- * Return the source for the example file, enclosed in
- * a <programlisting> tag to use in a tutorial
- * @return string
- */
- function getProgramListing()
- {
- $source = explode("\n", $this->source);
- $start = $this->start;
- if ($this->end != '*')
- {
- $source = array_slice($source,$start - 1,$this->end - $start + 1);
- } else
- {
- $source = array_slice($source,$start - 1);
- }
- $source = join("\n", $source);
- return
- "<programlisting role=\"php\">
- <![CDATA[\n" .
- $source .
- "\n]]>\n</programlisting>";
- }
-}
-
-/**
- * Represents the inheritdoc inline tag, used by classes/methods/vars to inherit
- * documentation from the parent class if possible
- * @tutorial tags.inlineinheritdoc.pkg
- * @package phpDocumentor
- * @subpackage InlineTags
- */
-class parserInheritdocInlineTag extends parserInlineTag
-{
- /**
- * always 'inheritdoc'
- * @var string
- */
- var $inlinetype = 'inheritdoc';
-
- /**
- * Does nothing, overrides parent constructor
- */
- function parserInheritdocInlineTag()
- {
- }
-
- function Convert()
- {
- addWarning(PDERROR_INHERITDOC_DONT_WORK_HERE);
- return '';
- }
-}
-
-/**
- * Represents the inline {@}id} tag for tutorials
- * @tutorial tags.inlineid.pkg
- * @package phpDocumentor
- * @subpackage InlineTags
- */
-class parserIdInlineTag extends parserInlineTag
-{
- /**
- * always 'id'
- * @var string
- */
- var $inlinetype = 'id';
- /**
- * package of the {@}id}
- * @var string
- */
- var $package = 'default';
- /**
- * category of the {@}id}
- * @var string
- */
- var $category = 'default';
- /**
- * subpackage of the {@}id}
- * @var string
- */
- var $subpackage = '';
- /**
- * full name of the tutorial
- * @var string
- */
- var $tutorial;
- /**
- * section/subsection name
- * @var string
- */
- var $id;
-
- /**
- * @param string package name
- * @param string subpackage name
- * @param string tutorial name
- * @param string section/subsection name
- * @param string category name
- */
- function parserIdInlineTag($category,$package,$subpackage,$tutorial,$id = false)
- {
- $this->package = $package;
- $this->subpackage = $subpackage;
- $this->tutorial = $tutorial;
- $this->id = $id;
- $this->category = $category;
- }
-
- /**
- * @param Converter
- * @uses Converter::getTutorialId() retrieve converter-specific ID
- */
- function Convert(&$c)
- {
- if (!$this->id) return '';
- return $c->getTutorialId($this->package,$this->subpackage,$this->tutorial,$this->id,$this->category);
- }
-}
-
-/**
- * Represents {@}toc} for table of contents generation in tutorials
- * @tutorial tags.inlinetoc.pkg
- * @package phpDocumentor
- * @subpackage InlineTags
- */
-class parserTocInlineTag extends parserInlineTag
-{
- /**
- * always 'toc'
- * @var string
- */
- var $inlinetype = 'toc';
- /**
- * @var array format:
- * <pre>
- * array(array('tagname' => section,
- * 'link' => returnsee link,
- * 'id' => anchor name,
- * 'title' => from title tag),...)
- * </pre>
- * @access private
- */
- var $_toc = false;
- /**
- * full path to tutorial, used in conversion
- * @var string
- * @access private
- */
- var $_path = false;
-
- function parserTocInlineTag()
- {
- parent::parserInlineTag('toc','');
- }
-
- /**
- * @param array format:
- * <pre>
- * array(array('tag' => {@link parserXMLDocBookTag},
- * 'id' => {@link parserIdInlineTag},
- * 'title' => {@link parserXMLDocBookTag title}),...)
- * </pre>
- */
- function setTOC($toc)
- {
- $this->toc = $toc;
- }
-
- /**
- * @param string
- */
- function setPath($path)
- {
- $this->_path = $path;
- }
-
- /**
- * @uses Converter::formatTutorialTOC() passes an array of format:
- *
- * <pre>
- * array(
- * 'tagname' => string name of tag,
- * 'link' => {@link tutorialLink} to the tutorial,
- * 'id' => converter specific tutorial ID from {@link Converter::getTutorialId()}
- * 'title' => title of the tutorial)
- * </pre>
- *
- * and returns the results as the table of contents
- * @uses Converter::getTutorialId() retrieve the tutorial ID for
- * @param Converter
- */
- function Convert(&$c)
- {
- $newtoc = array();
- foreach($this->toc as $i => $toc)
- {
- if (isset($toc['title']))
- $toc['tag']->setTitle($toc['title']);
- else
- $toc['tag']->setTitle(new parserStringWithInlineTags);
- $newtoc[$i]['tagname'] = $toc['tag']->name;
- $l = new tutorialLink;
- if (!isset($toc['title'])) $title = 'section '.$toc['id']->id;
- else
- $title = $toc['title']->Convert($c);
- $l->addLink($toc['id']->id,$this->_path,basename($this->_path),$toc['id']->package, $toc['id']->subpackage, strip_tags($title));
- $newtoc[$i]['link'] = $c->returnSee($l);
- $newtoc[$i]['id'] = $c->getTutorialId($toc['id']->package, $toc['id']->subpackage, basename($this->_path), $toc['id']->id, $toc['id']->category);
- $newtoc[$i]['title'] = $title;
- }
- return $c->formatTutorialTOC($newtoc);
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/IntermediateParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/IntermediateParser.inc
deleted file mode 100644
index 92a54ea0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/IntermediateParser.inc
+++ /dev/null
@@ -1,1832 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/** The phpDocumentor_IntermediateParser Class
- *
- * The Intermediary Data Parser (intermediate between Parse and Converter)
- *
- * @author Gregory Beaver
- * @version $Revision: 1.2 $
- * @copyright 2002 Gregory Beaver
- * @package phpDocumentor
- */
-/** The phpDocumentor_IntermediateParser Class
- *
- * This class performs the work of organizing raw data from the parser in the
- * format of descendants of the {@link parserElement} class. This is also where
- * processing of package pages occurs, in
- * {@link phpDocumentor_IntermediateParser::handleClass()} for class-level
- * packages and {@link phpDocumentor_IntermediateParser::handleDocBlock()} for
- * page-level packages.
- *
- * Most of the work of this parser goes to matching up
- * DocBlocks with the elements that they are documenting. Since DocBlocks are
- * passed before the element they document, the last DocBlock is stored in
- * {@link phpDocumentor_IntermediateParser::$last} and then placed into the
- * $docblock parameter of the parserElement
- * descendant object.
- * @author Gregory Beaver
- * @version $Id: IntermediateParser.inc,v 1.2 2005/11/20 19:26:12 cellog Exp $
- * @copyright 2002 Gregory Beaver
- * @package phpDocumentor
- */
-class phpDocumentor_IntermediateParser
-{
- /**
- * @var parserDocBlock
- */
- var $last;
-
- /**
- * type of the last parser Element handled
- *
- * This is used in handleDocBlock to determine whether a DocBlock is a
- * page-level DocBlock in conjunction with the {@link parserData::$clean}
- * var. A page-level DocBlock is alwaysthe first DocBlock in a file, and
- * must be followed by another DocBlock. The first test is handled by
- * parserData::$clean, which is set to false on the first encounter of an
- * element, and the second test is handled by this variable, which must be
- * equal to "docblock"
- * @see handleDocBlock()
- * @var string
- */
- var $lasttype = '';
-
- /**
- * Name of the class currently being parsed.
- * It is only used (and only valid) when phpDocumentor_IntermediateParser is
- * parsing a class
- * @var string
- */
- var $cur_class = '';
-
- /**
- * type of the current parser Element being handled
- *
- * This is used by {@link HandleEvent()} to set the {@link $lasttype} var,
- * which is used to detect page-level DocBlocks
- * @var string
- */
- var $type = '';
-
- /**
- * set in {@link Setup.inc.php} to the value of the parseprivate commandline
- * option. If this option is true, elements with an @access private tag
- * will be parsed and displayed
- * @tutorial phpDocumentor.howto.pkg#using.command-line.parseprivate
- * @var boolean
- */
- var $parsePrivate = false;
-
- /**
- * this variable is used to prevent parsing of elements with an @ignore tag
- * @see $packageoutput
- * @see $parsePrivate
- */
- var $private_class = false;
-
- /**
- * used to set the output directory
- * @see setTargetDir()
- */
- var $targetDir;
-
- /**
- * used to set the template base directory
- * @see setTemplateBase()
- */
- var $templateBase;
-
- /**
- * array of parsed package pages
- *
- * used by {@link Convert()} to convert all package pages into output
- * @var array
- */
- var $package_pages = array();
-
- /**
- * @var array array of all {@link parserData} containing page information
- */
- var $pages = array();
- /**
- * Put away a page that has been @ignored or @access private if
- * !{@link $parsePrivate}
- *
- * When a page has @access private in its DocBlock, it is placed here
- * instead of in {@link $pages}, to allow for proper Class parsing. Since
- * classes and pages are parsed as if they were separate, this array allows
- * public classes on private pages to retrieve information needed about the
- * page that holds the class and to {@link addPageIfNecessary()} to the
- * $pages array
- * @var array
- */
- var $privatepages = array();
- /**
- * Keeps track of packages of classes that have parent classes in another
- * package. Used in automatic linking.
- *
- * This array is updated by {@link addPackageParent()}, which is called in
- * {@link Classes::processChild()} to keep track of classes that descend
- * from classes in different packages. In other words, if class foo is in
- * package one, and class bar is in package two, an entry
- * $package_parents['two'] = 'one' will be made.
- * @var array Format: packagename => parentpackagename
- * @see Converter::getLink()
- */
- var $package_parents = array();
-
- /**
- * Used to determine the category for tutorials.
- *
- * <b>WARNING:</b> If more than one category exists, the last category
- * encountered will overwrite the previous and will raise a big warning
- * @var array Format: packagename => categoryname
- */
- var $packagecategories = array();
-
- /**
- * list of all packages encountered while documenting. Used in automatic
- * linking.
- *
- * Converter::getLink() first checks if an ambiguous link is found in the
- * current package. If not, it then checks in parent packages, and if still
- * not found, uses this array to check in the rest of the packages before
- * giving up
- * @var array Format: array(packagename => 1, packagename => 1,...)
- * @see Converter::getLink()
- */
- var $all_packages = array();
-
- /**
- * array of packages to parser and output documentation for, if not all
- * packages should be documented
- *
- * Format:<br />
- * array(package1,package2,...)<br />
- * or false if not set
- *
- * Use this option to limit output similar to ignoring files. If you have
- * some temporary files that you don't want to specify by name but don't
- * want included in output, set a package name for all the elements in your
- * project, and set packageoutput to that name. the default package will be
- * ignored. Parsing speed does not improve. If you want to ignore files
- * for speed reasons, use the ignore command-line option
- * @tutorial phpDocumentor.howto.pkg#using.command-line.packageoutput
- * @see Io
- * @var false|array
- */
- var $packageoutput = false;
-
- /**
- * the functions which handle output from the {@link Parser}
- * @see handleEvent(), handleDocBlock(), handlePage(), handleClass()
- * @see handleDefine(), handleFunction(), handleMethod(), handleVar()
- * @see handlePackagePage(), handleInclude(), handleTutorial()
- */
- var $event_handlers = array(
- 'docblock' => 'handleDocBlock',
- 'page' => 'handlePage',
- 'class' => 'handleClass',
- 'define' => 'handleDefine',
- 'function' => 'handleFunction',
- 'method' => 'handleMethod',
- 'var' => 'handleVar',
- 'const' => 'handleConst',
- 'packagepage' => 'handlePackagePage',
- 'include' => 'handleInclude',
- 'global' => 'handleGlobal',
- 'tutorial' => 'handleTutorial',
- );
-
- /**
- * $data contains parsed structures for the current page being parsed
- *
- * In version 1.1+, $data is only used to store the current page information.
- * All handling of documented elements is handled by the
- * {@link ProceduralPages} and {@link Classes} classes.
- * @var parserData
- */
- var $data;
-
- /**
- * set in {@link Setup.inc.php} to the value of the quitemode commandline
- * option.
- *
- * If this option is true, informative output while parsing will not be
- * displayed (documentation is unaffected)
- * @var boolean
- * @tutorial phpDocumentor.howto.pkg#using.command-line.quiet
- */
- var $quietMode = false;
-
- /**
- * used to keep track of inheritance at the smartest level possible for a
- * dumb computer
- * @var Classes
- */
- var $classes = false;
-
- /**
- * used to keep track of all elements in a procedural page. Handles name
- * conflicts with elegance
- * @since 1.1
- * @var ProceduralPages
- */
- var $proceduralpages = false;
-
- /**
- * an array of template names indexed by converter name
- *
- * For example, if the default HTMLframesConverter is using the DOM/l0l33t
- * template, the array will be
- * <code>$converters['frames'] = 'DOM/l0l33t'</code>
- * @var array Format: array(Convertername1 => templatename)
- * @see Converter
- */
- var $converters = false;
- /**
- * @var string Title of generated documentation, passed to Converters
- */
- var $title = '';
-
- var $uses = array();
-
- var $db_template;
-
- /**
- * Stores parsed CHANGELOG/INSTALL/README files
- * @var array Format: array(CHANGELOG => contents,
- * INSTALL => contents,
- * README => contents)
- */
- var $ric = array();
-
- /**
- * Flag used to determine whether the last docblock
- * was a page-level docblock.
- * @var boolean
- * @access private
- */
- var $_lastDocBlockWasPageLevel = false;
-
- /**
- * Flag used to determine whether the Page-level
- * DocBlock was declared in old or new style
- * @var boolean
- * @access private
- */
- var $_oldPageLevel = false;
-
- /**
- * sets up basic data structures
- * @param string Title of generated documentation, passed to Converters
- * @see $title, $data, $classes, $proceduralpages
- */
- function phpDocumentor_IntermediateParser($title='Generated Documentation')
- {
- $this->title = $title;
- $this->data = new parserData;
- $this->classes = new Classes;
- $this->proceduralpages = new ProceduralPages;
- }
-
- /**
- * Retrieve the relative path. If the path contains "pear/" it will
- * be used as the base, otherwise the Program_Root string will be used.
- * @global array uses 'Program_Root' option to replace it with '' for
- * retrieving the source location of a file
- * @param string path to file
- * @return string
- * @see $sourceLocation
- * @access private
- */
- function _getSourceLocation($sl, $sourceloc)
- {
- global $_phpDocumentor_options;
- if (empty($sl)) return false;
- $sl = str_replace('\\','/',$sl);
- if (strpos($sl,'pear/'))
- {
- $sl = substr($sl,strpos($sl,'pear/') + 5);
- if (dirname($sl) == '.')
- {
- return 'PEAR';
- }
- return dirname($sl);
- } else
- {
- if (strpos(str_replace($_phpDocumentor_options['Program_Root'] . PATH_DELIMITER,'',$sourceloc),PATH_DELIMITER) === false)
- return '';
- return dirname(str_replace($_phpDocumentor_options['Program_Root'] . PATH_DELIMITER,'',$sourceloc));
- }
- }
-
- /**
- * Guess the package/subpackage based on subdirectory if the --pear option
- *
- * A file in pear/dir/file.php will be in package "dir." A file in
- * pear/dir/subdir/file.php will be in package "dir," subpackage "subdir."
- * @param string full path of file
- * @param template-ready source location Program_Root/dir/file.php
- * @global array uses the 'pear' option to determine whether to guess based
- * on subdirectory
- * @tutorial phpDocumentor.howto.pkg#using.command-line.pear
- */
- function _guessPackage($path, $sourceloc)
- {
- global $_phpDocumentor_setting;
- if ($_phpDocumentor_setting['pear'])
- {
- $subpath = explode(PATH_DELIMITER, $this->_getSourceLocation($path, $sourceloc));
- if (!empty($subpath[0]))
- { // can only have package and subpackage in this version
- $package = $subpath[0];
- $subpackage = '';
- if (isset($subpath[1])) $subpackage = $subpath[1];
- return array($package,$subpackage);
- } else return array($this->package, $this->subpackage);
- } else return array($this->package, $this->subpackage);
- }
-
- /**
- * handles post-parsing of include/require/include_once/include_once
- *
- * This function sets {@link $data}->clean to false to tell the
- * phpDocumentor_IntermediateParser that a page-level DocBlock can't be
- * found after this point on this page. It then sets the package
- * to be the same as the page, and adds itself to the
- * {@link ProceduralPages} class
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserInclude $data
- */
- function handleInclude($event,$data)
- {
- if ($this->_lastDocBlockWasPageLevel)
- {
- addWarning(PDERROR_DOCBLOCK_CONFLICT, $data->getName(), $data->getFile());
- if (!$this->_oldPageLevel)
- {
- unset($this->last);
- }
- }
- $this->_lastDocBlockWasPageLevel =
- $this->data->clean = false;
- // page was @ignored
- if ($this->private_page)
- {
- unset($this->last);
- return;
- }
- if (empty($this->last))
- {
- if (isset($this->db_template))
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- else
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- }
-// $this->last->setLineNumber($data->getLineNumber());
- if ($this->last->getKeyword('ignore'))
- {
- $this->last = false;
- return;
-// addWarning(PDERROR_IGNORE_TAG_IGNORED,'include',$data->getName().'('.$data->getValue().')');
- }
-
- $this->last->overridePackage($this->category,$this->package,$this->subpackage,$data->getName(),'include');
- $data->setDocBlock($this->last);
- $this->proceduralpages->addInclude($data);
- $this->last = false;
- }
-
- /**
- * handles post-parsing of global variables
- *
- * This function sets {@link $data}->clean to false to tell the
- * phpDocumentor_IntermediateParser that a page-level DocBlock can't be
- * found after this point on this page. It then sets the package
- * to be the same as the page, and adds itself to the
- * {@link ProceduralPages} class
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserGlobal $data
- */
- function handleGlobal($event,$data)
- {
- if ($this->_lastDocBlockWasPageLevel)
- {
- addWarning(PDERROR_DOCBLOCK_CONFLICT, 'global variable', $data->getName());
- if (!$this->_oldPageLevel)
- {
- unset($this->last);
- }
- }
- $this->_lastDocBlockWasPageLevel =
- $this->data->clean = false;
- if ($this->private_page)
- {
- unset($this->last);
- return;
- }
- if (empty($this->last))
- {
- if (isset($this->db_template))
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- else
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- }
-// $this->last->setLineNumber($data->getLineNumber());
- if ($this->last->getKeyword('ignore'))
- {
- addWarning(PDERROR_IGNORE_TAG_IGNORED,'global variable - just don\'t document the',$data->getName());
- $this->last = false;
- return;
- }
- $this->last->overridePackage($this->category,$this->package,$this->subpackage,$data->getName(),'global');
- $data->setDocBlock($this->last);
- if ($data->docblock->getKeyword('name'))
- {
- $a = $data->docblock->getKeyword('name');
- if (is_object($a)) $a = $a->value;
- $data->setName($a);
- }
- $this->proceduralpages->addGlobal($data);
- $this->last = false;
- }
-
- /**
- * handles post-parsing of Package-level documentation pages.
- *
- * sets the {@link $package_pages}[$data->package] to $data
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserPackagePage $data
- */
- function handlePackagePage($event,$data)
- {
- $this->package_pages[$data->package] = &$data;
- $this->last = false;
- }
-
- /**
- * handle post-parsing of Tutorials.
- *
- * This adds the parsed tutorial to the tutorial tree
- * @uses $tutorials sets the value of tutorials to parameter $data
- * @param integer $event Event Number
- * @param parserTutorial $data
- * @since 1.2
- */
- function handleTutorial($event,$data)
- {
- if (isset($this->packagecategories[$data->package]))
- {
- $data->category = $this->packagecategories[$data->package];
- } else
- {
- $data->category = $GLOBALS['phpDocumentor_DefaultCategoryName'];
- }
- $this->tutorials[$data->package][$data->subpackage][$data->tutorial_type][$data->name] = $data;
- }
-
- /**
- * handles post-parsing of class vars
- *
- * This function sets up a @var tag if none is found, and aligns $data's
- * $path var and packages to match the parent object
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserVar $data
- */
- function handleVar($event,$data)
- {
- global $_phpDocumentor_setting;
- if ($this->private_class)
- {
- unset($this->last);
- return;
- }
- if (empty($this->last))
- {
- if (isset($this->db_template))
- {
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- } else {
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- }
- }
-// $this->last->setLineNumber($data->getLineNumber());
- $this->last->overridePackage($this->category,$this->package,$this->subpackage,$data->getName(),'var');
- $this->last->updateModifiers($data->getModifiers());
-
- if ($this->last->getKeyword('ignore'))
- {
- $this->last = false;
- return;
-// addWarning(PDERROR_IGNORE_TAG_IGNORED,'var',$this->cur_class.'::'.$data->getName());
- }
- if (!$this->last->var)
- {
- $this->last->addVar('mixed',new parserStringWithInlineTags);
- }
-
- if ($_phpDocumentor_setting['pear'])
- {
- if (strpos($data->getName(), '_') == 1 && !$this->last->getKeyword('access'))
- {
- addWarning(PDERROR_PRIVATE_ASSUMED,'class variable',$data->class.'::'.$data->getName());
- $this->last->addKeyword('access','private');
- $data->setDocBlock($this->last);
- }
- }
- $data->setDocBlock($this->last);
- $data->path = $this->data->parent->path;
- $this->classes->addVar($data);
- $this->last = false;
- }
-
- /**
- * handles post-parsing of class constants
- *
- * This function aligns $data's
- * $path var and packages to match the parent object
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserVar $data
- */
- function handleConst($event,$data)
- {
- global $_phpDocumentor_setting;
- if ($this->private_class)
- {
- unset($this->last);
- return;
- }
- if (empty($this->last))
- {
- if (isset($this->db_template))
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- else
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- }
-// $this->last->setLineNumber($data->getLineNumber());
- $this->last->overridePackage($this->category,$this->package,$this->subpackage,$data->getName(),'const');
-
- if ($this->last->getKeyword('ignore'))
- {
- $this->last = false;
- return;
-// addWarning(PDERROR_IGNORE_TAG_IGNORED,'var',$this->cur_class.'::'.$data->getName());
- }
- $data->setDocBlock($this->last);
- $data->path = $this->data->parent->path;
- $this->classes->addConst($data);
- $this->last = false;
- }
-
- /**
- * handles post-parsing of class methods
- *
- * This function first aligns $data's path and package to match the parent
- * object, and also aligns the docblock's @param, @global, and @staticvar
- * tags with the information parsed from the method source code. It also
- * checks to see if the method is a constructor and sets the $isConstructor
- * flag. If source code has been parsed by a {@}source} tag, the source is
- * added to its docblock
- *
- * Finally, it adds the method to the {@link Classes} class.
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserMethod $data
- */
- function handleMethod($event,$data)
- {
- global $_phpDocumentor_setting;
- if ($this->private_class)
- {
- unset($this->last);
- return;
- }
-
- if (empty($this->last))
- {
- if (isset($this->db_template))
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- else
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- }
-// $this->last->setLineNumber($data->getLineNumber());
- if ($this->last->getKeyword('ignore'))
- {
- $this->last = false;
- return;
-// addWarning(PDERROR_IGNORE_TAG_IGNORED,'method',$this->cur_class.'::'.$data->getName());
- }
- $this->last->overridePackage($this->category,$this->package,$this->subpackage,$data->getName(),'method');
- if ($data->hasSource())
- {
- $this->last->setSource($data->getSource(), $data->getClass());
- }
- foreach($data->listParams() as $param)
- {
- $update_params[] = $param[0];
- }
- foreach($data->listGlobals() as $param)
- {
- $update_globals[] = $param[1];
- }
- foreach($data->listStatics() as $param)
- {
- $update_statics[] = $param[0];
- }
- if (isset($update_params))
- $this->last->updateParams($update_params);
- if (isset($update_globals))
- $this->last->updateGlobals($update_globals);
- if (isset($update_statics))
- $this->last->updateStatics($update_statics);
- $this->last->updateModifiers($data->getModifiers());
- unset($update_params);
- unset($update_globals);
- unset($update_statics);
-
- if ($data->getName() == $this->cur_class) $data->setConstructor();
- if ($data->getName() == '__construct') {
- $data->setConstructor();
- }
- if ($data->getName() == '__destruct') {
- $data->setDestructor();
- }
-
- if ($_phpDocumentor_setting['pear'])
- {
- if (strpos($data->getName(), '_') === 0 && substr($data->getName(), 1) == $data->class)
- { // is destructor
- $data->setDestructor();
- } elseif (strpos($data->getName(), '_') === 0 && !$this->last->getKeyword('access'))
- {
- if (strpos($data->getName(), '__') !== 0) {
- addWarning(PDERROR_PRIVATE_ASSUMED,'method',$data->class.'::'.$data->getName().'()');
- $this->last->addKeyword('access','private');
- $data->setDocBlock($this->last);
- }
- }
- }
- $data->setDocBlock($this->last);
- $data->path = $this->data->parent->path;
- $this->classes->addMethod($data);
- $this->last = false;
- }
-
- /**
- * handles post-parsing of functions
- *
- * This function sets {@link $data}->clean to false to tell the
- * phpDocumentor_IntermediateParser that a page-level DocBlock can't be
- * found after this point on this page. It then sets the package to be the
- * same as the page, aligns the docblock's @param, @global, and @staticvar
- * tags with the information parsed from the function source code.
- *
- * If source code has been parsed by a {@}source} tag, the source is added
- * to its docblock, and then the parserFunction adds itself to the
- * {@link ProceduralPages} class
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserFunction $data
- */
- function handleFunction($event,$data)
- {
- if ($this->_lastDocBlockWasPageLevel)
- {
- addWarning(PDERROR_DOCBLOCK_CONFLICT, 'function', $data->getName());
- if (!$this->_oldPageLevel)
- {
- unset($this->last);
- }
- }
- $this->_lastDocBlockWasPageLevel =
- $this->data->clean = false;
- if ($this->private_page)
- {
- unset($this->last);
- return;
- }
-
- if (empty($this->last))
- {
- if (isset($this->db_template))
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- else
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- }
-// $this->last->setLineNumber($data->getLineNumber());
- if ($this->last->getKeyword('ignore'))
- {
- unset($this->last);
- return;
- }
- $this->last->overridePackage($this->category,$this->package,$this->subpackage,$data->getName(),'function');
-
- foreach($data->listParams() as $param)
- {
- $update_params[] = $param[0];
- }
- foreach($data->listGlobals() as $param)
- {
- $update_globals[] = $param[1];
- }
- foreach($data->listStatics() as $param)
- {
- $update_statics[] = $param[0];
- }
- if (isset($update_params))
- $this->last->updateParams($update_params);
- if (isset($update_globals))
- $this->last->updateGlobals($update_globals);
- if (isset($update_statics))
- $this->last->updateStatics($update_statics);
- unset($update_params);
- unset($update_globals);
- unset($update_statics);
-
- if ($data->hasSource())
- {
- $this->last->setSource($data->getSource());
- }
- if (count($this->last->params) == 1 && !count($data->listParams()))
- {
- // if the function has no parameters, and 1 @param, add it to the list as optional, default value is description from @param
- $pars = $this->last->listParams();
- $data->addParam($pars[0]['var'],$pars[0]['data']->getString());
- }
- $data->setDocBlock($this->last);
- $this->proceduralpages->addFunction($data);
- $this->last = false;
- }
-
- /**
- * handles post-parsing of defines
- *
- * This function sets {@link $data}->clean to false to tell the
- * phpDocumentor_IntermediateParser that a page-level DocBlock can't be
- * found after this point on this page. It then sets the package to be the
- * same as the page and adds itself to the {@link ProceduralPages} class
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserDefine $data
- */
- function handleDefine($event,$data)
- {
- if ($this->_lastDocBlockWasPageLevel)
- {
- addWarning(PDERROR_DOCBLOCK_CONFLICT, 'define', $data->getName());
- if (!$this->_oldPageLevel)
- {
- unset($this->last);
- }
- }
- $this->_lastDocBlockWasPageLevel =
- $this->data->clean = false;
- if ($this->private_page)
- {
- unset($this->last);
- return;
- }
- if (empty($this->last))
- {
- if (isset($this->db_template))
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- else
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- }
-// $this->last->setLineNumber($data->getLineNumber());
- if ($this->last->getKeyword('ignore'))
- {
- unset($this->last);
- return;
- }
-
- $this->last->overridePackage($this->category,$this->package,$this->subpackage,$data->getName(),'define');
- $data->setDocBlock($this->last);
- $this->proceduralpages->addDefine($data);
- $this->last = false;
- }
-
- /**
- * handles post-parsing of classes
- *
- * This function sets {@link $data}->clean to false to tell the
- * phpDocumentor_IntermediateParser that a page-level DocBlock can't be
- * found after this point on this page. It sets {@link $cur_class} to its
- * name, and if an @ignore tag is found in the DocBlock, it sets
- * {@link $private_class} to true, to prevent post-parsing of any of the
- * class's vars or methods. Then it checks for the existence of a package
- * page for the class's package
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserClass $data
- */
- function handleClass($event,$data)
- {
- global $_phpDocumentor_setting;
- if ($this->_lastDocBlockWasPageLevel)
- {
- if (!$this->_oldPageLevel)
- {
- addWarning(PDERROR_DOCBLOCK_GOES_CLASS, $data->getName());
- $doc = new parserDocBlock;
- $doc->category = $this->category;
- $doc->package = $this->package;
- $doc->subpackage = $this->subpackage;
- if ($_phpDocumentor_setting['sourcecode']) {
- $doc->canSource();
- $doc->addFileSource($this->data->parent->path, $this->data->parent->source);
- }
- $this->data->setDocBlock($doc);
- unset($doc);
- $this->last->cantSource();
- }
- }
- $this->_lastDocBlockWasPageLevel =
- $this->data->clean = false;
- if (empty($this->last))
- {
- if (isset($this->db_template))
- // use the docblock template
- $this->last = phpDocumentor_clone($this->db_template);
- else
- // we don't have a docblock, create an empty one to get rid of errors
- $this->last = new parserDocblock();
- list($this->last->package, $this->last->subpackage) = $this->_guessPackage($this->data->parent->path, $this->data->parent->getSourceLocation('dummy'));
- addWarning(PDERROR_NO_PACKAGE_TAG,'class',$data->getName(),$this->last->package);
- } else
- {
- if (!$this->last->getExplicitPackage())
- {
- list($this->last->package, $this->last->subpackage) = $this->_guessPackage($this->data->parent->path, $this->data->parent->getSourceLocation('dummy'));
- addWarning(PDERROR_NO_PACKAGE_TAG,'class',$data->getName(),$this->last->package);
- } else
- {
- if (isset($this->packagecategories[$this->package])
- && $this->packagecategories[$this->package] != $this->category)
- addWarning(PDERROR_PACKAGECAT_SET,$this->package,
- $this->packagecategories[$this->package],
- $this->category);
- $this->packagecategories[$this->package] = $this->category;
- }
- }
- $this->last->updateModifiers($data->getModifiers());
-// $this->last->setLineNumber($data->getLineNumber());
- $data->setDocBlock($this->last);
- $this->cur_class = $name = $data->getName();
- if ($this->last->getKeyword('ignore'))
- {
- $this->private_class = true;
- unset($this->last);
- return;
- }
- $data->path = $this->data->parent->path;
- $this->classes->addClass($data);
- $this->private_class = false;
- if ($this->last->package)
- {
- $this->parsePackagePage($this->last->package, $this->data->parent->getPath());
- }
- $this->last = false;
- }
-
- /**
- * handles post-parsing of procedural pages
- *
- * this event is called at the start of a new page, before the Parser knows
- * whether the page will contain any procedural pages or not
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserPage $data
- */
- function handlePage($event,$data)
- {
- $type = 'page';
- $this->private_page = false;
- $this->data = new parserData;
- $data->category = $this->category = $GLOBALS['phpDocumentor_DefaultCategoryName'];
- $this->package = $GLOBALS['phpDocumentor_DefaultPackageName'];
- $this->subpackage = '';
- $this->proceduralpages->addPage($data);
- $this->data->setParent($data);
- $this->pages[$data->getPath()] = $this->data;
- $this->classes->nextFile($data->getPath());
- $this->packageoutput = $data->getPackageOutput();
- }
-
- /**
- * handles post-parsing of DocBlocks
- *
- * This function sets {@link $last} to the DocBlock represented by $data, to
- * allow the next documentable element passed to
- * phpDocumentor_IntermediateParser to link the DocBlock into its $docblock
- * property. This function also checks for two special cases of DocBlocks:
- * <ol>
- * <li>First DocBlock in the file contains a @package tag</li>
- * <li>First DocBlock in the file is immediately followed by another
- * DocBlock</li>
- * </ol>
- * In both cases, the function extracts this tag and uses it as the
- * page-level package. If the @package tag is in the DocBlock of an
- * element (function, global variable, whatever) that isn't a page-level
- * DocBlock, a warning will be raised to notify the author that a @package
- * tag belongs in a page-level DocBlock.
- *
- * <b>New</b> in version 1.2.2, if the first DocBlock in a file contains
- * a @package tag, it is a page-level DocBlock.
- *
- * If the DocBlock is page-level, it is processed with
- * {@link _processPageLevelDocBlock}
- *
- * Finally, the function replaces the old parserPage in
- * {@link parserData::$data}->parent with the new one containing information
- * from the DocBlock by calling {@link addPage()}, and checks for
- * package-level docs.
- * @param integer $event Event number from {@link Parser.inc}
- * @param parserDocBlock $data
- */
- function handleDocBlock($event,$data)
- {
- $type = 'docblock';
- $data->postProcess();
- // Zend desc support
- if ($tdesc = $data->getKeyword('desc'))
- {
- $data->setShortDesc($tdesc);
- unset($data->tags['desc']);
- }
- $this->_lastDocBlockWasPageLevel = false;
- // 1st docblock in file, check for @package
- if ($this->data->isClean() && !isset($this->last))
- {
- if ($data->getExplicitPackage())
- {
- // new with 1.2.2:
- // if the first docblock in a file
- // contains a @package tag, then it is
- // a page-level docblock
- $this->_processPageLevelDocBlock($data);
- $this->_lastDocBlockWasPageLevel = true;
- $this->all_packages[$data->package] = 1;
- $this->last = $data;
- return;
- }
- $doc = new parserDocBlock;
- $doc->category = $this->category;
- $doc->package = $this->package;
- $doc->subpackage = $this->subpackage;
- $this->data->setDocBlock($doc);
- $this->proceduralpages->addPagePackage($this->data->parent->getPath(),$this->package,$this->subpackage);
- unset($doc);
- }
- // 2nd docblock in a row, and it's at the top of the file, page-level docblock
- if ($this->lasttype == "docblock" && $this->data->isClean())
- {
- $this->_processPageLevelDocBlock($this->last);
- $this->_oldPageLevel = true;
- $this->_lastDocBlockWasPageLevel = false;
- }
- $this->all_packages[$data->package] = 1;
- $this->last = $data;
- }
-
- /**
- * Process a Page-level DocBlock
- *
- * First, it checks for an @ignore tag,
- * and if found, calls {@link ProceduralPages::ignorePage()}. An @ignore
- * tag in a page-level DocBlock will ignore all functions, defines, global
- * variables, and includes. It will not ignore classes! The function next
- * checks for an @access private, and if --parseprivate is off, performs the
- * same actions as @ignore, raising a warning for the unsuspecting user.
- * Next, it checks for the @name tag, which is used to rename the page.
- * This is also a PEAR compatibility issue, and may not be very useful in
- * the long run. Documentation is best when it refers to real entities in
- * the package, and not to aliases.
- * @access private
- */
- function _processPageLevelDocBlock($data)
- {
- global $_phpDocumentor_setting;
- // can only have 1 package-level docblock, others are ignored
- if (!$this->data->isClean())
- {
- return;
- }
- $this->data->clean = false;
- $this->data->explicitDocBlock();
- $data->canSource();
- if ($_phpDocumentor_setting['sourcecode'])
- {
- $data->addFileSource($this->data->parent->path, $this->data->parent->source);
- }
- if (!$data->getExplicitPackage())
- {
- list($data->package,$data->subpackage) = $this->_guessPackage($this->data->parent->getPath(), $this->data->parent->getSourceLocation('dummy'));
- addWarning(PDERROR_NO_PACKAGE_TAG,'file',$this->data->parent->getPath(),$this->last->package);
- }
- if (isset($this->packagecategories[$this->package])
- && $this->packagecategories[$this->package] != $this->category)
- addWarning(PDERROR_PACKAGECAT_SET,$this->package,
- $this->packagecategories[$this->package],
- $data->category);
- $this->packagecategories[$this->package] = $data->category;
- $this->category = $this->data->parent->category = $data->category;
- $this->packagecategories[$this->package] = $this->category;
- $this->subpackage = $this->data->parent->subpackage = $data->subpackage;
- if ($data->getKeyword('ignore'))
- {
- $this->proceduralpages->ignorePage($this->data->parent);
- $this->private_page = true;
- unset($this->last);
- $this->privatepages[$this->data->parent->getPath()] = $this->data;
- unset($this->pages[$this->data->parent->getPath()]);
- return;
- }
- $this->data->setDocBlock($data);
- $this->package = $this->data->parent->package = $data->package;
- $this->subpackage = $this->data->parent->subpackage = $data->subpackage;
- $this->proceduralpages->addPagePackage($this->data->parent->getPath(),$this->package,$this->subpackage);
- if ($access = $data->getKeyword('access'))
- {
- if (is_object($access) && ($access->getString() == 'private') && (!$this->parsePrivate))
- {
- addWarning(PDERROR_PARSEPRIVATE, $this->data->parent->getPath());
- $this->proceduralpages->ignorePage($this->data->parent);
- $this->private_page = true;
- unset($this->last);
- $this->privatepages[$this->data->parent->getPath()] = $this->data;
- unset($this->pages[$this->data->parent->getPath()]);
- return;
- }
- }
- if ($data->getKeyword('name'))
- {
- $a = $data->getKeyword('name');
- if (is_object($a)) $a = $a->value;
- $this->data->parent->setFile($a);
- $this->proceduralpages->setName($a);
- }
- $this->addPage($this->data->parent, $this->data->parent->getPath());
- if ($this->package)
- {
- $this->parsePackagePage($this->package, $this->data->parent->getPath());
- }
- }
-
- /**
- * Backward-compatibility only, use the new tutorials for more power
- * @tutorial tutorials.pkg
- * @param string package name of package file to parse
- * @param string directory of file that contains package name
- */
- function parsePackagePage($package, $path)
- {
- if (!isset($this->package_pages[$package]))
- {
- if (file_exists(dirname($path) . SMART_PATH_DELIMITER . $package . '.html'))
- {
- if ($this->quietMode === false)
- {
- phpDocumentor_out("Reading package-level file ".$package . '.html');
- flush();
- }
- $fp = fopen(dirname($path) . SMART_PATH_DELIMITER . $package . '.html',"r");
- $ret = fread($fp,filesize(dirname($path) . SMART_PATH_DELIMITER . $package . '.html'));
- fclose($fp);
- unset($fp);
- if ($this->quietMode === false)
- {
- phpDocumentor_out(" -- Parsing File\n");
- flush();
- }
- $pageParser = new ppageParser;
- $tempp = $this->package;
- $lp = $this->last;
- $pageParser->subscribe('*',$this);
- $pageParser->parse($ret,false,$package);
- $this->package = $tempp;
- $this->last = $lp;
- unset($tempp);
- unset($pageParser);
- }
- }
- }
-
- /**
- * called via {@link Parser::parse()} and Parser's inherited method
- * {@link Publisher::publishEvent()}
- *
- * $event is one of the PHPDOC constants from Parser.inc. If it is not
- * PHPDOCUMENTOR_EVENT_NEWSTATE, then a function name is retrieved from the
- * {@link $event_handlers} array and called to handle the $data
- * @param integer $event event number from {@link Parser.inc}
- * @param mixed $data if $event is {@link PHPDOCUMENTOR_EVENT_NEWSTATE}, $data is a {@link PHP_DOC_EVENT_END_PAGE} or {@link STATE_END_CLASS},
- * otherwise $data is either a {@link parserDocBlock}, {@link parserPage} or descendant of {@link parserElement}
- * @global array we use 'sourcecode' to determine whether to highlight the source
- * of the current file if it has no file-level docblock
- */
- function HandleEvent($event,$data)
- {
- global $_phpDocumentor_setting;
- global $phpDocumentor_DefaultPackageName, $phpDocumentor_DefaultCategoryName;
- if (empty($this->packagecategories))
- $this->packagecategories[$phpDocumentor_DefaultPackageName] = $phpDocumentor_DefaultCategoryName;
- if ($event == PHPDOCUMENTOR_EVENT_NEWSTATE)
- {
- if ($data == STATE_END_CLASS)
- {
- } elseif ($data == PHPDOCUMENTOR_EVENT_END_PAGE)
- {
- if (!$this->private_page)
- {
- $this->all_packages[$this->package] = 1;
- if (!$this->data->hasExplicitDocBlock())
- {
- $doc = $this->data->docblock;
- if (!$this->data->docblock)
- {
- $doc = new parserDocBlock;
- }
- if ($_phpDocumentor_setting['sourcecode'])
- {
- $doc->canSource();
- $doc->addFileSource($this->data->parent->path, $this->data->parent->source);
- }
- list($doc->package,$doc->subpackage) = $this->_guessPackage($this->data->parent->getPath(), $this->data->parent->getSourceLocation('dummy'));
- addWarning(PDERROR_NO_PAGE_LEVELDOCBLOCK,$this->data->parent->getPath());
- $this->data->setDocBlock($doc);
- $this->proceduralpages->addPage($this->data->parent,$doc->package,$doc->subpackage);
- }
- $this->pages[$this->data->parent->getPath()] = $this->data;
- }
- $this->private_page = false;
- $this->private_class = false;
- if (isset($this->db_template))
- {
- addWarning(PDERROR_DB_TEMPLATE_UNTERMINATED);
- }
- unset($this->db_template);
- unset($this->last);
- } elseif ($data == PHPDOCUMENTOR_EVENT_END_DOCBLOCK_TEMPLATE)
- {
- unset($this->db_template);
- }
- //echo $this->state_lookup[$data] . "\n";
- //echo $data."\n";
- }
- else
- {
- if ($event == PHPDOCUMENTOR_EVENT_README_INSTALL_CHANGELOG)
- {
- $this->ric[$data[0]] = $data[1];
- return;
- }
- if ($event == PHPDOCUMENTOR_EVENT_DOCBLOCK_TEMPLATE)
- {
- $data->postProcess();
- $this->db_template = $data;
- $this->_lastDocBlockWasPageLevel = false;
- // 2nd docblock in a row, and it's at the top of the file, page-level docblock
- if ($this->type == "docblock" && $this->data->isClean())
- {
- // can only have 1 package-level docblock, others are ignored
- $this->data->clean = false;
- if ($this->last->getKeyword('ignore'))
- {
- $this->proceduralpages->ignorePage($this->data->parent);
- $this->private_page = true;
- unset($this->last);
- $this->privatepages[$this->data->parent->getPath()] = $this->data;
- unset($this->pages[$this->data->parent->getPath()]);
- return;
- }
- $this->data->setDocBlock($this->last);
- $this->package = $this->data->parent->package = $this->last->package;
- $this->subpackage = $this->data->parent->subpackage = $this->last->subpackage;
- $this->proceduralpages->addPagePackage($this->data->parent->getPath(),$this->package,$this->subpackage);
- if ($access = $this->last->getKeyword('access'))
- {
- if (is_object($access) && ($access->getString() == 'private') && (!$this->parsePrivate))
- {
- addWarning(PDERROR_PARSEPRIVATE, $this->data->parent->getPath());
- $this->proceduralpages->ignorePage($this->data->parent);
- $this->private_page = true;
- unset($this->last);
- $this->privatepages[$this->data->parent->getPath()] = $this->data;
- unset($this->pages[$this->data->parent->getPath()]);
- return;
- }
- }
- if ($this->last->getKeyword('name'))
- {
- $a = $this->last->getKeyword('name');
- if (is_object($a)) $a = $a->value;
- $this->data->parent->setFile($a);
- $this->proceduralpages->setName($a);
- }
- $this->addPage($this->data->parent, $this->data->parent->getPath());
- if ($this->package)
- {
- $this->parsePackagePage($this->package, $this->data->parent->getPath());
- }
- }
- unset($this->last);
- } else
- {
- $this->lasttype = $this->type;
- $type = $data->getType();
-// fancy_debug($type,$data);
- if (($type != 'page') && ($type != 'docblock') && ($type != 'packagepage') && ($type != 'tutorial'))
- {
- $data->setFile($this->data->parent->getFile());
- }
- $this->type = $type;
- //echo $type . "\n";
-
- if (isset($this->event_handlers[$type]))
- {
- $handle = $this->event_handlers[$type];
- $this->$handle($event,$data);
- }
- }
- }
- }
-
- /**
- * Replaces the {@link parserPage} represented by $this->pages[$path] with
- * $page
- *
- * Called by {@link addPageIfNecessary(), handleDocBlock()} and
- * {@link ProceduralPages::setupPages()}, this method first checks to see if
- * the page has been added. If not, it assumes that the page has either
- * been @ignored or set with @access private with --parseprivate off, and
- * returns {@link addPrivatePage()}. Otherwise, it sets the pages[$path] to
- * be the parserPage $page and sets the package and subpackage to that of
- * $page
- * @see $pages
- * @param parserPage
- * @param string full path to the file
- */
- function addPage($page, $path)
- {
- if (!isset($this->pages[$path])) return $this->addPrivatePage($page, $path);
- $this->pages[$path]->setParent($page);
- if ($page->package != $GLOBALS['phpDocumentor_DefaultPackageName'])
- {
- if (!$this->pages[$path]->docblock)
- {
- $docblock = new parserDocBlock;
- $docblock->package = $page->package;
- $docblock->subpackage = $page->subpackage;
- $this->pages[$path]->docblock = $docblock;
- } else
- {
- $this->pages[$path]->docblock->package = $page->package;
- $this->pages[$path]->docblock->subpackage = $page->subpackage;
- }
- }
- }
-
- /**
- * add a new {@link parserPage} to the $pages array if none is found
- *
- * This method is used when a page has been @ignored or marked with @access
- * private, and a public class is in the page (a class with no @access
- * private in its DocBlock). The method first creates a new page in the
- * {@link $pages} array and then copies path information, and calls
- * {@link addPage()} to set up packages
- * @param string full path of page
- */
- function addPageIfNecessary($path, &$class)
- {
- global $_phpDocumentor_setting;
- if (!$this->parsePrivate)
- {
- if (!isset($this->pages[$path]))
- {
- $this->pages[$path] = new parserData;
- $this->pages[$path]->docblock = new parserDocBlock;
- $this->pages[$path]->docblock->package = $this->privatepages[$path]->docblock->package;
- $this->pages[$path]->docblock->subpackage = $this->privatepages[$path]->docblock->subpackage;
- $par = $this->privatepages[$path]->parent;
- $this->pages[$path]->setParent($par);
- $this->proceduralpages->addPage($par);
- }
- }
- if (isset($_phpDocumentor_setting['packageoutput']))
- $packages = explode(',',$_phpDocumentor_setting['packageoutput']);
- if (isset($_phpDocumentor_setting['packageoutput']) &&
- $this->pages[$path]->parent->package != $class->docblock->package &&
- !in_array($this->pages[$path]->parent->package,$packages))
- {
- $this->pages[$path]->parent->package = $class->docblock->package;
- $this->addPage($this->pages[$path]->parent, $path);
- $this->proceduralpages->addPage($this->pages[$path]->parent);
- }
- }
-
- /**
- * Adds a {@link parserPage} element to the {@link parserData} element in
- * $this->privatepages[$path]
- *
- * Performs a similar function to addPage, but adds to the
- * {@link $privatePages} array
- * @param parserPage $page
- * @param string $path full path to the page
- * @see addPage()
- */
- function addPrivatePage($page, $path)
- {
- $this->privatepages[$path]->setParent($page);
- if ($page->package != $GLOBALS['phpDocumentor_DefaultPackageName'])
- {
- if (!$this->privatepages[$path]->docblock)
- {
- $docblock = new parserDocBlock;
- $docblock->package = $page->package;
- $docblock->subpackage = $page->subpackage;
- $this->privatepages[$path]->docblock = $docblock;
- } else
- {
- $this->privatepages[$path]->docblock->package = $page->package;
- $this->privatepages[$path]->docblock->subpackage = $page->subpackage;
- }
- }
- }
-
- /**
- * adds a processed descendant of {@link parserElement} to the {@link $pages}
- * array or {@link $privatepages} array
- *
- * This function expects the page to exist in either $pages or $privatepages. It calls the
- * {@link parserData::addElement()} method to add $element to the page.
- * @param parserElement $element this will actually be a descendant of parserElement
- * @param string $path
- */
- function addElementToPage($element, $path)
- {
- if (isset($this->privatepages[$path]))
- {
- if (isset($this->pages[$path]))
- {
- if ($element->type == 'class' || $element->type == 'method'
- || $element->type == 'var' || $element->type == 'const')
- {
- $this->pages[$path]->addElement($element);
- } else
- $this->privatepages[$path]->addElement($element);
- } else
- $this->privatepages[$path]->addElement($element);
- } else
- {
- if (isset($this->pages[$path]))
- {
- $this->pages[$path]->addElement($element);
- }
- }
- }
-
- /**
- * Add all the @uses tags from $element to the $uses array so that @usedby
- * virtual tags can be added
- * @uses parserUsesTag::getSeeElement() used to initialize {@link $uses}
- * @uses parserUsesTag::getDescription() used to initialize {@link $uses}
- * @param parserElement descendant of parserElement
- * @param string full path to the file
- */
- function addUses($element, $path)
- {
- if ($element->type == 'page')
- {
- $element = $this->pages[$element->path];
- }
- if (!$this->parsePrivate && $element->docblock->hasaccess)
- {
- $a = $element->docblock->getKeyword('access');
- if (is_object($a) && $a->getString() == 'private') return;
- }
- if (isset($this->privatepages[$path]))
- {
- if (isset($this->pages[$path]))
- {
-// if ($element->type == 'function' || $element->type == 'method')
- {
- $uses = $element->docblock->getKeyword('uses');
- if ($uses)
- {
- if (!is_array($uses)) $uses = array($uses);
- foreach($uses as $use)
- {
- if (!is_object($use)) continue;
- $el = $use->getSeeElement();
- $description = $use->getDescription();
- $this->uses[$el][] = array($element, $description);
- }
- }
- }
- }
- } else
- {
- if (isset($this->pages[$path]))
- {
-// if ($element->type == 'function' || $element->type == 'method')
- {
- $uses = $element->docblock->getKeyword('uses');
- if ($uses)
- {
- if (!is_array($uses)) $uses = array($uses);
- foreach($uses as $use)
- {
- if (!is_object($use)) continue;
- $el = $use->getSeeElement();
- $description = $use->getDescription();
- $this->uses[$el][] = array($element, $description);
- }
- }
- }
- }
- }
- }
-
- /**
- * Add a {@link parserUsedByTag} link to every element referred to by @uses
- * @param Converter temporary converter used to retrieve abstract links
- * @uses phpDocumentor_IntermediateParser::addUses() indirectly, as
- * addUses() sets up $uses, which is iterated over here
- * @uses $pages sets up all @usedby tags from here
- * @access private
- */
- function _setupUsesList(&$converter)
- {
- ob_start();
- $converter->_createPkgElements($this->pages);
- ob_end_clean();
- foreach($this->uses as $link => $elements)
- {
- foreach($elements as $element)
- {
- if ($element[0]->type == 'method' || $element[0]->type == 'var' ||
- $element[0]->type == 'const')
- {
- $converter->class = $element[0]->getClass();
- }
- if ($element[0]->type == 'class')
- {
- $converter->class = $element[0]->getName();
- }
- $reallink = $converter->getLink($link,$element[0]->docblock->package);
- if (is_object($reallink))
- {
- // add a used by tag to the docblock of the destination
- switch(phpDocumentor_get_class($reallink))
- {
- case 'pagelink' :
- case 'functionlink' :
- case 'definelink' :
- case 'globallink' :
- if (isset($this->pages[$reallink->path]))
- {
- for ($i=0;$i<count($this->pages[$reallink->path]->elements);$i++)
- {
- if ($this->pages[$reallink->path]->elements[$i]->type == str_replace('link','',phpDocumentor_get_class($reallink)) && $this->pages[$reallink->path]->elements[$i]->getName() == $reallink->name)
- {
- $this->pages[$reallink->path]->elements[$i]->docblock->addUsedBy($element[0]->getLink($converter,false,true), $element[1]);
-// debug('added @usedby to '.str_replace('link','',phpDocumentor_get_class($reallink)).' '.$reallink->name);
- }
- }
- }
- break;
- case 'classlink' :
- case 'methodlink' :
- case 'varlink' :
- case 'constlink' :
- if (isset($this->pages[$reallink->path]))
- {
- for ($i=0;$i<count($this->pages[$reallink->path]->classelements);$i++)
- {
- if ($this->pages[$reallink->path]->classelements[$i]->type == str_replace('link','',phpDocumentor_get_class($reallink)) && $this->pages[$reallink->path]->classelements[$i]->getName() == $reallink->name)
- {
- $this->pages[$reallink->path]->classelements[$i]->docblock->addUsedBy($element[0]->getLink($converter,false,true), $element[1]);
-// debug('added @usedby to '.str_replace('link','',phpDocumentor_get_class($reallink)).' '.$reallink->name);
- }
- }
- }
- break;
- }
- }
- }
- }
- }
-
- /**
- * Interface to the Converter
- *
- * This function simply passes {@link $pages} and {@link package_pages} to
- * the walk() method, and then calls the Output() method. Note that
- * Output() is not required to do anything, and in fact doesn't in
- * HTMLframesConverter.
- * @uses Converter::walk() passes {@link $pages} and {@link $package_pages}
- * @uses Converter::Output()
- */
- function Convert($title, $converter)
- {
- $converter->walk($this->pages, $this->package_pages);
- $converter->Output($title);
- }
-
- /**
- * Clean up classes
- *
- * {@source}
- * @access private
- * @uses Classes::Inherit() passes $this
- */
- function fixClasses()
- {
- $this->classes->Inherit($this);
- }
-
- /**
- * Clean up Procedural Pages
- * {@source}
- * @access private
- * @uses ProceduralPages::setupPages() passes $this
- */
- function fixProcPages()
- {
- $this->proceduralpages->setupPages($this);
- }
-
- /**
- * If the parent class of $class is in a different package, adds it to the
- * {@link $package_parents} array
- * @param parserClass &$class
- */
- function addPackageParent(&$class)
- {
- if (!is_array($class->parent)) return;
- $par = $this->classes->getClass($class->parent[1], $class->parent[0]);
- if ($class->docblock->package == $par->docblock->package) return;
- $this->package_parents[$class->docblock->package] = $par->docblock->package;
- if (!isset($this->package_parents[$par->docblock->package]) || !$this->package_parents[$par->docblock->package]) $this->package_parents[$par->docblock->package] = false;
- }
-
- /**
- * Add a converter name to use to the list of converters
- *
- * Sets up the {@link $converters} array.
- * {@internal
- * First, the Converter's file is included, and then, if successful,
- * the converter classname is tested for existance. If all is good,
- * then the templates are added to the list of converters/templates to use}}
- * @param string $output output format (HTML, PDF, XML). Must be all caps
- * @param string $name Converter name (frames, for example, is the name of
- * HTMLframesConverter)
- * @param string $template template to use, should be a relative path to the
- * templates dir (like DOM/default)
- */
- function addConverter($output,$name,$template)
- {
- if (strpos($name,PATH_DELIMITER))
- {
- $parent = explode(PATH_DELIMITER,$name);
- $parent = $parent[0];
- if ('@VER@' != '@'.'VER@') {
- $filename = 'PhpDocumentor/phpDocumentor/Converters' .
- PATH_DELIMITER . $output . PATH_DELIMITER . $parent . PATH_DELIMITER . $output . $parent . "Converter" . ".inc";
- if (Io::isIncludeable($filename))
- {
- include_once($filename);
- }
- } else {
- $filename = str_replace('\\','/',$GLOBALS['_phpDocumentor_install_dir']) . '/phpDocumentor/Converters' .
- PATH_DELIMITER . $output . PATH_DELIMITER . $parent . PATH_DELIMITER . $output . $parent . "Converter" . ".inc";
- if (file_exists($filename) && is_readable($filename))
- {
- include_once($filename);
- }
- }
- if (!class_exists($output . $parent . 'Converter'))
- {
- addError(PDERROR_CONVERTER_NOT_FOUND,"parent Converter ".$output . $parent . "Converter of child Converter ".$output . str_replace(PATH_DELIMITER,'',$name) . "Converter");
- }
- }
- $filename = str_replace('\\', '/', $GLOBALS['_phpDocumentor_install_dir']) . '/phpDocumentor/Converters' .
- PATH_DELIMITER . $output . PATH_DELIMITER . $name . PATH_DELIMITER . $output .
- str_replace(PATH_DELIMITER, '', $name) . "Converter" . ".inc";
- if (file_exists($filename) && is_readable($filename))
- {
- include_once($filename);
- }
- if (class_exists($output . str_replace(PATH_DELIMITER,'',$name) . 'Converter'))
- {
- $this->converters[$output][$output . str_replace(PATH_DELIMITER,'',$name) . "Converter"][] = $template;
- } else
- {
- addError(PDERROR_CONVERTER_NOT_FOUND,$output . str_replace(PATH_DELIMITER,'',$name) . "Converter");
- }
- }
-
- /**
- * does a natural case sort on two {@link parserElement} descendants
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- * @see generateElementIndex()
- */
- function elementCmp ($a, $b)
- {
- return strnatcasecmp($a->getName(), $b->getName());
- }
-
- /**
- * does a natural case sort on two class elements (either
- * {@link parserClass, parserMethod} or {@link parserVar}
- *
- * @param mixed $a
- * @param mixed $b
- * @return int
- * @see generateElementIndex()
- */
- function ClasselementCmp ($a, $b)
- {
- if (phpDocumentor_get_class($a) == 'parserclass') $atest = $a->name; else $atest = $a->class;
- if (phpDocumentor_get_class($b) == 'parserclass') $btest = $b->name; else $btest = $b->class;
-
- if(($c = strnatcasecmp($atest, $btest)) != 0) return $c;
- if (phpDocumentor_get_class($a) != 'parserclass') $atest .= $a->name;
- if (phpDocumentor_get_class($b) != 'parserclass') $btest .= $b->name;
- if (phpDocumentor_get_class($a) == 'parsermethod' && phpDocumentor_get_class($b) == 'parsermethod')
- {
- if ($a->isConstructor) return -1;
- if ($b->isConstructor) return 1;
- if ($a->isDestructor) return -1;
- if ($b->isDestructor) return 1;
- }
- return strnatcasecmp($atest,$btest);
- }
-
- /**
- * call this method once parsing has completed.
- *
- * This method calls the private methods fixClasses and fixProcPages, both
- * of which adjust inheritance and package information based on complicated
- * post-parsing rules described in {@link ProceduralPages::setupPages()}
- * and {@link Classes::Inherit()}. Then, it sorts elements of the $pages
- * array and calls Convert for each Converter in the $converters array
- * @see $converters
- * @see $pages
- * @see Convert()
- */
- function Output ($title = "Generated Documentation")
- {
- $GLOBALS['phpDocumentor_errors']->curfile = false;
- $this->fixClasses();
- $this->fixProcPages();
-// var_dump($this->uses);
-// exit;
- phpDocumentor_out("\nSorting page elements...");
- flush();
- uasort($this->pages,'pagesort');
- foreach($this->pages as $i => $page)
- {
- usort($this->pages[$i]->elements,array($this,'elementCmp'));
- usort($this->pages[$i]->classelements,array($this,'ClasselementCmp'));
- }
- phpDocumentor_out("done\n");
- flush();
- $complicatedout = false;
- if (is_array($this->converters))
- {
- if (count($this->converters) > 1)
- {
- $complicatedout = true;
- }
- phpDocumentor_out("Formatting @uses list...");
- flush();
- $a = new __dummyConverter($this->all_packages, $this->package_parents, $this->classes, $this->proceduralpages, $this->packageoutput, $this->parsePrivate, $this->quietMode, $this->targetDir , '', $this->title);
- $this->_setupUsesList($a);
- unset($a);
- phpDocumentor_out("done\n\n");
- flush();
- foreach($this->converters as $converter => $blah)
- {
- if (is_array($blah))
- {
- if (count($blah) > 1)
- {
- $complicatedout = true;
- }
- foreach($blah as $converter => $templates)
- {
- foreach($templates as $template)
- {
- $extraout = '';
- if ($complicatedout)
- {
- $extraout = SMART_PATH_DELIMITER . $converter;
- }
- if (count($templates) > 1)
- {
- $extraout .= SMART_PATH_DELIMITER . str_replace(PATH_DELIMITER, SMART_PATH_DELIMITER, substr($template,0,strlen($template) - 1));
- }
- $a = new $converter($this->all_packages, $this->package_parents, $this->classes, $this->proceduralpages, $this->packageoutput, $this->parsePrivate, $this->quietMode, $this->targetDir . $extraout, $template, $this->title);
- if (isset($this->templateBase))
- {
- $a->setTemplateBase($this->templateBase, $template);
- }
- $a->ric = $this->ric;
- $a->packagecategories = $this->packagecategories;
- if (isset($this->tutorials)) $a->setTutorials($this->tutorials);
- $this->Convert($title, $a);
- unset($a);
- }
- }
- }
- }
- } else
- {
- addErrorDie(PDERROR_NO_CONVERTERS);
- }
- }
-
- /**
- * Sets the output directory
- *
- * @param string $dir the output directory
- */
- function setTargetDir($dir)
- {
- $this->targetDir = $dir;
- }
-
- /**
- * Sets the template base directory
- *
- * @param string $dir the template base directory
- * @tutorial phpDocumentor.howto.pkg#using.command-line.templatebase
- */
- function setTemplateBase($dir)
- {
- $this->templateBase = $dir;
- }
-
- /**
- * set parsing information output mode (quiet or verbose)
- *
- * If set to false, no parsing information (parsing /php/file/thisfile.php,
- * Converting etc.) will be displayed.
- * Useful for cron jobs
- * @param bool $quietMode
- */
- function setQuietMode($quietMode)
- {
- $this->quietMode = $quietMode;
- }
-
- /**
- * set display of elements marked with @access private
- *
- * If set to true, elements will be displayed
- * @param bool $parse
- */
- function setParsePrivate($parse)
- {
- $this->parsePrivate = $parse;
- }
-}
-
-/** @access private */
-function pagesort($a, $b)
-{
- return strnatcasecmp($a->parent->file,$b->parent->file);
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Io.inc b/buildscripts/PhpDocumentor/phpDocumentor/Io.inc
deleted file mode 100644
index dac36bec..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Io.inc
+++ /dev/null
@@ -1,869 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Class to handle file and user io opperations
- *
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: Io.inc,v 1.5 2005/11/20 21:20:22 cellog Exp $
- * @package phpDocumentor
- */
-/**
- * Class to handle file and user io opperations
- *
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: Io.inc,v 1.5 2005/11/20 21:20:22 cellog Exp $
- * @package phpDocumentor
- */
-class Io
-{
-
- /**
- * Holds all the options that are avaible to the cmd line interface
- * and to the different web interfaces
- */
- var $phpDocOptions;
- /**
- * Format: array(array(regexp-ready string to search for whole path,
- * regexp-ready string to search for basename of ignore strings),...)
- * @var false|array
- */
- var $ignore = false;
-
- /**
- * creates an array $this->phpDocOptions and sets program options in it.
- * Array is in the format of:
- * <pre>
- * [filename][tag][] = "f";
- * [filename][tag][] = "-file";
- * [filename][desc] "name of file to parse"
- * </pre>
- */
- function Io()
- {
- $this->phpDocOptions['filename']['tag'] = array( "-f", "--filename");
- $this->phpDocOptions['filename']['desc'] = "name of file(s) to parse ',' file1,file2. Can contain complete path and * ? wildcards";
- $this->phpDocOptions['filename']['type'] = "path";
-
- $this->phpDocOptions['directory']['tag'] = array( "-d", "--directory");
- $this->phpDocOptions['directory']['desc'] = "name of a directory(s) to parse directory1,directory2";
- $this->phpDocOptions['directory']['type'] = "path";
-
- $this->phpDocOptions['examplesdir']['tag'] = array( "-ed", "--examplesdir");
- $this->phpDocOptions['examplesdir']['desc'] = "full path of the directory to look for example files from @example tags";
- $this->phpDocOptions['examplesdir']['type'] = "path";
-
- $this->phpDocOptions['templatebase']['tag'] = array( "-tb", "--templatebase");
- $this->phpDocOptions['templatebase']['desc'] = "base location of all templates for this parse.";
- $this->phpDocOptions['templatebase']['type'] = "path";
-
- $this->phpDocOptions['target']['tag'] = array("-t", "--target");
- $this->phpDocOptions['target']['desc'] = "path where to save the generated files";
- $this->phpDocOptions['target']['type'] = "path";
-
- $this->phpDocOptions['ignore']['tag'] = array("-i", "--ignore");
- $this->phpDocOptions['ignore']['desc'] = "file(s) that will be ignored, multiple separated by ','. Wildcards * and ? are ok";
- $this->phpDocOptions['ignore']['type'] = "path";
-
- $this->phpDocOptions['ignoretags']['tag'] = array("-it", "--ignore-tags");
- $this->phpDocOptions['ignoretags']['desc'] = "tags to ignore for this parse. @package, @subpackage, @access and @ignore may not be ignored.";
- $this->phpDocOptions['ignoretags']['type'] = "value";
-
- $this->phpDocOptions['hidden']['tag'] = array("-dh", "--hidden");
- $this->phpDocOptions['hidden']['desc'] = "set equal to on (-dh on) to descend into hidden directories (directories starting with '.'), default is off";
- $this->phpDocOptions['hidden']['type'] = "value";
-
- $this->phpDocOptions['quiet']['tag'] = array("-q", "--quiet");
- $this->phpDocOptions['quiet']['desc'] = "do not display parsing/conversion messages. Useful for cron jobs on/off default off";
- $this->phpDocOptions['quiet']['type'] = "value";
-
- $this->phpDocOptions['title']['tag'] = array("-ti","--title");
- $this->phpDocOptions['title']['desc'] = "title of generated documentation, default is 'Generated Documentation'";
- $this->phpDocOptions['title']['type'] = "value";
-
- $this->phpDocOptions['help']['tag'] = array("-h", "--help");
- $this->phpDocOptions['help']['desc'] = " show this help message";
-
- $this->phpDocOptions['useconfig']['tag'] = array("-c","--useconfig");
- $this->phpDocOptions['useconfig']['desc'] = "Use a Config file in the users/ subdirectory for all command-line options";
- $this->phpDocOptions['useconfig']['type'] = "value";
-
- $this->phpDocOptions['parseprivate']['tag'] = array("-pp","--parseprivate");
- $this->phpDocOptions['parseprivate']['desc'] = "parse @internal and elements marked private with @access. Use on/off, default off";
- $this->phpDocOptions['parseprivate']['type'] = "value";
-
- $this->phpDocOptions['packageoutput']['tag'] = array("-po","--packageoutput");
- $this->phpDocOptions['packageoutput']['desc'] = "output documentation only for selected packages. Use a comma-delimited list";
- $this->phpDocOptions['packageoutput']['type'] = "value";
-
- $this->phpDocOptions['defaultpackagename']['tag'] = array("-dn","--defaultpackagename");
- $this->phpDocOptions['defaultpackagename']['desc'] = "name to use for the default package. If not specified, uses 'default'";
- $this->phpDocOptions['defaultpackagename']['type'] = "value";
-
- $this->phpDocOptions['defaultcategoryname']['tag'] = array("-dc","--defaultcategoryname");
- $this->phpDocOptions['defaultcategoryname']['desc'] = "name to use for the default category. If not specified, uses 'default'";
- $this->phpDocOptions['defaultcategoryname']['type'] = "value";
-
- $this->phpDocOptions['output']['tag'] = array("-o","--output");
- $this->phpDocOptions['output']['desc'] = "output information to use separated by ','. Format: output:converter:templatedir like \"HTML:frames:phpedit\"";
- $this->phpDocOptions['output']['type'] = "value";
-
- $this->phpDocOptions['converterparams']['tag'] = array("-cp","--converterparams");
- $this->phpDocOptions['converterparams']['desc'] = "dynamic parameters for a converter, separate values with commas";
- $this->phpDocOptions['converterparams']['type'] = "value";
-
- $this->phpDocOptions['customtags']['tag'] = array("-ct","--customtags");
- $this->phpDocOptions['customtags']['desc'] = "custom tags, will be recognized and put in tags[] instead of unknowntags[]";
- $this->phpDocOptions['customtags']['type'] = "value";
-
- $this->phpDocOptions['sourcecode']['tag'] = array("-s","--sourcecode");
- $this->phpDocOptions['sourcecode']['desc'] = "generate highlighted sourcecode for every parsed file (PHP 4.3.0+ only) on/off default off";
- $this->phpDocOptions['sourcecode']['type'] = "value";
-
- $this->phpDocOptions['javadocdesc']['tag'] = array("-j","--javadocdesc");
- $this->phpDocOptions['javadocdesc']['desc'] = "JavaDoc-compliant description parsing. Use on/off, default off (more flexibility)";
- $this->phpDocOptions['javadocdesc']['type'] = "value";
-
- $this->phpDocOptions['pear']['tag'] = array("-p","--pear");
- $this->phpDocOptions['pear']['desc'] = "Parse a PEAR-style repository (package is directory, _members are @access private) on/off default off";
- $this->phpDocOptions['pear']['type'] = "value";
-
- $this->phpDocOptions['readmeinstallchangelog']['tag'] = array("-ric","--readmeinstallchangelog");
- $this->phpDocOptions['readmeinstallchangelog']['desc'] = "Specify custom filenames to parse like README, INSTALL or CHANGELOG files";
- $this->phpDocOptions['readmeinstallchangelog']['type'] = "value";
-
- $this->phpDocOptions['general']['message'] ="You can have multiple directories and multiple files, as well as a combination of both options";
- }
-
-
- /**
- * create the help message for display on the command-line
- * @return string a string containing a help message
- */
- function displayHelpMsg()
- {
- unset($ret);
- $ret = "\n";
- foreach($this->phpDocOptions as $data)
- {
- unset($tag);
- $tag = "";
- if (isset($data['tag']))
- {
- if (is_array($data['tag'])) {
- foreach($data['tag'] as $param) {
- $tag .= "$param ";
- }
- }
- $taglen = 34;
- $outputwidth = 79;
- $tagspace = str_repeat(" ",$taglen);
- $tmp = " ".trim($tag).$tagspace;
- $tmp = substr($tmp,0,$taglen);
- $d = wordwrap(ltrim($data['desc']),($outputwidth-$taglen));
- $dt = explode("\n",$d);
- $dt[0] = $tmp .$dt[0];
- for($i=1;$i<count($dt);$i++)
- {
- $dt[$i] = $tagspace.$dt[$i];
- }
- $ret .= implode("\n",$dt)."\n\n";
-
- }
- }
- $ret .= "\n".wordwrap($data['message'],$outputwidth)."\n";
- return $ret;
- }
-
- /**
- * calls {@link file_exists()} for each value in include_path,
- * then calls {@link is_readable()} when it finds the file
- * @param string
- * @return boolean
- */
- function isIncludeable($filename)
- {
- $ip = get_include_path();
- if (PHPDOCUMENTOR_WINDOWS)
- {
- $ip = explode(';', $ip);
- } else {
- $ip = explode(':', $ip);
- }
- foreach($ip as $path)
- {
- if ($a = realpath($path . DIRECTORY_SEPARATOR . $filename))
- {
- if (is_readable($a))
- {
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Parses $_SERVER['argv'] and creates a setup array
- * @return array a setup array
- * @global array command-line arguments
- */
- function parseArgv()
- {
- global $argv;
- // defaults for setting
- $setting['hidden'] = "off";
- $setting['template'] = 'templates' . PATH_DELIMITER .'default' . PATH_DELIMITER;
-
- $valnext = "junk";
- if(isset($argv) && is_array($argv))
- {
- foreach ($argv as $cmd)
- {
- //if($cmd === 'phpdoc' || basename($cmd)==='phpdoc')
- // continue;
-
- if ($cmd == '-h' || $cmd == '--help')
- {
- echo $this->displayHelpMsg();
- die();
- }
- $setting[$valnext] = $cmd;
- foreach( $this->phpDocOptions as $name => $data )
- {
- if (!empty($data['tag']))
- {
- if (in_array($cmd,$data['tag']))
- {
- $valnext = $name;
- break;
- }
- else
- {
- $valnext = "junk";
- }
- }
- }
- if ($valnext == 'junk' && (strpos(trim($cmd),'-') === 0))
- {
- addErrorDie(PDERROR_UNKNOWN_COMMANDLINE,$cmd);
- }
- }
- } else
- {
- echo "Please use php-cli.exe in windows, or set register_argc_argv On";
- die;
- }
- /* $setting will always have at least 2 elements
- [hidden] => off
- [template] => templates/default
- */
- if (count($setting) < 3) {
- echo $this->displayhelpMsg();
- die();
- }
- return $setting;
- }
-
-
- /**
- * @return array list of files in a directory
- * @param string $directory full path to the directory you want the list of
- * @param off|on whether to list files that begin with . like .bash_history
- */
- function dirList($directory,$hidden = "off")
- {
- $directory = realpath($directory);
- $ret = false;
- if (@is_dir($directory))
- {
- $ret = array();
- $d = @dir($directory); // thanks to Jason E Sweat (jsweat@users.sourceforge.net) for fix
- while($d && ($entry=$d->read()) !== false) {
- if (strcmp($entry,".") != 0 && strcmp($entry,"..") != 0) {
- if ($hidden == "off")
- {
- if (substr($entry,0,1) == ".")
- {
- $getentry = false;
- } else {
- $getentry = true;
- }
-
- } else {
- $getentry = true;
- }
-
- if ($getentry == true)
- {
- if (is_file($directory . PATH_DELIMITER . $entry)) {
- $ret[] = $directory . PATH_DELIMITER . $entry;
- }
- if (is_dir($directory . PATH_DELIMITER . $entry)) {
- $tmp = $this->dirList($directory . PATH_DELIMITER . $entry, $hidden);
- if (is_array($tmp)) {
- foreach($tmp as $ent) {
- $ret[] = $ent;
- }
- }
- }
- }
- }
- }
- if ($d) $d->close();
- } else {
- die("directory: '$directory' not found\n");
- }
- return $ret;
- }
-
- /**
- * Retrieve common directory (case-insensitive in windows)
- *
- * takes the list of files, and returns the subdirectory they share in common,
- * so in this list:
- *
- * <code>
- * array(
- * "/dir1/dir2/subdir/dir3/filename.ext",
- * "/dir1/dir2/subdir/dir4/filename.ext",
- * "/dir1/dir2/mydir/dir5/filename.ext");
- * </code>
- *
- * getBase will return "/dir1/dir2"
- * @param array array of strings
- */
- function getBase($filelist)
- {
- $masterPath = false;
- foreach($filelist as $path)
- {
- if (!$masterPath)
- {
- $masterPath = str_replace('\\','/',dirname($path));
- } else
- {
- if (dirname($path) != $masterPath)
- {
- $mp = explode(PATH_DELIMITER, $masterPath);
- $np = explode(PATH_DELIMITER, str_replace('\\', '/', dirname($path)));
-
- if (count($np) < count($mp))
- {
- $masterPath = join($np, PATH_DELIMITER);
- } else
- {
- $test = false;
- $found = false;
- for($i=0;$i < count($mp) && $i < count($np);$i++)
- {
- if (PHPDOCUMENTOR_WINDOWS)
- {
- if (strtolower($mp[$i]) != strtolower($np[$i])) $found = $i;
- } else
- {
- if ($mp[$i] != $np[$i]) $found = $i;
- }
- }
- if ($found !== false)
- {
- $mp = array_slice($mp,0,$found);
- $masterPath = join($mp,PATH_DELIMITER);
- }
- }
- }
- }
- }
- return $masterPath;
- }
-
- /**
- * Retrieve tutorial subdirectories and their contents from the list of
- * files to parse
- * @param array array of paths (strings)
- * @return array array(filelist - tutorials, tutorials)
- */
- function getTutorials($filelist)
- {
- $list = $tutorials = array();
- foreach($filelist as $file)
- {
- if (strpos($file,'tutorials/') !== false)
- {
- $tutedir = explode('/',substr($file,strpos($file,'tutorials/')));
- array_shift($tutedir);
- if (count($tutedir) <= 3)
- {
- $res = array();
- // kludge - will need to fix for 2.0
- $res['category'] = $GLOBALS['phpDocumentor_DefaultCategoryName'];
- $res['package'] = array_shift($tutedir);
- $res['subpackage'] = '';
- if (count($tutedir) > 1)
- $res['subpackage'] = array_shift($tutedir);
- $f = array_shift($tutedir);
- $res['tutename'] = $f;
- $f = explode('.',$f);
- $res['tutetype'] = array_pop($f);
- if ($res['tutetype'] == 'ini') continue;
- $res['path'] = $file;
- if (@file_exists($file . '.ini'))
- {
- $res['ini'] = phpDocumentor_parse_ini_file($file . '.ini', true);
- } else
- {
- $res['ini'] = false;
- }
- $tutorials[] = $res;
- }
- } else $list[] = $file;
- }
- return array($list,$tutorials);
- }
-
- /**
- * @param string base directory from {@link getBase()}
- * @param array file list from {@link dirList()}
- * @return array array(filelist - README/INSTALL/CHANGELOG,
- * README/INSTALL/CHANGELOG)
- */
- function getReadmeInstallChangelog($base,$filelist)
- {
- $list = $ric = array();
- $names = $GLOBALS['_phpDocumentor_RIC_files'];
- foreach($filelist as $file)
- {
- if ((dirname($file) == $base) && in_array(strtoupper(basename($file)), $names))
- { // be sure to change $this->checkIgnore() if any other files are added here!!
- $ric[] = $file;
- } else
- {
- $list[] = $file;
- }
- }
- return array($list,$ric);
- }
-
- function getDirTree($dir, $base_dir, $ignore = array(), $hidden="off")
- {
- $allfiles = $this->dirList($dir,$hidden);
- $struc = array();
- foreach($allfiles as $file)
- {
- if ($this->checkIgnore(basename($file),dirname($file),$ignore)) continue;
- $path = substr(dirname($file),strlen(str_replace('\\','/',realpath($base_dir)))+1);
- if (!$path) $path = '/';
- $parts = pathinfo($file);
- if (!isset($parts['extension']))
- {
- $parts['extension'] = '';
- }
- $struc[$path][] = array(
- 'file' => $parts['basename'],
- 'ext' => $parts['extension'],
- 'path' => $file);
- }
- uksort($struc,'strnatcasecmp');
- foreach($struc as $key => $ind)
- {
- usort($ind,'Ioinc_sortfiles');
- $struc[$key] = $ind;
- $save = $key;
- if ($key != '/')
- {
- $key = explode('/',$key);
- while (count($key))
- {
- array_pop($key);
- if (isset($struc[join('/',$key)]))
- {
- $struc[join('/',$key)][substr($save,strlen(join('/',$key)) + 1)] = $ind;
- unset($struc[$save]);
- }
- }
- }
- }
- foreach($struc as $key => $ind)
- {
- if ($key != '/')
- {
- if (count(explode('/',$key)) == 1)
- {
- $struc['/'][$key] = $struc[$key];
- unset($struc[$key]);
- }
- }
- }
- $tempstruc = $struc;
- unset($tempstruc['/']);
- $leftover_dirs = array_keys($tempstruc);
- $splitdirs = array();
- foreach($leftover_dirs as $dir)
- {
- $splitdirs[] = explode('/',$dir);
- }
- $leftover_dirs = array();
-
- foreach($splitdirs as $dir)
- {
- $save = join($dir,'/');
- $struc['/'] = setup_dirs($struc['/'], $dir, $tempstruc[$save]);
- unset($struc[$save]);
- }
- @uksort($struc['/'],'Ioinc_mystrucsort');
- return $struc;
- }
-
- /**
- * Reads a file and returns it as a string
- * Does basic error checking
- *
- * file extensions are set in {@link phpdoc.inc}
- *
- * @global array PHP File extensions, used to validate that $path is a PHP File
- * @global array PHP File extensions in a CVS repository, used to validate that $path is a PHP File
- * @param string $path
- */
- function readPhpFile($path, $quietMode = false)
- {
- global $_phpDocumentor_cvsphpfile_exts, $_phpDocumentor_phpfile_exts;
- // tiberiusblue addition
- $cvsExt = $_phpDocumentor_cvsphpfile_exts;
- $ext = $_phpDocumentor_phpfile_exts;
- if (file_exists($path))
- {
- if (is_file($path))
- {
- // check extension
- $tmp = explode(".",$path);
- // tiberiusblue addition
- $tmp2 = $tmp;
- if (in_array(array_pop($tmp),$ext))
- {
- phpDocumentor_out(" -- Parsing file\n");
- flush();
- $fp = fopen($path,"r");
- $ret = fread($fp,filesize($path));
- fclose($fp);
- return $ret;
- } elseif (in_array(array_pop($tmp2),$cvsExt))
- {
- phpDocumentor_out(" CVS file [EXPERIMENTAL]\n");
- flush();
- $fp = fopen($path,"r");
- $ret = fread($fp,filesize($path));
- fclose($fp);
- $ret = strstr($ret,"<?");
- $ret = substr($ret,0,strpos($ret,"@\n"));
- $ret = str_replace("@@","@",$ret);
- return $ret;
- } else
- {
- phpDocumentor_out(" -- File not parsed, not a php file\n");
- flush();
- }
- } else {
- phpDocumentor_out(" -- Unable to read file, not a file\n");
- flush();
- }
- } else {
- phpDocumentor_out(" -- Unable to read file, file does not exist\n");
- flush();
- }
- }
-
- /**
- * Tell whether to ignore a file or a directory
- * allows * and ? wildcards
- *
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @param string $file just the file name of the file or directory,
- * in the case of directories this is the last dir
- * @param string $path the full path
- * @param array $ignore
- * @return bool true if $path should be ignored, false if it should not
- */
- function checkIgnore($file,$path,$ignore,$ignore_no_ext = true)
- {
- global $_phpDocumentor_RIC_files;
- $path = realpath($path);
- if (!count($ignore)) return false;
- if ($ignore_no_ext &&
- !in_array(strtoupper($file), $_phpDocumentor_RIC_files))
- {
- if (!is_numeric(strpos($file,'.'))) return true;
- }
- if (!isset($this->ignore) || !$this->ignore)
- {
- $this->_setupIgnore($ignore);
- if (!$this->ignore)
- {
- return false;
- }
- }
- if (is_array($this->ignore))
- {
- foreach($this->ignore as $match)
- {
- // match is an array if the ignore parameter was a /path/to/pattern
- if (is_array($match))
- {
- // check to see if the path matches with a path delimiter appended
- preg_match('/^' . strtoupper($match[0]).'$/', strtoupper($path) . PATH_DELIMITER,$find);
- if (!count($find))
- {
- // check to see if it matches without an appended path delimiter
- preg_match('/^' . strtoupper($match[0]).'$/', strtoupper($path), $find);
- }
- if (count($find))
- {
- // check to see if the file matches the file portion of the regex string
- preg_match('/^' . strtoupper($match[1]).'$/', strtoupper($file), $find);
- if (count($find))
- {
- return true;
- }
- }
- // check to see if the full path matches the regex
- preg_match('/^' . strtoupper($match[0]).'$/',
- strtoupper($path . DIRECTORY_SEPARATOR . $file), $find);
- if (count($find))
- {
- return true;
- }
- } else
- {
- // ignore parameter was just a pattern with no path delimiters
- // check it against the path
- preg_match('/^' . strtoupper($match).'$/', strtoupper($path), $find);
- if (count($find))
- {
- return true;
- }
- // check it against the file only
- preg_match('/^' . strtoupper($match).'$/', strtoupper($file), $find);
- if (count($find))
- {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- /**
- * Construct the {@link $ignore} array
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @param array strings of files/paths/wildcards to ignore
- * @access protected
- */
- function _setupIgnore($ignore)
- {
- $ig = array();
- if (is_array($ignore))
- {
- for($i=0; $i<count($ignore);$i++)
- {
- $ignore[$i] = strtr($ignore[$i], "\\", "/");
- $ignore[$i] = str_replace('//','/',$ignore[$i]);
-
- if (!empty($ignore[$i]))
- {
- if (!is_numeric(strpos($ignore[$i],PATH_DELIMITER)))
- {
- $ig[] = $this->getRegExpableSearchString($ignore[$i]);
- } else
- {
- if (basename($ignore[$i]) . PATH_DELIMITER == $ignore[$i])
- $ig[] = $this->getRegExpableSearchString($ignore[$i]);
- else
- $ig[] = array($this->getRegExpableSearchString($ignore[$i]),$this->getRegExpableSearchString(basename($ignore[$i])));
- }
- }
- }
- if (count($ig)) $this->ignore = $ig;
- } else $this->ignore = false;
- }
-
- /**
- * Converts $s into a string that can be used with preg_match
- * @param string $s string with wildcards ? and *
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @return string converts * to .*, ? to ., etc.
- */
- function getRegExpableSearchString($s)
- {
- $y = '\/';
- if (DIRECTORY_SEPARATOR == '\\')
- {
- $y = '\\\\';
- }
- $s = str_replace('/', DIRECTORY_SEPARATOR, $s);
- $x = strtr($s, array('?' => '.','*' => '.*','.' => '\\.','\\' => '\\\\','/' => '\\/',
- '[' => '\\[',']' => '\\]','-' => '\\-'));
- if (strpos($s, DIRECTORY_SEPARATOR) !== false &&
- strrpos($s, DIRECTORY_SEPARATOR) === strlen($s) - 1)
- {
- $x = "(?:.*$y$x?.*|$x.*)";
- }
- return $x;
- }
-
- /**
- * Removes files from the $dir array that do not match the search string in
- * $match
- * @param array $dir array of filenames (full path)
- * @param string $match search string with wildcards
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @return string|array listing of every file in a directory that matches
- * the search string
- */
- function removeNonMatches($dir, $match)
- {
- $match = $this->getRegExpableSearchString($match);
- $nodir = false;
- if (!is_array($dir))
- {
- $dir = array($dir);
- $nodir = true;
- }
- foreach($dir as $i => $file)
- {
- preg_match('/^'.$match.'$/',basename($file),$find);
- if (!count($find)) unset($dir[$i]);
- }
- if ($nodir) return $dir[0];
- return $dir;
- }
-
- /**
- * Take a filename with wildcards and return all files that match the
- * wildcards
- * @param string $file a full path from the -f command-line parameter, with
- * potential * and ? wildcards.
- * @return mixed if $file contains wildcards, returns an array of matching
- * files, otherwise returns false
- * @author Greg Beaver <cellog@users.sourceforge.net>
- */
- function getAllFiles($file)
- {
- $path = realpath(dirname($file));
- $file = basename($file);
- // any wildcards?
- if (is_numeric(strpos($file,'?')) || is_numeric(strpos($file,'*')))
- {
- $files = $this->dirList($path);
- $a = $this->removeNonMatches($files,$file);
- return $a;
- }
- return false;
- }
-}
-
-/**#@+
- * Sorting functions for the file list
- * @param string
- * @param string
- */
-function Ioinc_sortfiles($a, $b)
-{
- return strnatcasecmp($a['file'],$b['file']);
-}
-
-function Ioinc_mystrucsort($a, $b)
-{
- if (is_numeric($a) && is_string($b)) return 1;
- if (is_numeric($b) && is_string($a)) return -1;
- if (is_numeric($a) && is_numeric($b))
- {
- if ($a > $b) return 1;
- if ($a < $b) return -1;
- if ($a == $b) return 0;
- }
- return strnatcasecmp($a,$b);
-}
-/**#@-*/
-
-/**
- * Recursively add all the subdirectories of $contents to $dir without erasing anything in
- * $dir
- * @param array
- * @param array
- * @return array processed $dir
- */
-function set_dir($dir,$contents)
-{
- while(list($one,$two) = each($contents))
- {
- if (isset($dir[$one]))
- {
- $dir[$one] = set_dir($dir[$one],$contents[$one]);
- } else $dir[$one] = $two;
- }
- return $dir;
-}
-
-/**
- * Recursively move contents of $struc into associative array
- *
- * The contents of $struc have many indexes like 'dir/subdir/subdir2'.
- * This function converts them to
- * array('dir' => array('subdir' => array('subdir2')))
- * @param array struc is array('dir' => array of files in dir,'dir/subdir' => array of files in dir/subdir,...)
- * @param array array form of 'dir/subdir/subdir2' array('dir','subdir','subdir2')
- * @return array same as struc but with array('dir' => array(file1,file2,'subdir' => array(file1,...)))
- */
-function setup_dirs($struc,$dir,$contents)
-{
- if (!count($dir))
- {
- foreach($contents as $dir => $files)
- {
- if (is_string($dir))
- {
- if (strpos($dir,'/'))
- {
- $test = true;
- $a = $contents[$dir];
- unset($contents[$dir]);
- $b = explode('/',$dir);
- $c = array_shift($b);
- if (isset($contents[$c]))
- {
- $contents[$c] = set_dir($contents[$c],setup_dirs(array(),$b,$a));
- } else $contents[$c] = setup_dirs(array(),$b,$a);
- }
- }
- }
- return $contents;
- }
- $me = array_shift($dir);
- if (!isset($struc[$me])) $struc[$me] = array();
- $struc[$me] = setup_dirs($struc[$me],$dir,$contents);
- return $struc;
-}
-
-if (!function_exists('get_include_path')) {
-function get_include_path()
-{
- return ini_get('include_path');
-}
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/LinkClasses.inc b/buildscripts/PhpDocumentor/phpDocumentor/LinkClasses.inc
deleted file mode 100644
index d122f0d4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/LinkClasses.inc
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Linking to element documentation is performed by the classes in this file.
- *
- * abstractLink descendants contain enough information to differentiate every
- * documentable element, and so can be converted to a link string by
- * {@link Converter::returnSee()}
- * @package phpDocumentor
- * @subpackage Links
- */
-
-/**
- * linking classes parent
- * @package phpDocumentor
- * @subpackage Links
- */
-class abstractLink
-{
- /**#@+ @var string */
- var $path;
- /**
- * phpdoc alias _phpdoc_inc for phpdoc.inc
- */
- var $fileAlias = '';
- /**
- * element type linked to.
- * can only be a documentable element
- */
- var $type = '';
- var $name = '';
- var $category = '';
- var $package = '';
- var $subpackage = '';
- /**#@-*/
-
- /**
- * @param string full path to file containing element
- * @param string page name, as configured by {@link Parser::parse}
- * @param string element name
- * @param string package element is in
- * @param string subpackage element is in
- * @param string optional category that documentation is in
- */
- function addLink($path, $fileAlias, $name, $package, $subpackage, $category = false)
- {
- $this->path = $path;
- $this->fileAlias = $fileAlias;
- $this->name = $name;
- $this->category = $category;
- $this->package = $package;
- $this->subpackage = $subpackage;
- }
-}
-
-/**
- * procedural page link
- * @package phpDocumentor
- * @subpackage Links
- */
-class pageLink extends abstractLink
-{
- /** @var string */
- var $type = 'page';
-}
-
-/**
- * function link
- * @package phpDocumentor
- * @subpackage Links
- */
-class functionLink extends abstractLink
-{
- /** @var string */
- var $type = 'function';
-}
-
-/**
- * define link
- * @package phpDocumentor
- * @subpackage Links
- */
-class defineLink extends abstractLink
-{
- /** @var string */
- var $type = 'define';
-}
-
-/**
- * global variable link
- * @package phpDocumentor
- * @subpackage Links
- */
-class globalLink extends abstractLink
-{
- /** @var string */
- var $type = 'global';
-}
-
-/**
- * class link
- * @package phpDocumentor
- * @subpackage Links
- */
-class classLink extends abstractLink
-{
- /** @var string */
- var $type = 'class';
-}
-
-/**
- * method link
- * @package phpDocumentor
- * @subpackage Links
- */
-class methodLink extends abstractLink
-{
- /** @var string */
- var $type = 'method';
- /** @var string */
- var $class = '';
-
- /**
- * @param string class name
- * @param string full path to file containing element
- * @param string page name, as configured by {@link Parser::parse}
- * @param string element name
- * @param string package element is in
- * @param string subpackage element is in
- */
- function addLink($class, $path ,$fileAlias,$name,$package,$subpackage, $category = false)
- {
- $this->class = $class;
- abstractLink::addLink($path, $fileAlias,$name,$package,$subpackage, $category);
- }
-}
-
-/**
- * class variable link
- * @package phpDocumentor
- * @subpackage Links
- */
-class varLink extends methodLink
-{
- /** @var string */
- var $type = 'var';
-}
-
-/**
- * class constant link
- * @package phpDocumentor
- * @subpackage Links
- */
-class constLink extends methodLink
-{
- /** @var string */
- var $type = 'const';
-}
-
-/**
- * tutorial link
- * @package phpDocumentor
- * @subpackage Links
- */
-class tutorialLink extends abstractLink
-{
- /**#@+ @var string */
- var $type = 'tutorial';
- var $section = '';
- var $title = false;
- /**#@-*/
-
- /**
- * @param string section/subsection name
- * @param string full path to file containing element
- * @param string page name, as configured by {@link Parser::parse}
- * @param string element name
- * @param string package element is in
- * @param string subpackage element is in
- * @param string title of tutorial
- */
- function addLink($section,$path,$name,$package,$subpackage,$title = false, $category = false)
- {
- $this->section = $section;
- $this->title = $title;
- parent::addLink($path,'',$name,$package,$subpackage, $category);
- }
-}
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc b/buildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc
deleted file mode 100644
index 1b71b6b7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc
+++ /dev/null
@@ -1,387 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Data structures used in parsing XML DocBook-based tutorials
- *
- * Conversion of DocBook-based tutorials is performed using special
- * {@link Converter} class methods. By default, these methods simply retrieve
- * simple rules for replacement of tags and slight re-ordering from the
- * options.ini file present for every template.
- *
- * In future versions, there may be utilization of xslt or other more powerful
- * protocols. However, for most situations, the power of these classes will
- * be more than sufficient to handle very complex documentation.
- *
- * Note that an entire tutorial is contained in a single parserXMLDocBookTag,
- * matching the document model for DocBook. The top-level tag, <refentry>,
- * contains every other tag and all text.
- * @tutorial tutorials.pkg
- * @package phpDocumentor
- * @subpackage Tutorial
- */
-/**
- * Represents <![CDATA[ ]]> sections.
- *
- * These sections are interpreted as plain text
- * @package phpDocumentor
- * @subpackage Tutorial
- */
-class parserCData extends parserStringWithInlineTags
-{
- /**
- * @uses Converter::getCData() convert contents to text
- * @param Converter
- */
- function Convert(&$c, $postprocess = true)
- {
- $val = $this->value;
- if ($postprocess)
- foreach($this->value as $key => $value)
- {
- if (is_string($value)) $this->value[$key] = $c->getCData($value);
- }
- $this->cache = false;
- $x = parent::Convert($c, false);
- $this->value = $val;
- return $x;
- }
-}
-/**
- * a standard XML DocBook Tag
- *
- * This class is designed to represent all DocBook tags. It is intelligent
- * enough to understand the <title> tag, and also the <refname> tag for
- * as title for <refentry>
- * @since 1.2
- * @package phpDocumentor
- * @subpackage Tutorial
- */
-class parserXMLDocBookTag extends parserStringWithInlineTags
-{
- /**
- * Attributes from the XML tag
- *
- * Format: array(attrname => attrvalue, attrname => attrvalue,...)
- * @var array
- */
- var $attributes = array();
- /**
- * Name of the tag
- * @var string
- */
- var $name;
- /**#@+ @access private */
- /** @var parserCData */
- var $_cdata;
- /** @var parserTag */
- var $_title;
- /** @var parserIdLineTag */
- var $_id;
- /**
- * Set to <refpurpose> in <refsynopsisdiv>
- * @var parserTag
- */
- var $_description;
- /**#@-*/
- /**
- * @param string tag name
- */
- function parserXMLDocBookTag($name)
- {
- $this->name = $name;
- }
-
- /**
- * @param Converter
- * @param boolean
- * @uses Converter::TranslateTag() Calls this to enclose the contents of the
- * DocBook tag based on the values in template options.ini file
- */
- function Convert(&$c, $postprocess = true)
- {
- $value = parent::Convert($c, $postprocess);
- $simvalue = parent::Convert($c, false);
- foreach($this->attributes as $a => $v)
- {
- $this->attributes[$a] = (is_string($v) ? $v : $v->Convert($c, $postprocess));
- }
- if (isset($this->_title))
- {
- list($this->attributes,$value) = $c->ConvertTitle($this->name, $this->attributes, $this->_title->Convert($c, $postprocess), $value);
- }
- return $c->TranslateTag($this->name,$this->attributes,$value,$simvalue);
- }
-
- /**
- * Begin a new CData section
- * @see addCData()
- */
- function startCData()
- {
- $this->_cdata = new parserCData;
- }
-
- /**
- * Adds {@link $_cdata} to {@link $value}
- */
- function endCData()
- {
- $this->value[] = $this->_cdata;
- unset($this->_cdata);
- }
-
- /**
- * Retrieve either the table of contents index, or the location that
- * the TOC will go
- * @see setTOC()
- * @param false|integer either an index of the {@}toc} tag in $this->value
- * or false, if the next index value of $this->value
- * is needed
- */
- function getTOC($state = false)
- {
- if ($state !== false) return $this->value[$state];
- return count($this->value);
- }
-
- /**
- * @param integer index of the TOC in $this->value
- * @param parserTocInlineTag
- */
- function setTOC($state, $val)
- {
- $this->value[$state] = $val;
- }
-
- /**
- * add a word to CData
- * @param string
- */
- function addCData($word)
- {
- $this->_cdata->add($word);
- }
-
- /**
- * Add an xml tag attribute name="value" pair
- *
- * if the attribute is id, value must be a {@link parserIdInlineTag}
- * @param string attribute name
- * @param string|parserIdInlineTag value of attribute
- */
- function addAttribute($name,$value)
- {
- $this->attributes[$name] = $value;
- if ($name == 'id')
- {
- // fix 1153593
- if (is_string($value))
- {
- addWarning(PDERROR_ID_MUST_BE_INLINE,$this->name,$value,$this->name,$value);
- } else {
- $this->setId($value);
- }
- }
- }
-
- /**
- * Set the title of a DocBook tag section.
- *
- * For most DocBook tags, the title is represented with a <title></title>
- * tag pair. The <refentry> top-level tag is a little different. Instead
- * of using <title></title>, phpDocumentor uses the contents of the
- * <refname> tag in the <refnamediv> tag
- * @param parserXMLDocBookTag the title element
- */
- function setTitle($title)
- {
- $this->_title = $title;
- }
-
- /**
- * If the id attribute is present, this method will set its id
- * @param parserIdInlineTag
- */
- function setId($id)
- {
- $this->_id = $id;
- }
-
- /**
- * Return converter-specific formatting of ID.
- *
- * Passes $c to {@link parserIdInlineTag::Convert()}
- * @param Converter
- * @return string
- */
- function getId(&$c)
- {
- if ($this->_id) return trim($this->_id->Convert($c));
- }
-
- /**
- * Determine whether the docbook element has a title
- * @return boolean
- */
- function hasTitle()
- {
- return isset($this->_title);
- }
-
- /**
- * Retrieve Converter-specific formatting of the title of this element
- * @return string
- * @param Converter
- */
- function getTitle(&$c)
- {
- if ($this->name == 'refentry')
- {
- foreach($this->value as $tag)
- {
- if (is_object($tag) && $tag->name == 'refnamediv')
- {
- return $tag->getTitle($c);
- }
- }
- }
- if ($this->name == 'refnamediv')
- {
- foreach($this->value as $tag)
- {
- if (is_object($tag) && $tag->name == 'refname')
- {
- $t = new parserStringWithInlineTags;
- foreach($tag->value as $val) $t->add($val);
- $this->_title = $t;
- }
- if (is_object($tag) && $tag->name == 'refpurpose')
- {
- $t = new parserStringWithInlineTags;
- foreach($tag->value as $val) $t->add($val);
- $this->_description = $t;
- }
- }
- }
- if (isset($this->_title))
- return $this->_title->Convert($c);
- if (is_object($this->value[0])) return $this->value[0]->getTitle($c);
- if (isset($this->value[1]))
- if (is_object($this->value[1])) return $this->value[1]->getTitle($c);
- return '';
- }
-
- /**
- * Retrieve the contents of a subsection
- *
- * This method uses the $_id members of nested docbook tags to retrieve
- * the section defined by $subsection
- * @param Converter
- * @param string converter-specific subsection
- */
- function getSubsection(&$c,$subsection)
- {
- if (!is_object($this->_id)) {
- return false;
- }
- $search = phpDocumentor_clone($this->_id);
- if (is_string($this->_id)) return false;
- if (phpDocumentor_get_class($search) != 'parseridinlinetag') return false;
- $search->id = $subsection;
- foreach($this->value as $el)
- {
- if (phpDocumentor_get_class($el) == 'parserxmldocbooktag')
- {
- if ($el->getId($c) == $search->Convert($c))
- {
- return $el;
- } elseif ($a = $el->getSubsection($c,$subsection))
- {
- return $a;
- }
- }
- }
- return false;
- }
-
- /**
- * Add contents to this tag.
- *
- * There are four kinds of data in a DocBook tutorial:
- * 1. <b>tags</b> - normal tags like <refentry>
- * 2. <b>entities</b> - normal entities like &rdquo;
- * 3. <b><![CDATA[</b> - character data that should not be interpreted,
- * like <programlisting> contents
- * 4. <b>text</b> - normal non-markup text
- *
- * All four kinds of data are added here
- * @param parserEntity|parserCData|parserXMLDocBookTag|string nested tag,
- * entity, or text
- */
- function add($el)
- {
- if (is_string($el)) return parent::add($el);
- if (phpDocumentor_get_class($el) == 'parserxmldocbooktag')
- {
- if ($el->name == 'title')
- {
- $this->setTitle($el);
- } else return parent::add($el);
- } else return parent::add($el);
- }
-}
-
-/**
- * a standard entity like &rdquo;
- *
- * This class is designed to represent all DocBook entities.
- * @since 1.2
- * @package phpDocumentor
- * @subpackage Tutorial
- */
-class parserEntity
-{
- /**
- * @param string entity name
- */
- function parserEntity($name)
- {
- $this->value = $name;
- }
-
- /**
- * @uses Converter::TranslateEntity() convert contents to text
- * @param Converter
- * @return string
- */
- function Convert(&$c, $postprocess = true)
- {
- if ($postprocess)
- return $c->TranslateEntity($this->value);
- else
- {
- $trans_tbl = get_html_translation_table (HTML_ENTITIES);
- $trans_tbl = array_flip ($trans_tbl);
- $ret = strtr ('&'.$this->value.';', $trans_tbl);
- return $ret;
- }
- }
-}
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Parser.inc b/buildscripts/PhpDocumentor/phpDocumentor/Parser.inc
deleted file mode 100644
index 55e67685..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Parser.inc
+++ /dev/null
@@ -1,3185 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * @package phpDocumentor
- * @subpackage Parsers
- */
-/** used when a backslash is encountered in parsing a string or other escapable entity */
-define("PARSER_EVENT_ESCAPE" , 900);
-/** used when a backslash is encountered in parsing a string or other escapable entity */
-define("STATE_ESCAPE" , 1000);
-
-/** Class published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_CLASS" , 800);
-/** DocBlock published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_DOCBLOCK" , 801);
-/** Function published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_FUNCTION" , 802);
-/** Class Variable published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_VAR" , 803);
-/** New File (page) published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_PAGE" , 804);
-/** Constant (define) published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_DEFINE" , 805);
-/** Class Constant published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_CONST" , 806);
-/** @deprecated */
-define("PHPDOCUMENTOR_EVENT_MESSAGE" , 807);
-/** use to inform IntermediateParser of a new element being parsed */
-define("PHPDOCUMENTOR_EVENT_NEWSTATE" , 808);
-/**
- * used to inform phpDocumentor_IntermediateParser that the current file has been completely parsed.
- * Render then flushes all buffers for functions/classes/defines/includes on the current page
- * @see phpDocumentor_IntermediateParser::HandleEvent()
- */
-define("PHPDOCUMENTOR_EVENT_END_PAGE" , 808);
-/** Package-level page published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_PACKAGEPAGE" , 809);
-/** Include (include/require/include_once/include_once) published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_INCLUDE" , 810);
-/** Tutorial published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_TUTORIAL" , 811);
-/** Contents of README/INSTALL/CHANGELOG files published to IntermediateParser with this event */
-define("PHPDOCUMENTOR_EVENT_README_INSTALL_CHANGELOG" , 812);
-
-/** use to inform ErrorTracker of a new file being parsed */
-define("PHPDOCUMENTOR_EVENT_NEWFILE" , 811);
-/** use to inform ErrorTracker of the next line number being parsed */
-define("PHPDOCUMENTOR_EVENT_NEWLINENUM" , 812);
-/** used when a global variable definition is encountered in the source */
-define("PHPDOCUMENTOR_EVENT_GLOBAL" , 813);
-/** used when a docblock template is encountered in the source */
-define("PHPDOCUMENTOR_EVENT_DOCBLOCK_TEMPLATE" , 814);
-/** used when a docblock template is encountered in the source */
-define("PHPDOCUMENTOR_EVENT_END_DOCBLOCK_TEMPLATE" , 815);
-/** used when double quotation mark (") encountered in parsing */
-define("PARSER_EVENT_QUOTE" , 101);
-/** currently parsing a quote */
-define("STATE_QUOTE" , 201);
-
-/** { encountered in parsing a function or php code */
-define("PARSER_EVENT_LOGICBLOCK" , 102);
-/** currently parsing a { } block */
-define("STATE_LOGICBLOCK" , 202);
-
-/** used for the beginning of parsing, before first < ? php encountered */
-define("PARSER_EVENT_NOEVENTS" , 103);
-/** out of < ? php tag */
-define("STATE_NOEVENTS" , 203);
-
-/** used when long comment /x x/ where x is an asterisk is encountered in parsing */
-define("PARSER_EVENT_COMMENTBLOCK" , 104);
-/** currently parsing a long comment /x x/ where x is an asterisk */
-define("STATE_COMMENTBLOCK" , 204);
-
-/** used when short comment // is encountered in parsing */
-define("PARSER_EVENT_COMMENT" , 105);
-/** currently parsing a short comment // */
-define("STATE_COMMENT" , 205);
-
-/** used when php code processor instruction (< ? php) is encountered in parsing */
-define("PARSER_EVENT_PHPCODE" , 106);
-/** currently parsing php code */
-define("STATE_PHPCODE" , 206);
-
-/** used when a define statement is encountered in parsing */
-define("PARSER_EVENT_DEFINE" , 107);
-/** currently parsing a define statement */
-define("STATE_DEFINE" , 207);
-
-/** used when a define statement opening parenthesis is encountered in parsing */
-define("PARSER_EVENT_DEFINE_PARAMS" , 108);
-/** currently parsing the stuff in ( ) of a define statement */
-define("STATE_DEFINE_PARAMS" , 208);
-
-/** used when a function statement opening parenthesis is encountered in parsing */
-define("PARSER_EVENT_FUNCTION_PARAMS" , 109);
-/** currently parsing the stuff in ( ) of a function definition */
-define("STATE_FUNCTION_PARAMS" , 209);
-
-/** used when a single quote (') is encountered in parsing */
-define("PARSER_EVENT_SINGLEQUOTE" , 110);
-/** currently parsing a string enclosed in single quotes (') */
-define("STATE_SINGLEQUOTE" , 210);
-
-/** used when a class definition is encountered in parsing */
-define("PARSER_EVENT_CLASS" , 111);
-/** currently parsing a class definition */
-define("STATE_CLASS" , 211);
-/** used to tell Render that a class has been completely parsed, and to flush buffers */
-define("STATE_END_CLASS" , 311);
-
-/** used when a DocBlock is encountered in parsing */
-define("PARSER_EVENT_DOCBLOCK" , 112);
-/** currently parsing a DocBlock */
-define("STATE_DOCBLOCK" , 212);
-
-/** used when a @tag is encountered in DocBlock parsing */
-define("PARSER_EVENT_DOCKEYWORD" , 113);
-/** currently parsing a @tag in a DocBlock */
-define("STATE_DOCKEYWORD" , 213);
-
-/** used when a <email@address> is encountered in parsing an @author tag*/
-define("PARSER_EVENT_DOCKEYWORD_EMAIL" , 114);
-/** currently parsing an email in brackets in an @author tag of a DocBlock */
-define("STATE_DOCKEYWORD_EMAIL" , 214);
-
-/** used when an array definition is encountered in parsing */
-define("PARSER_EVENT_ARRAY" , 115);
-/** currently parsing an array */
-define("STATE_ARRAY" , 215);
-
-/** used when a var statement is encountered in parsing a class definition */
-define("PARSER_EVENT_VAR" , 116);
-/** currently parsing a Class variable */
-define("STATE_VAR" , 216);
-
-/** used when a function definition is encountered in parsing */
-define("PARSER_EVENT_FUNCTION" , 117);
-/** currently parsing a Function or Method */
-define("STATE_FUNCTION" , 217);
-
-/** used when a ? > (with no space) is encountered in parsing */
-define("PARSER_EVENT_OUTPHP" , 118);
-/** currently out of php code */
-define("STATE_OUTPHP" , 218);
-
-/** used when an inline {@tag} is encountered in parsing a DocBlock */
-define("PARSER_EVENT_INLINE_DOCKEYWORD" , 119);
-/** currently parsing an inline tag like { @link} in a DocBlock */
-define("STATE_INLINE_DOCKEYWORD" , 219);
-
-/** used when a define statement's opening parenthesis is encountered in parsing */
-define("PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS" , 120);
-/** currently parsing an inner parenthetical statement of a define( ) */
-define("STATE_DEFINE_PARAMS_PARENTHESIS" , 220);
-
-define("PARSER_EVENT_END_STATEMENT", 121);
-
-/** used when a <<< is encountered in parsing */
-define("PARSER_EVENT_EOFQUOTE" , 122);
-/** currently parsing a string defined using Perl <<< */
-define("STATE_EOFQUOTE" , 222);
-
-/** used when an include/require/include_once/include_once statement is encountered in parsing */
-define("PARSER_EVENT_INCLUDE" , 123);
-/** currently parsing an include/require/include_once/include_once */
-define("STATE_INCLUDE" , 223);
-
-/** used when an opening parenthesis of an include/require/include_once/include_once statement is encountered in parsing */
-define("PARSER_EVENT_INCLUDE_PARAMS" , 124);
-/** currently parsing the stuff in ( ) of a define statement */
-define("STATE_INCLUDE_PARAMS" , 224);
-
-/** used when an inner ( ) is encountered while parsing an include/require/include_once/include_once statement */
-define("PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS" , 125);
-/** currently parsing an inner parenthetical statement of an include/includeonce/require/requireonce( ) */
-define("STATE_INCLUDE_PARAMS_PARENTHESIS" , 225);
-
-/** used when parsing the desc part of a docblock */
-define("PARSER_EVENT_DESC" , 126);
-/** currently parsing the desc part of a docblock */
-define("STATE_DESC" , 226);
-
-/** used when parsing the @tag block of a docblock */
-define("PARSER_EVENT_TAGS" , 127);
-/** currently parsing the @tag block of a docblock */
-define("STATE_TAGS" , 227);
-
-/** used when parsing a global variable declaration */
-define("PARSER_EVENT_DEFINE_GLOBAL" , 128);
-/** currently parsing a global variable declaration */
-define("STATE_GLOBAL" , 228);
-
-/** used when parsing the default value in a global variable declaration */
-define("PARSER_EVENT_GLOBAL_VALUE" , 129);
-/** currently parsing the default value in a global variable declaration */
-define("STATE_GLOBAL_VALUE" , 229);
-
-/** used when parsing a "global $var1, $var2;" declaration in a function */
-define("PARSER_EVENT_FUNC_GLOBAL" , 130);
-/** currently parsing a "global $var1, $var2;" declaration in a function */
-define("STATE_FUNC_GLOBAL" , 230);
-
-/** used when parsing a "static $var1, $var2;" declaration in a function */
-define("PARSER_EVENT_STATIC_VAR" , 131);
-/** currently parsing a "static $var1, $var2;" declaration in a function */
-define("STATE_STATIC_VAR" , 231);
-
-/** used when parsing the value in a "static $var1 = x" declaration in a function */
-define("PARSER_EVENT_STATIC_VAR_VALUE" , 132);
-/** currently parsing the value in a "static $var1 = x" declaration in a function */
-define("STATE_STATIC_VAR_VALUE" , 232);
-
-/** used when encountering a /**#@+ comment marking a new docblock template */
-define("PARSER_EVENT_DOCBLOCK_TEMPLATE" , 133);
-/** currently parsing the value in a "static $var1 = x" declaration in a function */
-define("STATE_DOCBLOCK_TEMPLATE" , 233);
-
-/** used when encountering a /**#@-* / comment (no space) marking the end of using a docblock template */
-define("PARSER_EVENT_END_DOCBLOCK_TEMPLATE" , 134);
-/** currently parsing the value in a "static $var1 = x" declaration in a function */
-define("STATE_END_DOCBLOCK_TEMPLATE" , 234);
-
-/** used by the {@link HighlightParser} only, when a method starts */
-define("PARSER_EVENT_METHOD" , 135);
-/** currently parsing a method using the {@link HighlightParser} */
-define("STATE_METHOD" , 235);
-
-/** used by the {@link HighlightParser} only, when a method body is parsed */
-define("PARSER_EVENT_METHOD_LOGICBLOCK" , 136);
-/** currently parsing the method body using the {@link HighlightParser} */
-define("STATE_METHOD_LOGICBLOCK" , 236);
-
-/** used by the {@link HighlightParser} only, when ->var or ->function() is encountered in a method */
-define("PARSER_EVENT_CLASS_MEMBER" , 137);
-/** currently parsing a class member using the {@link HighlightParser} */
-define("STATE_CLASS_MEMBER" , 237);
-
-/** used by the {@link HighlightParser} only, when {$var} is encountered in a string */
-define("PARSER_EVENT_QUOTE_VAR" , 138);
-/** currently parsing a {$encapsed_var} using the {@link HighlightParser} */
-define("STATE_QUOTE_VAR" , 238);
-
-/** used when parsing an access modifier */
-define("PARSER_EVENT_ACCESS_MODIFIER" , 139);
-/** currently parsing an access modifier */
-define("STATE_ACCESS_MODIFIER" , 239);
-
-/** used when a class implements interfaces */
-define("PARSER_EVENT_IMPLEMENTS" , 140);
-/** currently parsing an implements clause */
-define("STATE_IMPLEMENTS" , 240);
-
-/** used when a class implements interfaces */
-define("PARSER_EVENT_CLASS_CONSTANT" , 141);
-/** currently parsing a class constant */
-define("STATE_CLASS_CONSTANT" , 241);
-
-/** used when a variable value is an array */
-define("PARSER_EVENT_VAR_ARRAY" , 142);
-/** currently parsing a variable value is an array */
-define("STATE_VAR_ARRAY" , 242);
-
-/** used when a comment is found in a variable array value */
-define("PARSER_EVENT_VAR_ARRAY_COMMENT" , 143);
-/** currently parsing a comment in a variable array value */
-define("STATE_VAR_ARRAY_COMMENT" , 243);
-
-if (!defined('T_INTERFACE'))
-{
- define('T_INTERFACE', 'foo');
- if (!defined('T_CONST')) {
- define('T_CONST', 'foo');
- }
- define('T_ABSTRACT', 'foo');
- define('T_PRIVATE', 'foo');
- define('T_PUBLIC', 'foo');
- define('T_PROTECTED', 'foo');
- define('T_FINAL', 'foo');
- define('T_IMPLEMENTS', 'foo');
-}
-if (!defined('T_DOC_COMMENT'))
-{
- define('T_DOC_COMMENT', T_ML_COMMENT);
-}
-/**
- * PHP Parser for PHP 4.2.3-
- *
- * This parser is slower than the tokenizer-based parser, and is deprecated.
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Gregory Beaver <cellog@users.sourceforge.net>
- * @version $Id: Parser.inc,v 1.1 2005/10/17 18:36:56 jeichorn Exp $
- * @package phpDocumentor
- * @subpackage Parsers
- * @deprecated in favor of {@link phpDocumentorTParser}
- */
-class Parser extends Publisher
-{
- /**#@+
- * @access private
- */
- /**
- * Word parser
- * @see WordParser
- */
- var $wp;
-
- /**
- * temporary parser variables
- */
- var $p_vars = array('func' => false, 'function_data' => '', 'quote_data' => '', 'event_stack' => false, 'last_pevent' => 0,
- 'two_words_ago' => '', 'temp_word' => '', 'docblock' => false, 'line' => array(), 'linecount' => 0, 'startword' => '',
- 'periodline' => 0, 'shortdesc' => '', 'docblock_desc' => '', 'class' => false, 'source_location' => '',
- 'define_params_data' => '', 'define' => false, 'define_name' => '', 'define_value' => '', 'var' => false,
- 'oldtoken' => false, 'comment_data' => '', 'function_param' => NULL, 'inline_dockeyword_type' => false,
- 'inline_dockeyword_data' => false, 'dockeyword_type' => false, 'dockeyword_data' =>false, 'param_var' => false,
- 'include_name' => '', 'include_value' => '','include' => false, 'return_type' => '', 'cur_class' => '',
- 'function_data' => false, 'varname' => '', 'returntype' => false, 'vartype' => false, 'paramtype' => false,
- 'tagname' => '', 'find_global' => '', 'global_type' => '', 'paramname' => false, 'statics' => array(),
- 'static_count' => 0, 'static_val' => array(), 'docblock_type' => 'docblock', 'seelement' => false);
-
- /**
- * parser flags, for states that don't warrant a new event (like new line in a docblock)
- */
- var $p_flags = array('docblocknewline' => false, 'docblockintags' => false, 'useperiod' => false,
- 'definename_isset' => false, 'define_parens' => false, 'reset_quote_data' => false,
- 'in_desc' => true, 'in_tag' => false, 'newline' => true, 'tempnewline' => false,
- 'start_docblock' => false, 'includename_isset' => false, 'return_isset' => false,
- 'is_return' => false, 'in_class' => false, 'asterisk' => false, 'var_equals' => false,
- 'arrayinvarname' => false, 'valid_newline' => true, 'startline' => false,
- 'function_global' => false, 'define_global' => false, 'static_value' => false,'funcparam_val' => false,
- 'get_source' => false, 'getting_source' => false);
-
- /**
- * lookup table for event handler methods
- * @see Parser::parse()
- */
- var $eventHandlers = array(
- 'handleArray' => PARSER_EVENT_ARRAY,
- 'handleClass' => PARSER_EVENT_CLASS,
- 'handleComment' => PARSER_EVENT_COMMENT,
- 'handleDocBlockTemplate' => PARSER_EVENT_DOCBLOCK_TEMPLATE,
- 'handleEndDocBlockTemplate' => PARSER_EVENT_END_DOCBLOCK_TEMPLATE,
- 'handleEscape' => PARSER_EVENT_ESCAPE,
- 'handleLogicBlock' => PARSER_EVENT_LOGICBLOCK,
- 'defaultHandler' => PARSER_EVENT_NOEVENTS,
-// 'defaultHandler' => PARSER_EVENT_COMMENTBLOCK, (set in constructor below)
-// 'defaultHandler' => PARSER_EVENT_OUTPHP,
- 'handleDefine' => PARSER_EVENT_DEFINE,
- 'handleDefineParams' => PARSER_EVENT_DEFINE_PARAMS,
- 'handleDefineParamsParenthesis' => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- 'handleIncludeParamsParenthesis' => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
-// 'handleDocBlock' => PARSER_EVENT_DOCBLOCK,
- 'BetterhandleDocBlock' => PARSER_EVENT_DOCBLOCK,
- 'handleTags' => PARSER_EVENT_TAGS,
- 'handleDesc' => PARSER_EVENT_DESC,
-// 'handleDockeyword' => PARSER_EVENT_DOCKEYWORD,
- 'handleTag' => PARSER_EVENT_DOCKEYWORD,
- 'handleDockeywordEmail' => PARSER_EVENT_DOCKEYWORD_EMAIL,
- 'handleEOFQuote' => PARSER_EVENT_EOFQUOTE,
- 'handleFunction' => PARSER_EVENT_FUNCTION,
- 'handleFunctionParams' => PARSER_EVENT_FUNCTION_PARAMS,
- 'handleFuncGlobal' => PARSER_EVENT_FUNC_GLOBAL,
- 'handleGlobal' => PARSER_EVENT_DEFINE_GLOBAL,
- 'handleGlobalValue' => PARSER_EVENT_GLOBAL_VALUE,
- 'handleInlineDockeyword' => PARSER_EVENT_INLINE_DOCKEYWORD,
- 'handleInclude' => PARSER_EVENT_INCLUDE,
- 'handleIncludeParams' => PARSER_EVENT_INCLUDE_PARAMS,
- 'handleQuote' => PARSER_EVENT_QUOTE,
- 'handlePhpCode' => PARSER_EVENT_PHPCODE,
- 'handleSingleQuote' => PARSER_EVENT_SINGLEQUOTE,
- 'handleStaticVar' => PARSER_EVENT_STATIC_VAR,
- 'handleStaticValue' => PARSER_EVENT_STATIC_VAR_VALUE,
- 'handleVar' => PARSER_EVENT_VAR,
- );
-
- /**
- * event handlers for @tags
- * @tutorial tags.pkg
- */
- var $tagHandlers = array(
- '*' => 'defaultTagHandler',
- 'category' => 'categoryTagHandler',
- 'example' => 'exampleTagHandler',
- 'filesource' => 'invalidTagHandler',
- 'return' => 'returnTagHandler',
- 'returns' => 'returnTagHandler',
- 'var' => 'varTagHandler',
- 'package' => 'packageTagHandler',
- 'param' => 'paramTagHandler',
- 'parameter' => 'paramTagHandler',
- 'global' => 'globalTagHandler',
- 'staticvar' => 'staticvarTagHandler',
- 'uses' => 'usesTagHandler'
- );
-
- var $laststart = false;
-
- /**
- * An array of allowable @tags
- */
- var $allowableTags;
-
-
- /**
- * An array of allowed inline @tags
- */
- var $allowableInlineTags;
-
- /**
- * Sets the states up, and creates a new WordParser
- */
-
- /**
- * an array of parsing tokens organized by event number.
- * A token is defined as the smallest group of characters that separates or
- * defines a new parser element. In English, a space or punctuation are
- * tokens that separate words. in PHP, tokens may be //, or even "
- * Format: array(eventnum =>array(token1, token2, token3, ...),...)
- * @var array
- */
- var $tokens;
-
- /**
- * array of events that are raised, organized by the tokens that raise them.
- * Format: array(eventnum => array(token => neweventnum, token2 => neweventnum2,...),...)
- * @var array
- */
- var $pushEvent;
-
- /**
- * array of tokens that end an event, organized by event
- * Format: array(eventnum => array(token => neweventnum, token2 => neweventnum2,...),...)
- * @var array
- */
- var $popEvent;
- /**#@-*/
-
- /**
- * Set up invariant parsing variables
- */
- function Parser()
- {
- $this->allowableTags = $GLOBALS['_phpDocumentor_tags_allowed'];
- $this->allowableInlineTags = $GLOBALS['_phpDocumentor_inline_doc_tags_allowed'];
- $this->wp = new WordParser;
- // strange PHP 4.0.6 behavior: it converts constants to strings without warning if it's an array index
- $this->eventHandlers = array_flip($this->eventHandlers);
- $this->eventHandlers[PARSER_EVENT_COMMENTBLOCK] = 'defaultHandler';
- $this->eventHandlers[PARSER_EVENT_OUTPHP] = 'defaultHandler';
- $this->subscribe(PHPDOCUMENTOR_EVENT_NEWLINENUM,$GLOBALS['phpDocumentor_errors']);
- $this->subscribe(PHPDOCUMENTOR_EVENT_NEWFILE,$GLOBALS['phpDocumentor_errors']);
- }
-
- /**
- * Parse a new file
- *
- * @param string $parse_data
- * @param string $path
- * @param int $base number of directories to drop off the bottom when creating names using path
- * @staticvar integer used for recursion limiting if a handler for an event is not found
- * @return bool
- */
- function parse (&$parse_data, $path, $base = 0, $packages = false)
- {
- global $_phpDocumentor_options;
- static $endrecur = 0;
- $this->p_vars = array('func' => false, 'function_data' => '', 'quote_data' => '', 'event_stack' => false, 'last_pevent' => 0,
- 'two_words_ago' => '', 'temp_word' => '', 'docblock' => false, 'line' => array(), 'linecount' => 0, 'startword' => '',
- 'periodline' => 0, 'shortdesc' => '', 'docblock_desc' => '', 'class' => false, 'source_location' => '',
- 'define_params_data' => '', 'define' => false, 'define_name' => '', 'define_value' => '', 'var' => false,
- 'oldtoken' => false, 'comment_data' => '', 'function_param' => NULL, 'inline_dockeyword_type' => false,
- 'inline_dockeyword_data' => false, 'dockeyword_type' => false, 'dockeyword_data' =>false, 'param_var' => false,
- 'include_name' => '', 'include_value' => '','include' => false, 'return_type' => '', 'cur_class' => '',
- 'function_data' => false, 'varname' => '', 'returntype' => false, 'vartype' => false, 'paramtype' => false,
- 'tagname' => '', 'find_global' => '', 'global_type' => '', 'paramname' => false, 'statics' => array(),
- 'static_count' => 0, 'static_val' => array(), 'docblock_type' => 'docblock', 'linenum' => false,
- 'seelement' => false);
-
- $this->p_flags = array('docblocknewline' => false, 'docblockintags' => false, 'useperiod' => false,
- 'definename_isset' => false, 'define_parens' => false, 'reset_quote_data' => false,
- 'in_desc' => true, 'in_tag' => false, 'newline' => true, 'tempnewline' => false,
- 'start_docblock' => false, 'includename_isset' => false, 'return_isset' => false,
- 'is_return' => false, 'in_class' => false, 'asterisk' => false, 'var_equals' => false,
- 'arrayinvarname' => false, 'valid_newline' => true, 'startline' => false,
- 'function_global' => false, 'define_global' => false, 'static_value' => false,'funcparam_val' => false,
- 'get_source' => false, 'getting_source' => false, 'in_define' => false, 'in_include' => false,
- 'in_var' => false, 'in_global' => false);
- $this->p_vars['parsepath'] = $path;
- $this->setupStates();
- if (strlen($parse_data) == 0)
- {
- return false;
- }
-
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
- $this->p_vars['event_stack'] = new EventStack;
-
- $this->wp->setup($parse_data);
-
-
- $page = new ParserPage;
- $page->setPath($path);
- $page->setPackageOutput($packages);
- $page->setFile(basename($path));
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWFILE,basename($path));
- //$name = str_replace("/","_",dirname($path)) . "_" . array_shift(explode(".",$page->getFile()));
- // fc@fc.clever-soft.com 11/29/2001
- $name = str_replace(PATH_DELIMITER,"_",dirname($path)) . "_" . str_replace(".","_",$page->getFile());
- $tmp = explode("_",$name);
- $name = str_replace(':','_',implode("_",array_slice($tmp,$base)));
- // if base is '', drive letter is present in windows
-
- $page->setName($name);
- $temploc = $_phpDocumentor_options['Program_Root'] . PATH_DELIMITER. implode(PATH_DELIMITER,
- array_slice(explode(PATH_DELIMITER,$path),$base));
-
- if ($temploc == $_phpDocumentor_options['Program_Root'] . PATH_DELIMITER) $temploc .= $path;
-
- $this->p_vars['source_location'] = $source_location = $temploc;
- $page->setSourceLocation($source_location);
-
- $this->publishEvent(PHPDOCUMENTOR_EVENT_PAGE,$page);
- unset($page);
- $this->p_flags['reset_quote_data'] = true;
-
- do
- {
- $lpevent = $pevent;
- $pevent = $this->p_vars['event_stack']->getEvent();
- if ($lpevent != $pevent)
- {
- $this->p_vars['last_pevent'] = $lpevent;
- }
-
- if ($this->p_vars['last_pevent'] != $pevent)
- {
- // its a new event so the word parser needs to be reconfigured
- $this->configWordParser($pevent);
- }
-
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,($pevent + 100));
-
- if ($pevent == PARSER_EVENT_GLOBAL_VALUE || $pevent == PARSER_EVENT_DOCBLOCK || $pevent == PARSER_EVENT_DOCBLOCK_TEMPLATE)
- {
- $this->wp->setWhitespace(true);
- }
-
- $this->p_vars['last_word'] = $word;
- $word = $this->wp->getWord();
- // in wordparser, have to keep track of lines
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWLINENUM, $this->wp->linenum);
-
- if (0)//PHPDOCUMENTOR_DEBUG == true)
- {
- echo "\nLAST: |" . $this->p_vars['last_word'] . "|\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo "LASTPEVENT: " . $this->getParserEventName($this->p_vars['last_pevent']) . "\n";
- echo $this->wp->getPos() . ": |$word|\n--------------------------\n\n";
- }
- if ($this->p_flags['get_source'])
- {
- if ($pevent == PARSER_EVENT_FUNCTION)
- {
- $this->wp->retrievesource("function $word");
- $this->p_flags['get_source'] = false;
- $this->p_flags['getting_source'] = true;
- }
- }
- if (false)//$this->p_flags['getting_source'] && ($pevent == PARSER_EVENT_DOCBLOCK) || ($pevent == PARSER_EVENT_NOEVENTS))
- {
- addError(PDERROR_SOURCE_TAG_FUNCTION_NOT_FOUND);
- // throw away source
- $this->wp->getSource();
- }
- if (isset($this->eventHandlers[$pevent]))
- {
- $handle = $this->eventHandlers[$pevent];
- $this->$handle($word, $pevent);
- } else
- {
- debug('WARNING: possible error, no handler for event number '.$pevent);
- if ($endrecur++ == 25)
- {
- die("FATAL ERROR, recursion limit reached");
- }
- }
- } while (!($word === false));
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,PHPDOCUMENTOR_EVENT_END_PAGE);
- }
-
- /**#@+
- * @access private
- * @param string token parsed from source
- * @param integer parser constant from {@link Parser.inc}
- */
- /**
- * handler for NOEVENTS, OUTPHP, COMMENTBLOCK
- */
-
- function defaultHandler($word, $pevent)
- {
- $this->checkEventPush( $word, $pevent);
- $this->checkEventPop($word,$pevent);
- }
-
- /**
- * handler for LOGICBLOCK
- *
- * Logic Blocks are the stuff between { and } in a function/method. A
- * logic block can clearly contain other logic blocks, as in:
- *
- * <code>
- * function test($a)
- * {
- * if (testcondition)
- * { // nested logic block
- * }
- * }
- * </code>
- *
- * So, the exit portion of the logic block handler must check to see if the
- * logic block being exited is the top-level, and it does this by retrieving
- * the last event from the stack. If it is a function (and not a logic block)
- * then it backs up the word parser so that the function will exit properly.
- *
- * {@source 11}
- */
-
- function handleLogicBlock($word, $pevent)
- {
- $a = $this->checkEventPush( $word, $pevent);
- if ($a == PARSER_EVENT_FUNC_GLOBAL || $a == PARSER_EVENT_STATIC_VAR)
- {
- if (substr($this->p_vars['last_word'],strlen($this->p_vars['last_word']) - 1,1) != ' ' && substr($this->p_vars['last_word'],strlen($this->p_vars['last_word']) - 1,1) != "\t" && substr($this->p_vars['last_word'],strlen($this->p_vars['last_word']) - 1,1) != "\n" && substr($this->p_vars['last_word'],strlen($this->p_vars['last_word']) - 1,1) != ";" && substr($this->p_vars['last_word'],strlen($this->p_vars['last_word']) - 1,1) != "}" && substr($this->p_vars['last_word'],strlen($this->p_vars['last_word']) - 1,1) != "{")
- {
- $this->p_vars['event_stack']->popEvent();
- }
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $e = $this->p_vars['event_stack']->popEvent();
- $this->p_vars['event_stack']->pushEvent($e);
- if ($e == PARSER_EVENT_FUNCTION)
- {
- $this->wp->backupPos($word);
- }
- }
- }
-
- /**
- * handler for ESCAPE.
- * this event handler parses <code>"this string \"with its escape backslashes\""</code> and returns:
- * <code>this string "with its escape backslashes"</code>
- * to make it human-readable
- */
-
- function handleEscape($word, $pevent)
- {
- $this->p_vars['event_stack']->popEvent();
- }
-
- /**
- * handler for COMMENT.
- * this event handler parses single-line comments like:
- * // this one
- */
-
- function handleComment($word, $pevent)
- {
- $this->checkEventPush( $word, $pevent);
-
- if (!isset($this->p_vars['comment_data'])) $this->p_vars['comment_data'] = '';
- $this->p_vars['comment_data'] .= $word;
-
- $this->checkEventPop($word,$pevent);
- }
-
- /**
- * handler for ARRAY.
- * this event handler parses arrays in default values of function and var definitions
- */
-
- function handleArray($word, $pevent)
- {
- $e = $this->checkEventPush( $word, $pevent);
- if (($e == PARSER_EVENT_COMMENTBLOCK) ||
- ($e == PARSER_EVENT_COMMENT)) return;
-
- if (!isset($this->p_vars['function_data']) || (isset($this->p_vars['function_data']) && empty($this->p_vars['function_data'])))
- {
- $this->p_vars['function_data'] = "array";
- }
-
- if ( ($this->p_vars['last_word'] == "'"))
- {
- $this->p_vars['function_data'] .= $this->p_vars['quote_data']."'";
- }
- if ( ($this->p_vars['last_word'] == "\""))
- {
- $this->p_vars['function_data'] .= $this->p_vars['quote_data']."\"";
- }
-
- $this->p_vars['function_data'] .= $word;
- //echo "function_data = |$this->p_vars['function_data']|\n";
-
- if ($this->checkEventPop($word,$pevent))
- {
- }
- }
-
- /**
- * handler for DEFINE.
- * handles define(constant, value); statements
- */
-
- function handleDefine($word, $pevent)
- {
- if (!$this->p_flags['in_define'])
- {
- $this->p_vars['linenum'] = $this->wp->linenum;
- }
- $this->p_flags['in_define'] = true;
- $this->checkEventPush( $word, $pevent);
-
- $this->p_flags['definename_isset'] = false;
- $this->p_vars['define_params_data'] = '';
- unset($this->p_vars['quote_data']);
- if ($this->checkEventPop($word,$pevent))
- {
- $this->p_flags['in_define'] = false;
- $this->p_vars['define'] = new parserDefine;
- $this->p_vars['define']->setLineNumber($this->p_vars['linenum']);
- $this->p_vars['define']->setName($this->p_vars['define_name']);
- $this->p_vars['define']->setValue($this->p_vars['define_value']);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DEFINE,$this->p_vars['define']);
- $this->p_flags['definename_isset'] = false;
- unset($this->p_vars['define']);
- unset($this->p_vars['define_name']);
- unset($this->p_vars['define_value']);
- $this->p_flags['in_define'] = false;
- $this->p_vars['define_params_data'] = '';
- }
- }
-
- /**
- * handler for DEFINE_PARAMS.
- * handles the parsing of constant and value in define(constant, value);
- */
-
- function handleDefineParams($word, $pevent)
- {
- if ($this->checkEventPush( $word, $pevent))
- {
- if ($word == '(')
- {
- $this->p_vars['define_params_data'] .= $word;
- }
- return;
- }
-
- $this->p_flags['define_parens'] = true;
- if(!isset($this->p_vars['define_params_data'])) $this->p_vars['define_params_data'] = '';
-
- if ($this->checkEventPop($word,$pevent))
- {
- if (!empty($this->p_vars['quote_data']))
- {
- $this->p_vars['define_params_data'] .= $this->p_vars['quote_data'];
- }
- if (!empty($this->p_vars['define_params_data']))
- {
- //echo $this->p_vars['define_params_data']."\n";
- $this->p_vars['define_value'] = $this->p_vars['define_params_data'];
- }
- else
- {
- if ( $this->p_vars['last_word'] != "/*" &&
- $this->p_vars['last_word'] != "//" && $this->p_vars['last_word'] != "#")
- {
- $this->p_vars['define_value'] = trim($this->p_vars['last_word']);
- }
- else
- {
- $this->p_vars['define_value'] = "";
- }
- }
- }
- if ($this->p_flags['definename_isset'])
- {
- if (isset($this->p_vars['quote_data']))
- {
- $this->p_vars['define_params_data'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- $this->p_vars['define_params_data'] .= $word;
- } else
- {
- if ($word != ",")
- {
- if (isset($this->p_vars['quote_data']))
- {
- $this->p_vars['define_params_data'] .= $this->p_vars['quote_data'];
- unset($this->p_vars['quote_data']);
- }
- $this->p_vars['define_params_data'] .= $word;
- } else
- {
- if (isset($this->p_vars['quote_data']) && !$this->p_flags['definename_isset'])
- {
- $this->p_vars['define_params_data'] .= $this->p_vars['quote_data'];
- unset($this->p_vars['quote_data']);
- }
- $this->p_flags['definename_isset'] = true;
- $this->p_vars['define_name'] = $this->p_vars['define_params_data'];
- unset($this->p_vars['quote_data']);
- $this->p_vars['define_params_data'] = '';
- }
- }
- }
-
- /**
- * handler for DEFINE_PARAMS_PARENTHESIS.
- * this handler takes all parenthetical statements within constant or value in:
- * define(constant, value) of a define statement, and handles them properly
- */
-
- function handleDefineParamsParenthesis($word, $pevent)
- {
- if (isset($this->p_vars['quote_data']))
- {
- $this->p_vars['define_params_data'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- $this->p_vars['define_params_data'] .= $word;
- $this->checkEventPush( $word, $pevent);
- $this->checkEventPop( $word, $pevent);
- }
-
- /**
- * handler for CLASS.
- * this handler parses a class statement
- */
-
- function handleClass($word, $pevent)
- {
- $this->p_flags['in_class'] = true;
- $a = $this->checkEventPush( $word, $pevent);
- if ($a == PARSER_EVENT_DOCBLOCK || $a == PARSER_EVENT_DOCBLOCK_TEMPLATE)
- {
- $this->wp->setWhitespace(true);
- }
-
- if (!isset($this->p_vars['class'])) $this->p_vars['class'] = false;
- if (!is_subclass_of($this->p_vars['class'],"parserBase"))
- {
- $this->p_vars['class'] = new parserClass;
- $this->p_vars['class']->setLineNumber($this->wp->linenum);
- $this->p_vars['class']->setname($word);
- $this->p_vars['cur_class'] = $word;
- $this->p_vars['class']->setSourceLocation($this->p_vars['source_location']);
- }
-
- if (strtolower($this->p_vars['last_word']) == "extends")
- {
- $this->p_vars['class']->setExtends($word);
- }
-
- if ($word == "{")
- {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_CLASS,$this->p_vars['class']);
- }
- //echo $this->wp->getPos() . ": |$word|\n";
- if ($this->checkEventPop($word,$pevent))
- {
- $this->p_flags['in_class'] = false;
- // throw an event when class is done
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,STATE_END_CLASS);
- $this->p_vars['class'] = false;
- }
- }
-
- /**
- * handler for VAR.
- * handle a var $varname = default_value; or var $varname; statement in a class definition
- */
-
- function handleVar($word, $pevent)
- {
- if (!$this->p_flags['in_var'])
- {
- $this->p_vars['linenum'] = $this->wp->linenum;
- }
- $this->p_flags['in_var'] = true;
- //echo $word."\n";
- $e = $this->checkEventPush( $word, $pevent);
-
- if (!isset($this->p_vars['var'])) $this->p_vars['var'] = false;
- if ($word == '=' || $word == ';') $this->p_flags['var_equals'] = true;
- if (!$this->p_flags['var_equals'])
- {
- // if we haven't parsed the = yet, no arrays are possible!
- if ($e == PARSER_EVENT_ARRAY)
- {
- $this->p_flags['arrayinvarname'] = true;
- $this->p_vars['event_stack']->popEvent();
- }
- if (!$e || ($e == PARSER_EVENT_ARRAY))
- $this->p_vars['varname'] .= $word;
- }
-
- if (!$this->p_flags['var_equals'])
- {
- if ($word != "/*" && $word != "//" && $word != "#")
- {
- $this->p_vars['var'] = new parserVar($this->p_vars['cur_class']);
- $this->p_vars['var']->setName($this->p_vars['varname']);
- }
- }
- if ($this->p_vars['last_word'] == "=")
- {
- if ($word != "/*" && $word != "//" && $word != "#")
- {
- $this->p_vars['var']->setValue($word);
- }
- }
- // fix 1202772
- if (isset($this->p_vars['quote_data']) && ($this->p_vars['last_pevent'] == PARSER_EVENT_QUOTE || $this->p_vars['last_pevent'] == PARSER_EVENT_SINGLEQUOTE))
- {
- $this->p_vars['var']->setValue($this->p_vars['quote_data']);
- unset($this->p_vars['quote_data']);
- }
- if ($this->p_vars['last_pevent'] == PARSER_EVENT_ARRAY)
- {
- $this->p_vars['var']->setValue($this->p_vars['function_data']);
- $this->p_vars['function_data'] = false;
- }
-
- if ($this->checkEventPop($word,$pevent))
- {
- $this->p_vars['var']->setLineNumber($this->p_vars['linenum']);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_VAR,$this->p_vars['var']);
- unset($this->p_vars['var']);
- $this->p_flags['in_var'] = false;
- $this->p_flags['var_equals'] = false;
- $this->p_flags['arrayinvarname'] = false;
- $this->p_vars['varname'] = '';
- }
- }
-
- /**
- * handler for QUOTE.
- * this handler recognizes strings defined with double quotation marks (") and handles them correctly
- * in any place that they legally appear in php code
- */
-
- function handleQuote($word, $pevent)
- {
- if ($this->p_flags['reset_quote_data'] === true)
- {
- $this->p_flags['reset_quote_data'] = false;
- $this->p_vars['quote_data'] = "";
- }
- $this->checkEventPush( $word, $pevent);
- if ($word != "\"")
- {
- $this->p_vars['quote_data'] .= $word;
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->p_flags['reset_quote_data'] = true;
- }
- }
-
- /**
- * handler for SINGLEQUOTE.
- * this handler recognizes strings defined with single quotation marks (') and handles them correctly
- * in any place that they legally appear in php code
- */
-
- function handleSingleQuote($word, $pevent)
- {
- $this->checkEventPush( $word, $pevent);
- if ($this->checkEventPop($word,$pevent))
- {
- if ($this->p_vars['last_word'] != "'")
- {
- $this->p_vars['quote_data'] = $this->p_vars['last_word'];
- } else {
- $this->p_vars['quote_data'] = "";
- }
- }
- }
-
- /**
- * handler for EOFQUOTE.
- * this handler recognizes strings defined with perl-style <<< EOF quotes, and handles them correctly
- * in any place that they legally appear in php code
- *
- * an example:
- * <code>$var <<< EOF
- * blah blah blah
- * EOF;</code>
- */
-
- function handleEOFQuote($word, $pevent)
- {
- // echo $this->wp->getPos() . ": word=|$word|\t\t\tlastword=|$this->p_vars['last_word']|\n";
- if (trim($this->p_vars['last_word']) == "<<<")
- {
- // ok we found the keyword
- //echo "Keyword == $word\n";
- $this->p_vars['oldtoken'] = $this->tokens[STATE_EOFQUOTE];
- $this->tokens[STATE_EOFQUOTE] = array($word);
- }
- else if ($this->p_vars['last_pevent'] || PARSER_EVENT_EOFQUOTE)
- {
- // i don't think anything will ever use this so were not going to set it
- //$this->p_vars['quote_data'] = $this->p_vars['last_word'];
- $this->p_vars['event_stack']->popEvent();
- $this->tokens[STATE_EOFQUOTE] = $this->p_vars['oldtoken'];
- }
- }
- /**#@-*/
-
- /**
- * Tells the parser to search for a global variable definition as
- * defined by a @global type $name tag.
- *
- * The parser is fooled into looking for the entire global variable as a
- * single token by amending the {@link $tokens} array.
- *
- * {@source}
- * @access private
- * @param string name of global variable as it appears in the source code
- */
- function findGlobal($name)
- {
- if (!isset($this->p_vars['globaltofind']))
- {
- $this->p_vars['globaltofind'] = $name;
- $this->pushEvent[PARSER_EVENT_PHPCODE][strtolower($name)] = PARSER_EVENT_DEFINE_GLOBAL;
- $this->tokens[STATE_PHPCODE][] = $name;
- } else
- {
- addError(PDERROR_MULTIPLE_GLOBAL_TAGS,$this->p_vars['globaltofind'],$name);
- }
- }
-
- /**#@+
- * @access private
- * @param string token parsed from source
- * @param integer parser constant from {@link Parser.inc}
- */
- /**
- * handler for PHPCODE.
- * this handler recognizes the <code><?</code> php processor directive, and begins parsing php code
- */
-
- function handlePhpCode($word, $pevent)
- {
- $e = $this->checkEventPush( $word, $pevent);
- if ($e == PARSER_EVENT_DOCBLOCK || $e == PARSER_EVENT_DOCBLOCK_TEMPLATE)
- {
- $this->wp->setWhitespace(true);
- }
- if (isset($this->p_vars['globaltofind']) && $e)
- {
- if ($e != PARSER_EVENT_DEFINE_GLOBAL && $e != PARSER_EVENT_ARRAY && $e != PARSER_EVENT_QUOTE && $e != PARSER_EVENT_SINGLEQUOTE && $e != PARSER_EVENT_COMMENT && $e != PARSER_EVENT_COMMENTBLOCK)
- {
- addError(PDERROR_GLOBAL_NOT_FOUND,$this->p_vars['globaltofind']);
- unset($this->pushEvent[PARSER_EVENT_PHPCODE][strtolower($this->p_vars['globaltofind'])]);
- foreach($this->tokens[STATE_PHPCODE] as $i => $notme)
- if ($this->tokens[STATE_PHPCODE][$i] == $this->p_vars['globaltofind'])
- unset($this->tokens[STATE_PHPCODE][$i]);
- unset($this->p_vars['globaltofind']);
- }
- }
- }
-
- /**
- * handler for global variables
- */
- function handleGlobal($word, $pevent)
- {
- if (!$this->p_flags['in_global'])
- {
- $this->p_vars['linenum'] = $this->wp->linenum;
- }
- $this->p_flags['in_global'] = true;
- $e = $this->checkEventPush($word, $pevent);
- if ($this->checkEventPop($word, $pevent))
- {
- $this->p_flags['in_global'] = false;
- $a = new parserGlobal;
- $a->setDataType($this->p_vars['global_type']);
- $this->p_vars['global_type'] = '';
- $a->setLineNumber($this->p_vars['linenum']);
- $a->setName($this->p_vars['globaltofind']);
- if (isset($this->p_vars['global_val']))
- $a->setValue(trim($this->p_vars['global_val']));
- unset($this->p_vars['global_val']);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_GLOBAL,$a);
- unset($this->pushEvent[PARSER_EVENT_PHPCODE][strtolower($this->p_vars['globaltofind'])]);
- foreach($this->tokens[STATE_PHPCODE] as $i => $notme)
- if ($this->tokens[STATE_PHPCODE][$i] == $this->p_vars['globaltofind'])
- unset($this->tokens[STATE_PHPCODE][$i]);
- unset($this->p_vars['globaltofind']);
- }
- }
-
- /**
- * Handles the stuff after the = in <code>$globalvar = value</code>
- */
- function handleGlobalValue($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- $this->wp->setWhitespace(false);
- return;
- }
- if (!isset($this->p_vars['global_val'])) $this->p_vars['global_val'] = '';
- if ($this->p_vars['last_pevent'] == PARSER_EVENT_QUOTE || $this->p_vars['last_pevent'] == PARSER_EVENT_SINGLEQUOTE)
- {
- if (!isset($this->p_vars['quote_data'])) $this->p_vars['quote_data'] = '';
- $this->p_vars['global_val'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- $this->p_vars['last_pevent'] = PARSER_EVENT_GLOBAL_VALUE;
- }
- if ($this->p_vars['last_pevent'] == PARSER_EVENT_ARRAY)
- {
- $this->p_vars['global_val'] .= $this->p_vars['function_data'];
- $this->p_vars['function_data'] = false;
- }
- if ($word != ';')
- $this->p_vars['global_val'] .= $word;
- if ($this->checkEventPop($word, $pevent))
- {
- $this->wp->setWhitespace(false);
- $this->wp->backupPos($word);
- }
- }
-
- /**
- * handler for FUNC_GLOBAL.
- * this handler recognizes "global $var1, $var2" declarations in a function, and parses them
- */
-
- function handleFuncGlobal($word, $pevent)
- {
- if ((substr(trim($word),0,1) != '$') && ($word != ',') && ($word != ';'))
- { // not a global declaration, using a variable named "$global"
- $this->p_vars['event_stack']->popEvent();
- return;
- }
- if ($this->checkEventPop($word, $pevent))
- {
- return;
- }
- if (!$this->checkEventPush($word, $pevent))
- {
- if ($word == ',')
- { // another variable
- $this->p_vars['global_count']++;
- } else
- {
- if (!isset($this->p_vars['globals'][$this->p_vars['global_count']]))
- $this->p_vars['globals'][$this->p_vars['global_count']] = '';
- if (!empty($this->p_vars['globals'][$this->p_vars['global_count']])) $this->p_vars['global_count']++;
- $this->p_vars['globals'][$this->p_vars['global_count']] = trim($word);
- }
- }
- }
-
- /**
- * handler for STATIC_VAR.
- * this handler recognizes "static $var1, $var2 = 6" declarations in a function, and parses them
- */
-
- function handleStaticVar($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent))
- {
- $this->p_vars['static_count']++;
- return;
- }
- if (!$this->checkEventPush($word, $pevent))
- {
- if ($word == ',')
- {
- $this->p_vars['static_count']++;
- return;
- }
- if (!isset($this->p_vars['statics'][$this->p_vars['static_count']]))
- $this->p_vars['statics'][$this->p_vars['static_count']] = '';
- if (!empty($this->p_vars['statics'][$this->p_vars['static_count']])) $this->p_vars['static_count']++;
- $this->p_vars['statics'][$this->p_vars['static_count']] = trim($word);
- }
- }
-
- /**
- * handler for STATIC_VAR_VALUE.
- * this handler parses the 6 in "static $var1, $var2 = 6"
- */
-
- function handleStaticValue($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- return;
- }
- if (!isset($this->p_vars['static_val'][$this->p_vars['static_count']])) $this->p_vars['static_val'][$this->p_vars['static_count']] = '';
- if ($this->p_vars['last_pevent'] == PARSER_EVENT_QUOTE || $this->p_vars['last_pevent'] == PARSER_EVENT_SINGLEQUOTE)
- {
- $this->p_vars['static_val'][$this->p_vars['static_count']] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- if ($this->p_vars['last_pevent'] == PARSER_EVENT_ARRAY)
- {
- $this->p_vars['static_val'][$this->p_vars['static_count']] .= $this->p_vars['function_data'];
- $this->p_vars['function_data'] = false;
- }
- if ($this->checkEventPop($word, $pevent))
- {
- $this->p_vars['static_val'][$this->p_vars['static_count']] = trim($this->p_vars['static_val'][$this->p_vars['static_count']]);
- $this->wp->backupPos($word);
- return;
- } else $this->p_vars['static_val'][$this->p_vars['static_count']] .= $word;
- }
-
- /**
- * handler for FUNCTION.
- * this handler recognizes function declarations, and parses them. The body
- * of the function is parsed by handleLogicBlock()
- * @see handleLogicBlock()
- */
-
- function handleFunction($word, $pevent)
- {
- if ($e = $this->checkEventPush( $word, $pevent))
- {
- if ($e == PARSER_EVENT_COMMENT || $e == PARSER_EVENT_COMMENTBLOCK) return;
- }
-
- if (!isset($this->p_vars['func'])) $this->p_vars['func'] = false;
- if (! is_subclass_of($this->p_vars['func'],"parserBase"))
- {
- $this->p_vars['globals'] = array();
- $this->p_vars['global_count'] = 0;
- if ($this->p_flags['in_class'])
- $this->p_vars['func'] = new parserMethod($this->p_vars['cur_class']);
- else
- $this->p_vars['func'] = new parserFunction;
- $this->p_vars['func']->setLineNumber($this->wp->linenum);
- if (trim($word) != '&')
- $this->p_vars['func']->setName(trim($word));
- else
- $this->p_vars['func']->setReturnsReference();
- } else
- {
- if ($this->p_vars['func']->getReturnsReference())
- {
- if ($this->p_vars['last_word'] == '&')
- {
- $this->p_vars['func']->setName(trim($word));
- }
- }
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->p_vars['func']->addGlobals($this->p_vars['globals']);
- $this->p_vars['func']->addStatics($this->p_vars['statics'],$this->p_vars['static_val']);
- $this->p_vars['globals'] = array();
- $this->p_vars['global_count'] = 0;
- if ($this->p_flags['getting_source'])
- {
- $x = $this->wp->getSource();
- $this->p_vars['func']->addSource($x);
- $this->p_flags['get_source'] = false;
- $this->p_flags['getting_source'] = false;
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_FUNCTION,$this->p_vars['func']);
- $this->p_vars['func'] = false;
- }
- }
-
- /**#@-*/
- /**
- * Helper function for {@link handleFunctionParams()}
- *
- * This function adds a new parameter to the parameter list
- * @access private
- * @param string
- */
- function endFunctionParam($word)
- {
- if (isset($this->p_vars['quote_data']) && ($this->p_vars['last_pevent'] == PARSER_EVENT_SINGLEQUOTE))
- {
- $this->p_vars['function_data'] .= "'".$this->p_vars['quote_data']."'";
- unset($this->p_vars['quote_data']);
- }
- if (isset($this->p_vars['quote_data']) && ($this->p_vars['quote_data'] != '') && ($this->p_vars['last_pevent'] == PARSER_EVENT_QUOTE))
- {
- $this->p_vars['function_data'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- if (isset($this->p_vars['function_param']))
- {
- $this->p_vars['func']->addParam($this->p_vars['function_param'],$this->p_vars['function_data'], $this->p_flags['funcparam_val']);
- unset($this->p_vars['function_param']);
- $this->p_vars['function_data'] = '';
- $this->p_flags['funcparam_val'] = false;
- }
- }
- /**#@+
- * @access private
- * @param string token parsed from source
- * @param integer parser constant from {@link Parser.inc}
- */
- /**
- * handler for FUNCTION_PARAMS.
- * this handler recognizes the parameters of a function within parentheses like function(param, param = default_value)
- * and parses them
- * @see endFunctionParam()
- */
-
- function handleFunctionParams($word, $pevent)
- {
- //echo $this->wp->getPos() . ": word=|$word|\t\t\tlastword=|".$this->p_vars['last_word']."|\n";
- //echo "function_param = '".$this->p_vars['function_param']."'\n";
- //echo "function_data = '".$this->p_vars['function_data']."'\n";
- $e1 = $this->checkEventPush( $word, $pevent);
-
- if (!$e1)
- {
- if ($word == ',' || $this->checkEventPop($word,$pevent))
- {
- $this->endFunctionParam($word);
- } elseif ($word == '=')
- {
- $this->p_flags['funcparam_val'] = true;
- } else
- {
- if ($this->p_flags['funcparam_val'])
- {
- if (isset($this->p_vars['quote_data']) && ($this->p_vars['last_pevent'] == PARSER_EVENT_SINGLEQUOTE))
- {
- $this->p_vars['function_data'] .= "'".$this->p_vars['quote_data']."'";
- unset($this->p_vars['quote_data']);
- }
- if (isset($this->p_vars['quote_data']) && ($this->p_vars['last_pevent'] == PARSER_EVENT_QUOTE))
- {
- $this->p_vars['function_data'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- $this->p_vars['function_data'] .= $word;
- } else
- {
- $this->p_vars['function_param'] = $word;
- }
- }
- }
- }
-
-
- /**
- * javadoc-desc-compliant handler for DOCBLOCK.
- * this handler recognizes @tags in DocBlocks and parses them for display.
- * It also parses out unknown tags into their own array for use by the docblock
- */
-
- function JavaDochandleDocblock($word, $pevent)
- {
- $e1 = $this->checkEventPush( $word, $pevent);
- if (!isset($this->p_vars[$this->p_vars['docblock_type']]) || !$this->p_vars[$this->p_vars['docblock_type']])
- {
- $this->p_vars[$this->p_vars['docblock_type']] = new parserDocBlock();
- $this->p_vars['returntype'] = false;
- $this->p_vars['vartype'] = false;
- $this->p_flags['startdocblock'] = true;
- $this->p_flags['valid_newline'] = true;
- $this->p_flags['startline'] = true;
- $this->p_flags['newline'] = true;
- $this->p_flags['in_desc'] = true;
- $this->p_flags['in_tag'] = false;
- $this->p_flags['useperiod'] = false;
- $this->p_vars['line'] = array();
- $this->p_vars['linecount'] = 0;
- }
- $e = $this->checkEventPop( $word, $pevent);
- if (!$e1 && !$e)
- {
- if ($this->p_flags['in_desc']) $this->JavaDochandleDesc($word, $pevent);
- else $this->handleTags($word, $pevent);
- }
- if ($e)
- {
- if (!isset($this->p_vars['periodline'])) $this->p_vars['periodline'] = 0;
- if ($this->p_vars['periodline'] > 3)
- {
- $this->p_flags['useperiod'] = false;
- }
-
- $this->p_vars['docblock_desc'] = new parserDesc;
-// echo "i = ".$this->p_vars['periodline']."; i < " . count($this->p_vars['line']) . "\n";
- if ($this->p_vars['docblock_type'] == 'docblock')
- {
- if (isset($this->p_vars['docblock_template']))
- {
- // copy template values if not overridden
- if (!$this->p_vars['docblock']->getExplicitPackage())
- {
- if ($p = $this->p_vars['docblock_template']->getKeyword('package'))
- {
- $this->p_vars['docblock']->addKeyword('package',$p);
- $this->p_vars['docblock']->setExplicitPackage();
- }
- if ($p = $this->p_vars['docblock_template']->getKeyword('category'))
- {
- $this->p_vars['docblock']->addKeyword('category',$p);
- $this->p_vars['docblock']->setExplicitCategory();
- }
- if ($p = $this->p_vars['docblock_template']->getKeyword('subpackage'))
- {
- $this->p_vars['docblock']->addKeyword('subpackage',$p);
- }
- }
- $tags = $this->p_vars['docblock_template']->listTags();
- foreach($tags as $tag)
- {
- $this->p_vars['docblock']->addKeyword($tag->keyword,$tag->value);
- }
- $this->p_vars['docblock_desc']->add($this->p_vars['docblock_template']->desc);
- if (!count($this->p_vars['docblock']->params)) $this->p_vars['docblock']->params = $this->p_vars['docblock_template']->params;
- }
- if ($a = strpos(trim($this->p_vars['shortdesc']),'<p>') === 0)
- $this->p_vars['shortdesc'] = substr($this->p_vars['shortdesc'],strpos($this->p_vars['shortdesc'],'<p>') + 4);
- $this->p_vars[$this->p_vars['docblock_type']]->setShortDesc($this->p_vars['shortdesc']);
- }
- for($i = 0; $i < count($this->p_vars['line']); $i++)
- {
- // the line will not be set if it doesn't start with a *
- if (isset($this->p_vars['line'][$i]))
- $this->p_vars['docblock_desc']->add($this->p_vars['line'][$i]);
- }
-
-
- $this->p_vars[$this->p_vars['docblock_type']]->setDesc($this->p_vars['docblock_desc']);
- unset($this->p_vars['docblock_desc']);
-// var_dump($this->p_vars[$this->p_vars['docblock_type']]);
-// exit;
- if ($this->p_vars['docblock_type'] == 'docblock')
- {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DOCBLOCK,$this->p_vars[$this->p_vars['docblock_type']]);
- unset($this->p_vars[$this->p_vars['docblock_type']]);
- $this->p_vars[$this->p_vars['docblock_type']] = new parserDocBlock();
- }
- $this->p_flags['in_desc'] = true;
- $this->p_flags['in_tag'] = false;
- $this->p_flags['useperiod'] = false;
- $this->p_vars['line'] = array();
- $this->p_vars['linecount'] = 0;
- $this->p_flags['start_docblock'] = true;
- $this->p_flags['valid_newline'] = true;
- $this->wp->setWhitespace(false);
- }
- }
-
- /**
- * handler for DOCKEYWORD_DESC.
- * this handler parses the short and long description of a dockeyword
- */
-
- function JavaDochandleDesc($word, $pevent)
- {
- if ($this->p_flags['valid_newline'])
- {
- if ($word == '@' && $this->p_flags['startline'])
- {
- return $this->handleTag($word, $pevent);
- }
- if (!isset($this->p_vars['line'][$this->p_vars['linecount']]))
- {
- $this->p_vars['line'][$this->p_vars['linecount']] = new parserStringWithInlineTags;
- }
- if ($this->p_vars['last_word'] == "." && $this->p_flags['useperiod'] == false)
- {
- $this->p_vars['periodline'] = $this->p_vars['linecount'];
- $this->p_vars['shortdesc'] = new parserDesc;
- for($i = 0; ($i <= $this->p_vars['periodline']) && ($i < count($this->p_vars['line'])); $i++)
- {
- if (isset($this->p_vars['line'][$i]))
- $this->p_vars['shortdesc']->add($this->p_vars['line'][$i]);
- }
- $this->p_flags['useperiod'] = true;
- }
- $this->p_vars['line'][$this->p_vars['linecount']]->add($word);
-// debug("DESC $word");
- }
- $this->handleCR($word);
- }
-
- /**
- * handler for DOCBLOCK.
- * this handler recognizes @tags in DocBlocks and parses them for display.
- * It also parses out unknown tags into their own array for use by the docblock
- */
-
- function BetterhandleDocblock($word, $pevent)
- {
- $e1 = $this->checkEventPush( $word, $pevent);
- if (!$this->wp->returnWhiteSpace)
- {
- addErrorDie(PDERROR_NEED_WHITESPACE);
- }
- if (!isset($this->p_vars[$this->p_vars['docblock_type']]) || !$this->p_vars[$this->p_vars['docblock_type']])
- {
- $this->p_vars[$this->p_vars['docblock_type']] = new parserDocBlock();
- $this->p_vars['returntype'] = false;
- $this->p_vars['vartype'] = false;
- $this->p_flags['startdocblock'] = true;
- $this->p_flags['valid_newline'] = true;
- $this->p_flags['startline'] = true;
- $this->p_flags['newline'] = true;
- $this->p_flags['in_desc'] = true;
- $this->p_flags['in_tag'] = false;
- $this->p_flags['useperiod'] = false;
- $this->p_vars['line'] = array();
- $this->p_vars['linecount'] = 0;
- }
- $e = $this->checkEventPop( $word, $pevent);
- if (!$e1 && !$e)
- {
- if ($this->p_flags['in_desc']) $this->handleDesc($word, $pevent);
- else $this->handleTags($word, $pevent);
- }
- if ($e)
- {
- if (!isset($this->p_vars['periodline'])) $this->p_vars['periodline'] = 0;
- if ($this->p_vars['periodline'] > 3)
- {
- $this->p_flags['useperiod'] = false;
- } else
- {
- for($i = 0; $i < $this->p_vars['periodline']; $i++)
- {
- if (isset($this->p_vars['line'][$i]))
- {
- if ($this->p_vars['line'][$i]->trimmedStrlen() == 0 && isset($this->p_vars['line'][$i - 1]) && $this->p_vars['line'][$i - 1]->trimmedStrlen())
- {
- $this->p_vars['periodline'] = $i;
- }
- }
- }
- }
- // figure out the shortdesc
- if ($this->p_flags['useperiod'] === false)
- {
- // use the first non blank line for short desc
- for($i = 0; $i < count($this->p_vars['line']); $i++)
- {
- if (!isset($this->p_vars['line'][$i]))
- $this->p_vars['line'][$i] = new parserStringWithInlineTags;
- if ($this->p_vars['line'][$i]->trimmedStrlen() > 0)
- {
- $this->p_vars['periodline'] = $i;
- $i = count($this->p_vars['line']);
- }
- }
-
- // check to see if we are going to use a blank line to end the shortdesc
- // this can only be in the first 4 lines
- if (count($this->p_vars['line']) > 4)
- {
- $max = 4;
- } else {
- $max = count($this->p_vars['line']);
- }
-
- for($i = $this->p_vars['periodline']; $i < $max; $i++)
- {
- if (isset($this->p_vars['line'][$i]))
- if ($this->p_vars['line'][$i]->trimmedStrlen() == 0)
- {
- $this->p_vars['periodline'] = $i;
- $i = $max;
- }
- }
- }
-
- if ($this->p_vars['docblock_type'] == 'docblock')
- {
- $this->p_vars['shortdesc'] = new parserDesc;
- for($i = 0; ($i <= $this->p_vars['periodline']) && ($i < count($this->p_vars['line'])); $i++)
- {
- if (isset($this->p_vars['line'][$i]))
- $this->p_vars['shortdesc']->add($this->p_vars['line'][$i]);
- }
- $this->p_vars['periodline']++;
-
- $this->p_vars['docblock_desc'] = new parserDesc;
- if (isset($this->p_vars['docblock_template']))
- {
- // copy template values if not overridden
- if (!$this->p_vars['docblock']->getExplicitPackage())
- {
- if ($p = $this->p_vars['docblock_template']->getKeyword('package'))
- {
- $this->p_vars['docblock']->addKeyword('package',$p);
- $this->p_vars['docblock']->setExplicitPackage();
- }
- if ($p = $this->p_vars['docblock_template']->getKeyword('category'))
- {
- $this->p_vars['docblock']->addKeyword('category',$p);
- $this->p_vars['docblock']->setExplicitCategory();
- }
- if ($p = $this->p_vars['docblock_template']->getKeyword('subpackage'))
- {
- $this->p_vars['docblock']->addKeyword('subpackage',$p);
- }
- }
- $tags = $this->p_vars['docblock_template']->listTags();
- foreach($tags as $tag)
- {
- $this->p_vars['docblock']->addKeyword($tag->keyword,$tag->value);
- }
- if (!count($this->p_vars['docblock']->params)) $this->p_vars['docblock']->params = $this->p_vars['docblock_template']->params;
- $this->p_vars['docblock_desc']->add($this->p_vars['docblock_template']->desc);
- }
- // echo "i = ".$this->p_vars['periodline']."; i < " . count($this->p_vars['line']) . "\n";
- for($i = $this->p_vars['periodline']; $i < count($this->p_vars['line']); $i++)
- {
- // the line will not be set if it doesn't start with a *
- if (isset($this->p_vars['line'][$i]))
- $this->p_vars['docblock_desc']->add($this->p_vars['line'][$i]);
- }
- } else
- {
- $this->p_vars['shortdesc'] = new parserDesc;
- for($i = 0; ($i <= $this->p_vars['periodline']) && ($i < count($this->p_vars['line'])); $i++)
- {
- if (isset($this->p_vars['line'][$i]))
- $this->p_vars['shortdesc']->add($this->p_vars['line'][$i]);
- }
- $this->p_vars['periodline']++;
-
- $this->p_vars['docblock_desc'] = new parserDesc;
- for($i=$this->p_vars['periodline']; $i < count($this->p_vars['line']); $i++)
- {
- if (isset($this->p_vars['line'][$i]))
- $this->p_vars['docblock_desc']->add($this->p_vars['line'][$i]);
- }
- }
-
-
- $this->p_vars[$this->p_vars['docblock_type']]->setShortDesc($this->p_vars['shortdesc']);
- $this->p_vars[$this->p_vars['docblock_type']]->setDesc($this->p_vars['docblock_desc']);
- unset($this->p_vars['docblock_desc']);
-// var_dump($this->p_vars[$this->p_vars['docblock_type']]);
-// exit;
- if ($this->p_vars['docblock_type'] == 'docblock')
- {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DOCBLOCK,$this->p_vars[$this->p_vars['docblock_type']]);
- unset($this->p_vars[$this->p_vars['docblock_type']]);
- $this->p_vars[$this->p_vars['docblock_type']] = new parserDocBlock();
- } else
- {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DOCBLOCK_TEMPLATE,$this->p_vars[$this->p_vars['docblock_type']]);
- }
- $this->p_flags['in_desc'] = true;
- $this->p_flags['in_tag'] = false;
- $this->p_flags['useperiod'] = false;
- $this->p_vars['line'] = array();
- $this->p_vars['linecount'] = 0;
- $this->p_flags['start_docblock'] = true;
- $this->p_flags['valid_newline'] = true;
- $this->wp->setWhitespace(false);
- $this->p_vars['docblock_type'] = 'docblock';
- }
- }
-
- /**
- * Handles docblock templates
- * @tutorial phpDocumentor.howto.pkg#basics.docblocktemplate
- */
- function handleDocBlockTemplate($word, $pevent)
- {
- $this->p_vars['docblock_type'] = 'docblock_template';
- $this->p_vars['event_stack']->popEvent();
- $this->p_vars['event_stack']->pushEvent(PARSER_EVENT_DOCBLOCK);
- // fool the docblock handler into thinking everything is totally normal
- $this->p_vars['last_word'] = '/**';
- $pevent = PARSER_EVENT_DOCBLOCK;
- $this->BetterhandleDocBlock($word, $pevent);
- }
-
- /**
- * Handles closing docblock templates /**#@-* /
- * @tutorial phpDocumentor.howto.pkg#basics.docblocktemplate
- */
- function handleEndDocBlockTemplate($word, $pevent)
- {
- unset($this->p_vars['docblock_template']);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,PHPDOCUMENTOR_EVENT_END_DOCBLOCK_TEMPLATE);
- $this->p_vars['event_stack']->popEvent();
- }
- /**#@-*/
- /**
- * Handles a new line in a DocBlock
- * @param string token containing a newline \n
- * @access private
- */
- function handleCR($word)
- {
- $this->laststart = $this->p_flags['startline'];
- if ($word == "\n" || $word == ".\n")
- {
- $this->p_flags['start_docblock'] = false;
- $this->p_flags['newline'] = true;
- $this->p_flags['valid_newline'] = false;
- if ($this->p_flags['in_desc'] && !$this->p_flags['useperiod'])
- {
- if ($word == ".\n")
- {
- $this->p_flags['useperiod'] = true;
- $this->p_vars['periodline'] = $this->p_vars['linecount'];
- }
- }
- } else
- {
- if ($this->p_flags['valid_newline'] && strlen(trim($word)))
- {
- $this->p_flags['startline'] = false;
- }
- if ($this->p_flags['newline'] && ($word == '*' || $this->p_flags['start_docblock']))
- {
- $this->p_flags['newline'] = false;
- $this->p_flags['valid_newline'] = true;
- if (!$this->p_flags['start_docblock'])
- $this->p_vars['linecount']++;
- $this->p_flags['startline'] = true;
- $justset = true;
-// debug('valid newline');
- }
- }
- }
-
- /**
- * handler for DOCKEYWORD_DESC.
- * this handler parses the short and long description of a dockeyword
- * @access private
- */
-
- function handleDesc($word, $pevent)
- {
-// echo "|$word|\n";
- if ($this->p_flags['valid_newline'])
- {
- if ($word == '@' && $this->p_flags['startline'])
- {
- return $this->handleTag($word, $pevent);
- }
- if ($this->p_vars['last_word'] == ". " || $this->p_vars['last_word'] == ".\t")
- {
- $this->p_flags['useperiod'] = true;
- $this->p_vars['periodline'] = $this->p_vars['linecount'];
- $this->p_vars['linecount']++;
- }
- if (!isset($this->p_vars['line'][$this->p_vars['linecount']]))
- {
- $this->p_vars['line'][$this->p_vars['linecount']] = new parserStringWithInlineTags;
- }
- if ($this->p_flags['startline'])
- {
- if ($word[0] == ' ') $word = substr($word,1);
-// $word = ltrim($word," \t");
- }
- if ($word != '') $this->p_vars['line'][$this->p_vars['linecount']]->add($word);
-// debug("DESC $word");
- }
- $this->handleCR($word);
- }
-
- /**#@+
- * @access private
- * @param string token parsed from source
- * @param integer parser constant from {@link Parser.inc}
- */
- /**
- * handler for DOCKEYWORD_TAGS.
- * this handler recognizes @tags in DocBlocks and parses them for display
- * I think this may be unused. We'll delete from 1.1 if so
- */
- function handleTags($word, $pevent)
- {
- if ($this->p_flags['valid_newline'])
- {
-// debug("TAGS $word");
- }
- $this->handleCR($word);
- }
-
- /**
- * handler for DOCKEYWORD.
- * this handler recognizes @tags in DocBlocks and parses them for display
- */
- function handleTag($word, $pevent)
- {
- if ($this->p_flags['in_desc'] && !$this->p_flags['valid_newline'])
- {
- $this->p_vars['event_stack']->popEvent();
- return $this->handleDesc($word, $pevent);
- }
-// if ($this->p_vars['last_word'] == '@') fancy_debug('here'.$word,$this->p_flags['startline'],$this->p_flags['in_tag']);
- if ($this->p_vars['tagname'] == 'author')
- {
- if ($word == '<')
- {
- $this->p_vars['event_stack']->pushEvent(PARSER_EVENT_DOCKEYWORD_EMAIL);
- return $this->handleDockeywordEmail($word, $pevent);
- }
- }
- if ($this->checkEventPush( $word, $pevent)) return;
- if ($this->p_vars['last_word'] == '@' && !$this->p_flags['startline'] && $this->p_flags['in_desc'])
- {
- // fix 1203445
- if (!isset($this->p_vars['line'][$this->p_vars['linecount']]))
- {
- $this->p_vars['line'][$this->p_vars['linecount']] = new parserStringWithInlineTags;
- }
- $this->p_vars['event_stack']->popEvent();
- $this->p_vars['line'][$this->p_vars['linecount']]->add('@');
- return $this->handleDesc($word, $pevent);
- } elseif($this->p_vars['last_word'] == '@' && !strlen(trim($word)) && empty($this->p_vars['tagname']) && $this->p_flags['in_desc'])
- {
- // fix 1203445
- if (!isset($this->p_vars['line'][$this->p_vars['linecount']]))
- {
- $this->p_vars['line'][$this->p_vars['linecount']] = new parserStringWithInlineTags;
- }
- $pevent = $this->p_vars['event_stack']->popEvent();
- $this->p_vars['line'][$this->p_vars['linecount']]->add('@');
- return $this->handleDesc($word, $pevent);
- }
- if ($word == '@' && $this->p_flags['startline'] && $this->p_flags['in_tag'])
- {
- $this->wp->backupPos($word);
- $white = $this->wp->returnWhiteSpace;
- $this->wp->setWhitespace(true);
- $word1 = $this->wp->getWord();
- $this->wp->backupPos($word1);
- if (strlen(trim($word1)))
- {
- $this->endTag();
- }
- $this->wp->getWord();
- $this->wp->setWhitespace($white);
- }
- $this->p_flags['in_tag'] = true;
- $e = $this->checkEventPop($word, $pevent);
- if (!$e)
- {
- if ($this->p_flags['valid_newline'])
- {
- if (($this->p_flags['startline'] || $this->laststart) && $word != '@')
- {
- if ($this->p_vars['last_word'] == '@')
- {
-// debug("TAGSTART $word");
- $this->p_flags['in_tag'] = true;
- $this->p_vars['tagname'] = $word;
- $this->p_flags['startline'] = false;
- $this->p_vars['tag_value'] = new parserStringWithInlineTags;
- } else
- {
-// debug("TAG1 $word");
- if (isset($this->tagHandlers[$this->p_vars['tagname']]))
- $handler = $this->tagHandlers[$this->p_vars['tagname']];
- else $handler = $this->tagHandlers['*'];
- $this->$handler($word);
- }
- } else
- {
- if (empty($this->p_vars['tagname']))
- {
- if ($this->p_flags['in_desc'])
- {
- $this->p_flags['in_tag'] = false;
- // fix 1203445
- if (!isset($this->p_vars['line'][$this->p_vars['linecount']]))
- {
- $this->p_vars['line'][$this->p_vars['linecount']] =
- new parserStringWithInlineTags;
- }
- $this->p_vars['line'][$this->p_vars['linecount']]->add('@');
- $this->p_vars['event_stack']->popEvent();
- $this->handleCR($word);
- return $this->handleDesc($word, $pevent);
- }
- }
-// debug("TAG2 $word");
- if (isset($this->tagHandlers[$this->p_vars['tagname']]))
- $handler = $this->tagHandlers[$this->p_vars['tagname']];
- else $handler = $this->tagHandlers['*'];
- $this->$handler($word);
- }
- }
- $this->handleCR($word);
- }
- $this->p_flags['in_desc'] = false;
- if ($e)
- {
- $this->endTag();
- $this->wp->setWhitespace(false);
- // walk back a word
- $this->wp->backupPos($word);
- $this->wp->setWhitespace(true);
- }
- }
- /**#@-*/
- /**
- * Called to clean up at the end of parsing a @tag in a docblock
- */
- function endTag()
- {
- if (isset($this->tagHandlers[$this->p_vars['tagname']]))
- $handler = $this->tagHandlers[$this->p_vars['tagname']];
- else $handler = $this->tagHandlers['*'];
- $this->$handler(false);
- $this->p_vars['tagname'] = '';
- $this->p_flags['startline'] = true;
-// debug("ENDTAG");
- }
-
- /**#@+
- * Tag Handlers
- * @param string
- */
- /**
- * Handles all standard tags that only have a description
- */
- function defaultTagHandler($word)
- {
- if ($word !== false)
- {
- $this->p_vars['tag_value']->add($word);
- } else
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addKeyword($this->p_vars['tagname'],$this->p_vars['tag_value']);
- }
- }
-
- /**
- * Handles tags like '@filesource' that only work in PHP 4.3.0+
- */
- function invalidTagHandler($word)
- {
- if ($word === false)
- {
- addError(PDERROR_TAG_NOT_HANDLED,$this->p_vars['tagname']);
- }
- }
-
- /**
- * handles @package
- * @tutorial tags.package.pkg
- */
- function packageTagHandler($word)
- {
- if ($word !== false)
- {
- $this->p_vars['tag_value']->add($word);
- } else
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addKeyword($this->p_vars['tagname'],$this->p_vars['tag_value']);
- $this->p_vars[$this->p_vars['docblock_type']]->setExplicitPackage();
- }
- }
-
- /**
- * handles @example
- * @tutorial tags.example.pkg
- */
- function exampleTagHandler($word)
- {
- if ($word !== false)
- {
- $this->p_vars['tag_value']->add($word);
- } else
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addExample($this->p_vars['tag_value'], $this->p_vars['parsepath']);
- }
- }
-
- /**
- * handles @category
- * @tutorial tags.category.pkg
- */
- function categoryTagHandler($word)
- {
- if ($word !== false)
- {
- $this->p_vars['tag_value']->add($word);
- } else
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addKeyword($this->p_vars['tagname'],$this->p_vars['tag_value']);
- $this->p_vars[$this->p_vars['docblock_type']]->setExplicitCategory();
- }
- }
-
- /**
- * handles @global
- * @tutorial tags.global.pkg
- */
- function globalTagHandler($word)
- {
- if ($word !== false)
- {
- // no data yet
- $a = trim($this->p_vars['tag_value']->getString());
- if (empty($a))
- {
- // not an empty word
- if (trim($word) != '')
- {
- if (!empty($this->p_vars['global_type']))
- {
- if (!$this->p_flags['define_global'] && !$this->p_flags['function_global'])
- {
- // @global type $GLOBALVARNAME ?
- if (substr($word,0,1) == '$')
- {
- $this->p_flags['define_global'] = true;
- $this->p_flags['function_global'] = false;
- $this->p_vars['find_global'] = $word;
- } else
- { // function @global type description
- $this->p_flags['function_global'] = true;
- $this->p_flags['define_global'] = false;
- $this->p_vars['tag_value']->add($word);
- }
- } else
- {
- if ($this->p_flags['define_global'])
- {
- $this->p_vars['find_global'] .= $word;
- } elseif($this->p_flags['function_global'])
- {
- // description, to be added to the tag
- $this->p_vars['tag_value']->add($word);
- }
- }
- } else
- {
- $this->p_vars['global_type'] = $word;
- }
- } else $this->p_vars['tag_value']->add($word); // add whitespace to the tag description
- } else
- { // tag_value has data, must be a function @global
- $this->p_vars['tag_value']->add($word);
- }
- } else
- { // endtag
- if ($this->p_flags['define_global'])
- {
- $this->findGlobal($this->p_vars['find_global']);
- }
- elseif ($this->p_flags['function_global'])
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addFuncGlobal($this->p_vars['global_type'],$this->p_vars['tag_value']);
- $this->p_vars['global_type'] = '';
- }
- else
- {
- addError(PDERROR_MALFORMED_GLOBAL_TAG);
- }
- $this->p_vars['find_global'] = '';
- $this->p_flags['define_global'] = false;
- $this->p_flags['function_global'] = false;
- }
- }
-
- /**
- * handles @staticvar
- * @tutorial tags.staticvar.pkg
- */
- function staticvarTagHandler($word)
- {
- if ($word !== false)
- {
- if (!$this->p_vars['returntype']) $this->p_vars['returntype'] = trim($word);
- else
- {
- if (!$this->p_vars['paramname'])
- {
- if (substr(trim($word),0,1) == "$")
- $this->p_vars['paramname'] = trim($word);
- else $this->p_vars['tag_value']->add($word);
- } else
- {
- if (0)//strtolower($this->p_vars['paramtype']) == 'object')
- {
- if (strlen(trim($word)))
- $this->p_vars['paramname'] = trim($word);
- } else $this->p_vars['tag_value']->add($word);
- }
- }
- } else
- {
- if (!$this->p_vars['paramname'])
- $this->p_vars[$this->p_vars['docblock_type']]->addStaticVar(null,$this->p_vars['returntype'],$this->p_vars['tag_value']);
- else
- $this->p_vars[$this->p_vars['docblock_type']]->addStaticVar($this->p_vars['paramname'],$this->p_vars['returntype'],$this->p_vars['tag_value']);
- $this->p_vars['paramname'] = false;
- $this->p_vars['returntype'] = false;
- }
- }
-
- /**
- * handles @uses
- * @tutorial tags.uses.pkg
- */
- function usesTagHandler($word)
- {
- if ($word !== false)
- {
- if (!$this->p_vars['seelement']) $this->p_vars['seelement'] = trim($word);
- else
- {
- $this->p_vars['tag_value']->add($word);
- }
- } else
- {
- $see = new parserStringWithInlineTags;
- $see->add($this->p_vars['seelement']);
- $this->p_vars[$this->p_vars['docblock_type']]->addUses($see,$this->p_vars['tag_value']);
- $this->p_vars['seelement'] = false;
- }
- }
-
- /**
- * handles @param
- * @tutorial tags.param.pkg
- */
- function paramTagHandler($word)
- {
- if ($word !== false)
- {
- if (!$this->p_vars['returntype']) $this->p_vars['returntype'] = trim($word);
- else
- {
- if (!$this->p_vars['paramname'])
- {
- if (substr(trim($word),0,1) == "$" || substr(trim($word),0,2) == "&$")
- $this->p_vars['paramname'] = trim($word);
- else $this->p_vars['tag_value']->add($word);
- } else
- {
- if (0)//strtolower($this->p_vars['paramtype']) == 'object')
- {
- if (strlen(trim($word)))
- $this->p_vars['paramname'] = trim($word);
- } else $this->p_vars['tag_value']->add($word);
- }
- }
- } else
- {
- if (!$this->p_vars['paramname'])
- $this->p_vars[$this->p_vars['docblock_type']]->addParam(null,$this->p_vars['returntype'],$this->p_vars['tag_value']);
- else
- $this->p_vars[$this->p_vars['docblock_type']]->addParam($this->p_vars['paramname'],$this->p_vars['returntype'],$this->p_vars['tag_value']);
- $this->p_vars['paramname'] = false;
- $this->p_vars['returntype'] = false;
- }
- }
-
- /**
- * handles @return
- * @tutorial tags.return.pkg
- */
- function returnTagHandler($word)
- {
- if ($word !== false)
- {
- if (!$this->p_vars['returntype']) $this->p_vars['returntype'] = trim($word);
- else
- {
- if (strtolower($this->p_vars['returntype']) == 'object')
- {
- if (strlen(trim($word)))
- $this->p_vars['returntype'] = trim($word);
- } else $this->p_vars['tag_value']->add($word);
- }
- } else
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addReturn($this->p_vars['returntype'],$this->p_vars['tag_value']);
- $this->p_vars['returntype'] = false;
- }
- }
-
- /**
- * handles @var
- * @tutorial tags.var.pkg
- */
- function varTagHandler($word)
- {
- if ($word)
- {
- if (!$this->p_vars['vartype']) $this->p_vars['vartype'] = trim($word);
- else
- {
- if (strtolower($this->p_vars['vartype']) == 'object')
- {
- if (strlen(trim($word)))
- $this->p_vars['vartype'] = trim($word);
- }
- else $this->p_vars['tag_value']->add($word);
- }
- } elseif ($word === false)
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addVar($this->p_vars['vartype'],$this->p_vars['tag_value']);
- $this->p_vars['vartype'] = false;
- }
- }
- /**#@-*/
- /** @access private */
- function getSource()
- {
- $this->p_flags['get_source'] = true;
- }
- /**#@+
- * @access private
- * @param string token parsed from source
- * @param integer parser constant from {@link Parser.inc}
- */
- /**
- * handler for DOCKEYWORD_EMAIL.
- * this handler recognizes angle brackets < and > surrounding an email address in an @author tag,
- * and returns a mailto: hyperlink
- */
-
- function handleDockeywordEmail($word, $pevent)
- {
- //echo $this->wp->getPos() . ": |$word|\n";
- if (!$this->checkEventPop($word,$pevent) && $word != "<")
- {
- if (strstr($word,"@"))
- {
- $this->p_vars['tag_value']->add('<');
- $this->p_vars['tag_value']->add(new parserLinkInlineTag("mailto:$word",$word));
- $this->p_vars['tag_value']->add('>');
- } else {
- $this->p_vars['tag_value']->add("<$word>");
- }
- }
- }
-
- /**
- * handler for INLINE_DOCKEYWORD.
- * this handler recognizes {@inline tags} like link, and parses them, replacing them directly
- * in the text flow with their output.
- */
-
- function handleInlineDockeyword($word, $pevent)
- {
- // echo $this->wp->getPos() . ": |$word|\n";
-
- // echo "docktype: $this->p_vars['inline_dockeyword_type']\n";
- if (!isset($this->p_vars['inline_dockeyword_type'])) $this->p_vars['inline_dockeyword_type'] = false;
- if (!isset($this->p_vars['inline_dockeyword_data'])) $this->p_vars['inline_dockeyword_data'] = '';
- if (!$this->p_vars['inline_dockeyword_type'])
- {
- if (in_array($word,$this->allowableInlineTags))
- {
- if ($word == '}')
- $this->p_vars['inline_dockeyword_type'] = '';
- else
- $this->p_vars['inline_dockeyword_type'] = strtolower($word);
- $this->p_vars['whitesp'] = $this->wp->returnWhiteSpace;
- $this->wp->setWhiteSpace(true);
- } else {
- if ($this->p_flags['in_desc'])
- {
- // fix 1203445
- if (!isset($this->p_vars['line'][$this->p_vars['linecount']]))
- {
- $this->p_vars['line'][$this->p_vars['linecount']] =
- new parserStringWithInlineTags;
- }
- if ($word == '}')
- {
- $this->p_vars['line'][$this->p_vars['linecount']]->add('{@');
- } else
- {
- $this->p_vars['line'][$this->p_vars['linecount']]->add('{@'.$word);
- }
- } elseif($this->p_flags['in_tag'])
- {
- if ($word == '}')
- $this->p_vars['tag_value']->add('{@'.$word);
- else
- $this->p_vars['tag_value']->add('{@'.$word);
- }
- $this->p_vars['event_stack']->popEvent();
- $this->p_vars['inline_dockeyword_type'] = false;
- $this->p_vars['inline_dockeyword_data'] = '';
- return;
- }
- } else
- {
- if ($word != "}")
- {
- $this->p_vars['inline_dockeyword_data'] .= $word;
- }
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->wp->setWhiteSpace($this->p_vars['whitesp']);
- if ($this->p_vars['inline_dockeyword_type']=='link')
- {
- // support hyperlinks of any protocol
- if (is_numeric(strpos($this->p_vars['inline_dockeyword_data'],'://')) || (strpos(trim($this->p_vars['inline_dockeyword_data']),'mailto:') === 0))
- {
- // if there is more than 1 parameter, the stuff after the space is the hyperlink text
- if (strpos(trim($this->p_vars['inline_dockeyword_data']),' '))
- {
- $i1 = strpos(trim($this->p_vars['inline_dockeyword_data']),' ') + 1;
- $link = substr(trim($this->p_vars['inline_dockeyword_data']),0,$i1 - 1);
- $text = substr(trim($this->p_vars['inline_dockeyword_data']),$i1);
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($link,$text);
-// '<a href="'.$link.'">'.$text.'</a>';
- }
- else
- {
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($this->p_vars['inline_dockeyword_data'],$this->p_vars['inline_dockeyword_data']);
- }
-// '<a href="'.$this->p_vars['inline_dockeyword_data'].'">'.$this->p_vars['inline_dockeyword_data'].'</a>';
- } else
- {
- if (!strpos($this->p_vars['inline_dockeyword_data'],','))
- {
- $testp = explode('#',$this->p_vars['inline_dockeyword_data']);
- if (count($testp) - 1)
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($this->p_vars['inline_dockeyword_data'],$testp[1]);
- else
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($this->p_vars['inline_dockeyword_data'],$this->p_vars['inline_dockeyword_data']);
- } else
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($this->p_vars['inline_dockeyword_data'],$this->p_vars['inline_dockeyword_data']);
- }
- }
- if ($this->p_vars['inline_dockeyword_type'] == 'tutorial')
- {
- $this->p_vars['inline_dockeyword_data'] = new parserTutorialInlineTag($this->p_vars['inline_dockeyword_data'],$this->p_vars['inline_dockeyword_data']);
- }
- if ($this->p_vars['inline_dockeyword_type'] == 'source')
- {
- $this->getSource();
- $this->p_vars['inline_dockeyword_data'] = new parserSourceInlineTag($this->p_vars['inline_dockeyword_data']);
- }
- if ($this->p_vars['inline_dockeyword_type'] == 'inheritdoc')
- {
- $this->p_vars['inline_dockeyword_data'] = new parserInheritdocInlineTag();
- }
- if ($word == '*/')
- {
- if (!isset($this->p_vars['inline_dockeyword_type'])) $this->p_vars['inline_dockeyword_type'] = '';
- if (!isset($this->p_vars['tagname'])) $this->p_vars['tagname'] = '';
- if (!isset($this->p_vars['tag_value']) || !is_object($this->p_vars['tag_value'])) $this->p_vars['tag_value'] = new parserStringWithInlineTags;
- addError(PDERROR_UNTERMINATED_INLINE_TAG,$this->p_vars['inline_dockeyword_type'],$this->p_vars['tagname'],'@'.$this->p_vars['tagname'].' '.$this->p_vars['tag_value']->getString());
- // when we add the error class, raise error here: we reached the end of the docblock
- $this->wp->backupPos($word);
- }
- if ($this->p_flags['in_desc'])
- {
- $this->p_vars['line'][$this->p_vars['linecount']]->add($this->p_vars['inline_dockeyword_data']);
- $this->p_vars['inline_dockeyword_type'] = false;
- $this->p_vars['inline_dockeyword_data'] = '';
- }
- elseif ($this->p_flags['in_tag'])
- {
- $this->p_vars['tag_value']->add($this->p_vars['inline_dockeyword_data']);
- $this->p_vars['inline_dockeyword_type'] = false;
- $this->p_vars['inline_dockeyword_data'] = '';
- }
- }
- }
-
- /**
- * handler for INCLUDE.
- * this handler recognizes include/require/include_once/include_once statements, and publishes the
- * data to Render
- */
-
- function handleInclude($word, $pevent)
- {
- if (!$this->p_flags['in_include'])
- {
- $this->p_vars['linenum'] = $this->wp->linenum;
- }
- $this->p_flags['in_include'] = true;
- $a = $this->checkEventPush( $word, $pevent);
- if (!$this->p_flags['includename_isset'])
- {
- $this->p_flags['includename_isset'] = true;
- $this->p_vars['include_name'] = $this->p_vars['last_word'];
- if ($a)
- $this->p_vars['include_value'] = '';
- else
- $this->p_vars['include_value'] = $word;
- unset($this->p_vars['quote_data']);
- } else
- {
- if (!$a)
- {
- if (empty($this->p_vars['include_params_data']))
- {
- if (isset($this->p_vars['quote_data']))
- {
- $this->p_vars['include_value'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- if ($word != ';')
- $this->p_vars['include_value'] .= $word;
- }
- } else
- {
- $this->p_vars['include_params_data'] = '';
- }
- }
-
- if ($this->checkEventPop($word,$pevent))
- {
- $this->p_vars['include'] = new parserInclude;
- $this->p_vars['include']->setLineNumber($this->p_vars['linenum']);
- $this->p_flags['in_include'] = false;
- $this->p_vars['include']->setName($this->p_vars['include_name']);
- $this->p_vars['include']->setValue($this->p_vars['include_value']);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_INCLUDE,$this->p_vars['include']);
- $this->p_flags['includename_isset'] = false;
- unset($this->p_vars['include']);
- unset($this->p_vars['include_name']);
- unset($this->p_vars['include_value']);
- unset($this->p_vars['include_params_data']);
- }
- }
-
- /**
- * handler for INCLUDE_PARAMS.
- * this handler parses the contents of ( ) in include/require/include_once/include_once statements
- */
-
- function handleIncludeParams($word, $pevent)
- {
- $this->checkEventPush( $word, $pevent);
-
- $this->p_flags['include_parens'] = true;
- if(!isset($this->p_vars['include_params_data'])) $this->p_vars['include_params_data'] = '';
-
- if ($this->checkEventPop($word,$pevent))
- {
- if (isset($this->p_vars['quote_data']))
- {
- $this->p_vars['include_value'] = $this->p_vars['include_params_data'].'"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- } else {
- if (!empty($this->p_vars['include_params_data']))
- $this->p_vars['include_value'] = $this->p_vars['include_params_data'];
- else
- $this->p_vars['include_value'] = trim($this->p_vars['last_word']);
- }
- }
- if (isset($this->p_vars['quote_data']))
- {
- $this->p_vars['include_params_data'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- if (($word != "'") && ($word != '"'))
- $this->p_vars['include_params_data'] .= $word;
- }
-
- /**
- * handler for INCLUDE_PARAMS_PARENTHESIS.
- * this handler takes all parenthetical statements within file in:
- * include statement include(file), and handles them properly
- */
-
- function handleIncludeParamsParenthesis($word, $pevent)
- {
- if (isset($this->p_vars['quote_data']))
- {
- $this->p_vars['include_params_data'] .= '"'.$this->p_vars['quote_data'].'"';
- unset($this->p_vars['quote_data']);
- }
- $this->p_vars['include_params_data'] .= $word;
- $this->checkEventPush( $word, $pevent);
- $this->checkEventPop( $word, $pevent);
- }
- /**#@-*/
- /**
- * this function checks whether parameter $word is a token for pushing a new event onto the Event Stack.
- * @return mixed returns false, or the event number
- */
-
- function checkEventPush($word,$pevent)
- {
- $e = false;
- if (isset($this->pushEvent[$pevent]))
- {
- if (isset($this->pushEvent[$pevent][strtolower($word)]))
- $e = $this->pushEvent[$pevent][strtolower($word)];
- }
- if ($e)
- {
- $this->p_vars['event_stack']->pushEvent($e);
- return $e;
- } else {
- return false;
- }
- }
-
- /**
- * this function checks whether parameter $word is a token for popping the current event off of the Event Stack.
- * @return mixed returns false, or the event number popped off of the stack
- */
-
- function checkEventPop($word,$pevent)
- {
- if (!isset($this->popEvent[$pevent])) return false;
- if (in_array(strtolower($word),$this->popEvent[$pevent]))
- {
- return $this->p_vars['event_stack']->popEvent();
- } else {
- return false;
- }
- }
-
- /**
- * setup the parser tokens, and the pushEvent/popEvent arrays
- * @see $tokens, $pushEvent, $popEvent
- */
-
- function setupStates()
- {
- $this->tokens[STATE_PHPCODE] = array(" ", "\t",";","?>","</script>","/**#@+","/**#@-*/","/**", "//","/*","#","\r\n","\n","\r","(",'<<<','"',"'");
- $this->tokens[STATE_QUOTE] = array("\\\"","\\\\","\"");
- $this->tokens[STATE_LOGICBLOCK] = array("{","}","\"","'","/*","//","#","?>","</script>",'<<<','global','static');
- $this->tokens[STATE_FUNC_GLOBAL] = array("\"","'","/*","//","#",";",",");
- $this->tokens[STATE_STATIC_VAR] = array("\"","'","/*","//","#",";",",",'=','array');
- $this->tokens[STATE_STATIC_VAR_VALUE] = array("/*","//","#"," ","\t",";","=","\"","'","array",",");
- $this->tokens[STATE_NOEVENTS] = array("<?php","<?",'<script language="php">');
- $this->tokens[STATE_COMMENTBLOCK] = array("*/","\n");
- $this->tokens[STATE_COMMENT] = array("\r\n","\r","\n");
- $this->tokens[STATE_DEFINE] = array(" ","(",";");
- $this->tokens[STATE_DEFINE_PARAMS] = array("/*","//","#",",",")"," ","'","\"","(");
- $this->tokens[STATE_DEFINE_PARAMS_PARENTHESIS] = array("(","'","\"",")");
- $this->tokens[STATE_FUNCTION_PARAMS] = array("/*","//","#","\"",",",")","="," ","'","(");
- $this->tokens[STATE_SINGLEQUOTE] = array("'","\\'","\\\\");
- $this->tokens[STATE_CLASS] = array(" ", "\t", "?>", "</script>", ";", "}", "{",
- "/**#@+", "/**#@-*/", "/**", "//", "/*", "#",
- "\r\n", "\n", "\r","(");
- $this->tokens[STATE_DOCBLOCK] = array("*/","*","@","\r\n","\n","\r",". ",".\n",".\t",'{@');
- $this->tokens[STATE_DOCBLOCK_TEMPLATE] = array("*/","*","@","\r\n","\n","\r",". ",".\n",".\t",'{@');
- $this->tokens[STATE_DOCKEYWORD] = array("@","*/","*","\n","\r\n","\r","\t"," ","<",">",'{@');
- $this->tokens[STATE_INLINE_DOCKEYWORD] = array("{@","}","\t"," ","*/");
- $this->tokens[STATE_DOCKEYWORD_EMAIL] = array(">","\n","\r\n","\r");
- $this->tokens[STATE_VAR] = array("/*","//","#"," ","\t",";","=",",","\"","'","array");
- $this->tokens[STATE_GLOBAL] = array("/*","//","#"," ","\t",";","=","\"","'");
- $this->tokens[STATE_GLOBAL_VALUE] = array("/*","//","#"," ","\t",";","=","\"","'","array");
- $this->tokens[STATE_ARRAY] = array("/*","//","#","(",")","\"","'","array");
- $this->tokens[STATE_FUNCTION] = array("(","{","}"," ","\t","&","/*","//","#");
- $this->tokens[STATE_OUTPHP] = array("<?php","<?",'<script language="php">');
- $this->tokens[STATE_EOFQUOTE] = array(" ","\t","\n");
- $this->tokens[STATE_ESCAPE] = false;// this tells the word parser to just cycle
- $this->tokens[STATE_INCLUDE] = array(" ","(",";","'",'"');
- $this->tokens[STATE_INCLUDE_PARAMS] = array("/*",")"," ","'","\"","(");
- $this->tokens[STATE_INCLUDE_PARAMS_PARENTHESIS] = array("(","'","\"",")");
-
- // For each event word to event mapings
- $this->pushEvent[PARSER_EVENT_QUOTE] =
- array(
- "\\" => PARSER_EVENT_ESCAPE
- );
- $this->popEvent[PARSER_EVENT_QUOTE] = array("\"");
-##########################
-
- $this->pushEvent[PARSER_EVENT_LOGICBLOCK] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT,
- "global" => PARSER_EVENT_FUNC_GLOBAL,
- "static" => PARSER_EVENT_STATIC_VAR,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "{" => PARSER_EVENT_LOGICBLOCK,
- "?>" => PARSER_EVENT_OUTPHP,
- "</script>" => PARSER_EVENT_OUTPHP,
- "<<<" => PARSER_EVENT_EOFQUOTE
- );
- $this->popEvent[PARSER_EVENT_LOGICBLOCK] = array("}");
-##########################
-
- $this->pushEvent[PARSER_EVENT_FUNC_GLOBAL] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- );
- $this->popEvent[PARSER_EVENT_FUNC_GLOBAL] = array(";");
-##########################
-
- $this->pushEvent[PARSER_EVENT_STATIC_VAR] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "=" => PARSER_EVENT_STATIC_VAR_VALUE,
- );
- $this->popEvent[PARSER_EVENT_STATIC_VAR] = array(";");
-##########################
-
- $this->pushEvent[PARSER_EVENT_STATIC_VAR_VALUE] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "array" => PARSER_EVENT_ARRAY,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT
- );
- $this->popEvent[PARSER_EVENT_STATIC_VAR_VALUE] = array(";",",");
-##########################
-
- $this->pushEvent[PARSER_EVENT_NOEVENTS] =
- array(
- "<?php" => PARSER_EVENT_PHPCODE,
- "<?" => PARSER_EVENT_PHPCODE,
- '<script language="php">' => PARSER_EVENT_PHPCODE,
- );
-##########################
-
- $this->pushEvent[PARSER_EVENT_PHPCODE] =
- array(
- "function" => PARSER_EVENT_FUNCTION,
- "class" => PARSER_EVENT_CLASS,
- "define" => PARSER_EVENT_DEFINE,
- "include_once" => PARSER_EVENT_INCLUDE,
- "require_once" => PARSER_EVENT_INCLUDE,
- "include" => PARSER_EVENT_INCLUDE,
- "require" => PARSER_EVENT_INCLUDE,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "/**" => PARSER_EVENT_DOCBLOCK,
- "/**#@+" => PARSER_EVENT_DOCBLOCK_TEMPLATE,
- "/**#@-*/" => PARSER_EVENT_END_DOCBLOCK_TEMPLATE,
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "<<<" => PARSER_EVENT_EOFQUOTE,
- "?>" => PARSER_EVENT_OUTPHP,
- "</script>" => PARSER_EVENT_OUTPHP,
- );
-##########################
-
- $this->pushEvent[PARSER_EVENT_FUNCTION] =
- array(
- "(" => PARSER_EVENT_FUNCTION_PARAMS,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "{" => PARSER_EVENT_LOGICBLOCK
- );
- $this->popEvent[PARSER_EVENT_FUNCTION] = array("}");
-##########################
-
- $this->pushEvent[PARSER_EVENT_DOCBLOCK] =
- array(
- "@" => PARSER_EVENT_DOCKEYWORD,
- "{@" => PARSER_EVENT_INLINE_DOCKEYWORD
- );
- $this->popEvent[PARSER_EVENT_DOCBLOCK] = array("*/");
-##########################
-
- $this->pushEvent[PARSER_EVENT_DOCBLOCK_TEMPLATE] =
- array(
- "@" => PARSER_EVENT_DOCKEYWORD,
- "{@" => PARSER_EVENT_INLINE_DOCKEYWORD
- );
- $this->popEvent[PARSER_EVENT_DOCBLOCK_TEMPLATE] = array("*/");
-##########################
-
- $this->pushEvent[PARSER_EVENT_CLASS] =
- array(
- "function" => PARSER_EVENT_FUNCTION,
- "var" => PARSER_EVENT_VAR,
- "/**" => PARSER_EVENT_DOCBLOCK,
- "/**#@+" => PARSER_EVENT_DOCBLOCK_TEMPLATE,
- "/**#@-*/" => PARSER_EVENT_END_DOCBLOCK_TEMPLATE,
- "//" => PARSER_EVENT_COMMENT,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "#" => PARSER_EVENT_COMMENT,
- "?>" => PARSER_EVENT_OUTPHP,
- "</script>" => PARSER_EVENT_OUTPHP,
- );
- $this->popEvent[PARSER_EVENT_CLASS] = array("}");
-##########################
-
- $this->pushEvent[PARSER_EVENT_DEFINE] =
- array(
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "(" => PARSER_EVENT_DEFINE_PARAMS
- );
- $this->popEvent[PARSER_EVENT_DEFINE] = array(";");
-##########################
-
- $this->pushEvent[PARSER_EVENT_INCLUDE] =
- array(
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "(" => PARSER_EVENT_INCLUDE_PARAMS,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->popEvent[PARSER_EVENT_INCLUDE] = array(";");
-##########################
-
- $this->pushEvent[PARSER_EVENT_DEFINE_PARAMS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- '"' => PARSER_EVENT_QUOTE,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT
- );
- $this->popEvent[PARSER_EVENT_DEFINE_PARAMS] = array(")");
-##########################
-
- $this->pushEvent[PARSER_EVENT_INCLUDE_PARAMS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->popEvent[PARSER_EVENT_INCLUDE_PARAMS] = array(")");
-##########################
-
- $this->pushEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->popEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] = array(")");
-##########################
-
- $this->pushEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->popEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] = array(")");
-##########################
-
- $this->pushEvent[PARSER_EVENT_VAR] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "array" => PARSER_EVENT_ARRAY,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT
- );
- $this->popEvent[PARSER_EVENT_VAR] = array(";");
-##########################
-
- $this->pushEvent[PARSER_EVENT_DEFINE_GLOBAL] =
- array(
- "=" => PARSER_EVENT_GLOBAL_VALUE,
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT
- );
- $this->popEvent[PARSER_EVENT_DEFINE_GLOBAL] = array(";");
-##########################
-
- $this->pushEvent[PARSER_EVENT_GLOBAL_VALUE] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "array" => PARSER_EVENT_ARRAY,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT
- );
- $this->popEvent[PARSER_EVENT_GLOBAL_VALUE] = array(";");
-##########################
-
- $this->pushEvent[PARSER_EVENT_COMMENT] =
- array(
- "\\" => PARSER_EVENT_ESCAPE
- );
- $this->popEvent[PARSER_EVENT_COMMENT] = array("\n");
-##########################
-
- $this->popEvent[PARSER_EVENT_COMMENTBLOCK] = array("*/");
-##########################
- $this->pushEvent[PARSER_EVENT_SINGLEQUOTE] =
- array(
- "\\" => PARSER_EVENT_ESCAPE
- );
-
- $this->popEvent[PARSER_EVENT_SINGLEQUOTE] = array("'");
-##########################
- $this->pushEvent[PARSER_EVENT_FUNCTION_PARAMS] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "array" => PARSER_EVENT_ARRAY,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT
- );
- $this->popEvent[PARSER_EVENT_FUNCTION_PARAMS] = array(")");
-##########################
- $this->pushEvent[PARSER_EVENT_DOCKEYWORD] =
- array(
-// "<" => PARSER_EVENT_DOCKEYWORD_EMAIL,
- "{@" => PARSER_EVENT_INLINE_DOCKEYWORD,
- );
-
- $this->popEvent[PARSER_EVENT_DOCKEYWORD] = array("*/");
-##########################
-
- $this->popEvent[PARSER_EVENT_INLINE_DOCKEYWORD] = array("}","*/");
-##########################
-
- $this->popEvent[PARSER_EVENT_OUTPHP] = array("<?php","<?",'<script language="php">');
-##########################
-
- $this->popEvent[PARSER_EVENT_DOCKEYWORD_EMAIL] = array(">","\n");
-
-##########################
- $this->pushEvent[PARSER_EVENT_ARRAY] =
- array(
- "\"" => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_SINGLEQUOTE,
- "array" => PARSER_EVENT_ARRAY,
- "/*" => PARSER_EVENT_COMMENTBLOCK,
- "//" => PARSER_EVENT_COMMENT,
- "#" => PARSER_EVENT_COMMENT
- );
- $this->popEvent[PARSER_EVENT_ARRAY] = array(")");
-##########################
- }
-
- /**
- * tell the parser's WordParser {@link $wp} to set up tokens to parse words by.
- * tokens are word separators. In English, a space or punctuation are examples of tokens.
- * In PHP, a token can be a ;, a parenthesis, or even the word "function"
- * @param $value integer an event number
- * @see WordParser
- */
-
- function configWordParser($e)
- {
- $this->wp->setSeperator($this->tokens[($e + 100)]);
- }
-
- /**
- * Debugging function, takes an event number and attempts to return its name
- * @param $value integer an event number
- */
-
-
- function getParserEventName ($value)
- {
- $lookup = array(
- PARSER_EVENT_NOEVENTS => "PARSER_EVENT_NOEVENTS",
- PARSER_EVENT_PHPCODE => "PARSER_EVENT_PHPCODE",
- PARSER_EVENT_DOCBLOCK => "PARSER_EVENT_DOCBLOCK",
- PARSER_EVENT_FUNCTION => "PARSER_EVENT_FUNCTION",
- PARSER_EVENT_CLASS => "PARSER_EVENT_CLASS",
- PARSER_EVENT_DEFINE => "PARSER_EVENT_DEFINE",
- PARSER_EVENT_DEFINE_PARAMS => "PARSER_EVENT_DEFINE_PARAMS",
- PARSER_EVENT_COMMENT => "PARSER_EVENT_COMMENT",
- PARSER_EVENT_COMMENTBLOCK => "PARSER_EVENT_COMMENTBLOCK",
- PARSER_EVENT_ESCAPE => "PARSER_EVENT_ESCAPE",
- PARSER_EVENT_QUOTE => "PARSER_EVENT_QUOTE",
- PARSER_EVENT_FUNCTION_PARAMS => "PARSER_EVENT_FUNCTION_PARAMS",
- PARSER_EVENT_SINGLEQUOTE => "PARSER_EVENT_SINGLEQUOTE",
- PARSER_EVENT_VAR => "PARSER_EVENT_VAR",
- PARSER_EVENT_LOGICBLOCK => "PARSER_EVENT_LOGICBLOCK",
- PARSER_EVENT_OUTPHP => "PARSER_EVENT_OUTPHP",
- PARSER_EVENT_DOCKEYWORD => "PARSER_EVENT_DOCKEYWORD",
- PARSER_EVENT_DOCKEYWORD_EMAIL => "PARSER_EVENT_DOCKEYWORD_EMAIL",
- PARSER_EVENT_ARRAY => "PARSER_EVENT_ARRAY",
- PARSER_EVENT_INLINE_DOCKEYWORD => "PARSER_EVENT_INLINE_DOCKEYWORD",
- PARSER_EVENT_EOFQUOTE => "PARSER_EVENT_EOFQUOTE",
- PARSER_EVENT_INCLUDE => "PARSER_EVENT_INCLUDE",
- PARSER_EVENT_INCLUDE_PARAMS => "PARSER_EVENT_INCLUDE_PARAMS",
- PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS => "PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS",
- PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS => "PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS",
- PARSER_EVENT_DEFINE_GLOBAL => "PARSER_EVENT_DEFINE_GLOBAL",
- PARSER_EVENT_GLOBAL_VALUE => "PARSER_EVENT_GLOBAL_VALUE",
- PARSER_EVENT_FUNC_GLOBAL => "PARSER_EVENT_FUNC_GLOBAL",
- PARSER_EVENT_STATIC_VAR => "PARSER_EVENT_STATIC_VAR",
- PARSER_EVENT_DOCBLOCK_TEMPLATE => "PARSER_EVENT_DOCBLOCK_TEMPLATE",
- PARSER_EVENT_END_DOCBLOCK_TEMPLATE => "PARSER_EVENT_END_DOCBLOCK_TEMPLATE",
- PARSER_EVENT_METHOD_LOGICBLOCK => 'PARSER_EVENT_METHOD_LOGICBLOCK',
- PARSER_EVENT_CLASS_MEMBER => 'PARSER_EVENT_CLASS_MEMBER',
- PARSER_EVENT_METHOD => 'PARSER_EVENT_METHOD',
- PARSER_EVENT_QUOTE_VAR => 'PARSER_EVENT_QUOTE_VAR',
- PARSER_EVENT_ACCESS_MODIFIER => 'PARSER_EVENT_ACCESS_MODIFIER',
- PARSER_EVENT_IMPLEMENTS => 'PARSER_EVENT_IMPLEMENTS',
- PARSER_EVENT_CLASS_CONSTANT => 'PARSER_EVENT_CLASS_CONSTANT',
- PARSER_EVENT_VAR_ARRAY => 'PARSER_EVENT_VAR_ARRAY',
- PARSER_EVENT_VAR_ARRAY_COMMENT =>'PARSER_EVENT_VAR_ARRAY_COMMENT',
- );
- if (isset($lookup[$value]))
- return $lookup[$value];
- else return $value;
- }
-}
-
-/**
- * Global package page parser
- *
- * @deprecated in favor of tutorials
- * @tutorial tutorials.pkg
- * @package phpDocumentor
- * @subpackage Parsers
- */
-class ppageParser extends Parser
-{
- /** @var string */
- var $package = false;
- /** @var string */
- var $subpackage = '';
- /**
- * set up invariant Parser variables
- */
- function ppageParser()
- {
- Parser::Parser();
- $this->allowableInlineTags = $GLOBALS['_phpDocumentor_inline_tutorial_tags_allowed'];
- $this->eventHandlers = array();
- $this->eventHandlers[PARSER_EVENT_NOEVENTS] = 'defaultHandler';
- $this->eventHandlers[PARSER_EVENT_INLINE_DOCKEYWORD] = 'handleInlineDocKeyword';
- }
-
- /**
- * set up invariant Parser variables
- */
- function setupStates()
- {
- $this->tokens[STATE_NOEVENTS] = array("{@","}");
- $this->tokens[STATE_INLINE_DOCKEYWORD] = array("{@","}","\t"," ");
-
-##########################
-
- $this->pushEvent[PARSER_EVENT_NOEVENTS] =
- array(
- "{@" => PARSER_EVENT_INLINE_DOCKEYWORD
- );
-##########################
-
- $this->popEvent[PARSER_EVENT_INLINE_DOCKEYWORD] = array("}");
- }
-
- /**
- * Parse a new file
- *
- * @param string $parse_data
- * @param string $package
- * @param int $subpackage
- * @return mixed false or parsed data
- */
- function parse (&$parse_data,$xml,$package = 'default',$subpackage = '',$tutorial = '',
- $category='default', $path='')
- {
- $this->setupStates();
- $this->p_vars['total'] = new parserPackagePage($package,$xml);
- $this->p_vars['tutorial'] = $tutorial;
- $this->_path = $path;
- $this->category = $category;
- $this->package = $package;
- if (!isset($subpackage) || !$subpackage) $subpackage = '';
- $this->subpackage = $subpackage;
- if (strlen($parse_data) == 0)
- {
- return false;
- }
-
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
- $this->p_vars['event_stack'] = new EventStack;
- // change this to a new ParserStringWithInlineTags, and change all $total .= blah to $total->add(blah)
- // then modify phpDocumentor_IntermediateParser->Convert to convert all package pages (the package page handler in phpDocumentor_IntermediateParser should
- // save them all in a variable) to perform the linking. then, remove the legacy code from handleDocBlock
- // and handleClass in Render.inc, and do a loop that converts each package page, and passes it to handleEvent
- // just like Converter::walk does with the other elements. The only other addition that might be good is a
- // new descendant of parserElement parserPackagePage that contains the data and stuff. Hope this helps :)
- $total = '';
-
- $this->wp->setup($parse_data);
-
- $this->p_flags['reset_quote_data'] = true;
-
- do
- {
- $lpevent = $pevent;
- $pevent = $this->p_vars['event_stack']->getEvent();
- if ($lpevent != $pevent)
- {
- $this->p_vars['last_pevent'] = $lpevent;
- }
-
- if ($this->p_vars['last_pevent'] != $pevent)
- {
- // its a new event so the word parser needs to be reconfigured
- $this->configWordParser($pevent);
- }
-
- if (!$xml)
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,($pevent + 100));
-
-
- $this->p_vars['last_word'] = $word;
- $word = $this->wp->getWord();
-
- if (0)//PHPDOCUMENTOR_DEBUG == true)
- {
- echo "LAST: |" . $this->p_vars['last_word'] . "|\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo $this->wp->getPos() . ": |$word|\n";
- }
- if (isset($this->eventHandlers[$pevent]))
- {
- $handle = $this->eventHandlers[$pevent];
- $this->$handle($word, $pevent);
- }
- } while (!($word === false));
- if (!$xml)
- $this->PublishEvent(PHPDOCUMENTOR_EVENT_PACKAGEPAGE,$this->p_vars['total']);
- else
- return $this->p_vars['total']->value;
- }
-
- /**
- * Handles all non-inline tags
- *
- * @param string token
- * @param integer parser event
- */
- function defaultHandler($word, $pevent)
- {
- if (!$this->checkEventPush( $word, $pevent))
- {
- if ($word) $this->p_vars['total']->add($word);
- }
- }
-
- /**
- * handler for INLINE_DOCKEYWORD.
- * this handler recognizes {@inline tags} like link, and parses them, replacing them directly
- * in the text flow with their output.
- * @param string token
- * @param integer parser event
- */
-
- function handleInlineDockeyword($word, $pevent)
- {
- // echo $this->wp->getPos() . ": |$word|\n";
-
- // echo "docktype: $this->p_vars['inline_dockeyword_type']\n";
- if (!isset($this->p_vars['inline_dockeyword_type'])) $this->p_vars['inline_dockeyword_type'] = false;
- if (!isset($this->p_vars['inline_dockeyword_data'])) $this->p_vars['inline_dockeyword_data'] = '';
- if (!$this->p_vars['inline_dockeyword_type'])
- {
- if (in_array($word,$this->allowableInlineTags))
- {
- $this->p_vars['inline_dockeyword_type'] = strtolower($word);
- $this->p_vars['whitesp'] = $this->wp->returnWhiteSpace;
- $this->wp->setWhiteSpace(true);
- } else {
- if ($word == '}')
- $this->p_vars['total']->add('{@');
- else
- {
- $this->p_vars['total']->add('{@'.$word);
- $this->p_vars['event_stack']->popEvent();
- }
- $this->p_vars['inline_dockeyword_type'] = false;
- $this->p_vars['inline_dockeyword_data'] = '';
- }
- } else
- {
- if ($word != "}")
- {
- $this->p_vars['inline_dockeyword_data'] .= $word;
- }
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->wp->setWhiteSpace($this->p_vars['whitesp']);
- if ($this->p_vars['inline_dockeyword_type']=='link')
- {
- // support hyperlinks of any protocol
- if (is_numeric(strpos($this->p_vars['inline_dockeyword_data'],'://')) || (strpos(trim($this->p_vars['inline_dockeyword_data']),'mailto:') === 0))
- {
- // if there is more than 1 parameter, the stuff after the space is the hyperlink text
- if (strpos(trim($this->p_vars['inline_dockeyword_data']),' '))
- {
- $i1 = strpos(trim($this->p_vars['inline_dockeyword_data']),' ') + 1;
- $link = substr(trim($this->p_vars['inline_dockeyword_data']),0,$i1 - 1);
- $text = substr(trim($this->p_vars['inline_dockeyword_data']),$i1);
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($link,$text);
-// '<a href="'.$link.'">'.$text.'</a>';
- }
- else
- {
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($this->p_vars['inline_dockeyword_data'],$this->p_vars['inline_dockeyword_data']);
- }
-// '<a href="'.$this->p_vars['inline_dockeyword_data'].'">'.$this->p_vars['inline_dockeyword_data'].'</a>';
- } else
- {
- $testp = explode('#',$this->p_vars['inline_dockeyword_data']);
- if (count($testp) - 1) $this->p_vars['inline_dockeyword_data'] = $testp[1];
- $this->p_vars['inline_dockeyword_data'] = new parserLinkInlineTag($this->p_vars['inline_dockeyword_data'],$this->p_vars['inline_dockeyword_data']);
- }
- }
- if ($this->p_vars['inline_dockeyword_type']=='id')
- {
- $this->p_vars['inline_dockeyword_data'] = new parserIdInlineTag($this->category,$this->package,$this->subpackage,$this->p_vars['tutorial'],trim($this->p_vars['inline_dockeyword_data']));
- }
- if ($this->p_vars['inline_dockeyword_type'] == 'tutorial')
- {
- $this->p_vars['inline_dockeyword_data'] = new parserTutorialInlineTag($this->p_vars['inline_dockeyword_data'],$this->p_vars['inline_dockeyword_data']);
- }
- if ($this->p_vars['inline_dockeyword_type'] == 'toc')
- {
- $this->p_vars['inline_dockeyword_data'] = new parserTocInlineTag();
- }
- if ($this->p_vars['inline_dockeyword_type'] == 'example')
- {
- $example =
- new parserExampleInlineTag($this->p_vars['inline_dockeyword_data'], $this->_path, true);
- $this->p_vars['total']->add($example->getProgramListing());
- } else
- {
- $this->p_vars['total']->add($this->p_vars['inline_dockeyword_data']);
- }
- $this->p_vars['inline_dockeyword_type'] = false;
- $this->p_vars['inline_dockeyword_data'] = '';
- }
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ParserData.inc b/buildscripts/PhpDocumentor/phpDocumentor/ParserData.inc
deleted file mode 100644
index d7d0f285..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserData.inc
+++ /dev/null
@@ -1,725 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Parser Data Structures
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserData.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-/**
- * Contains information about a PHP file, used to group procedural elements
- * together.
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserData.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-class parserPage
-{
- /**
- * Type is used by many functions to skip the hassle of if
- * <code>phpDocumentor_get_class($blah) == 'parserBlah'</code>
- * @var string
- */
- var $type = 'page';
- /**
- * not implemented in this version, will be used to link xml output pages
- * @var string
- */
- var $id = '';
- /**
- * filename.ext (no path)
- * @var string
- */
- var $file = '';
- /**
- * relative source location
- * @var string
- */
- var $sourceLocation = '';
- /**
- * phpdoc-safe name (only letters, numbers and _)
- * @var string
- */
- var $name = '';
- /**
- * @var string
- */
- var $category = 'default';
- /**
- * @var string
- */
- var $package = 'default';
- /**
- * @var string
- */
- var $subpackage = '';
- /**
- * @var string
- */
- var $parserVersion = PHPDOCUMENTOR_VER;
- /**
- * not implemented yet
- * file modification date, will be used for makefiles
- * @var string
- */
- var $modDate = '';
- /**
- * @var string full path this page represents
- */
- var $path = '';
- /**
- * Tokenized source code of the file
- * @var array
- */
- var $source = array();
- /**
- * Used to limit output, contains contents of --packageoutput commandline.
- * Does not increase parsing time. Use --ignore for that
- * @see phpDocumentor_IntermediateParser::$packageoutput, Converter::$package_output
- * @var mixed either false or an array of packages
- */
- var $packageOutput = false;
-
- /**
- * sets package to default package
- * @global string default package name
- */
- function parserPage()
- {
- global $phpDocumentor_DefaultPackageName;
- $this->package = $GLOBALS['phpDocumentor_DefaultPackageName'];
- }
-
- /**
- * @return string always "page"
- */
- function getType()
- {
- return 'page';
- }
-
- /**
- * Sets the source code of the file for highlighting.
- *
- * PHP 4.3.0+ passes an array of tokenizer tokens by line number. PHP
- * 4.2.3- passes a string to be passed to {@link highlight_string()}
- * @param string|array
- */
- function setSource($source)
- {
- $this->source = $source;
- }
-
- /**
- * Sets the name to display in documentation (can be an alias set with @name)
- * @param string $file
- */
- function setFile($file)
- {
- $this->file = $file;
- }
-
- /**
- * @return string filename.ext or @name alias
- */
- function getFile()
- {
- if (!isset($this->file)) return false;
- return $this->file;
- }
-
- /**
- * @param string $path full path to file
- */
- function setPath($path)
- {
- // look for special windows case
- if(SMART_PATH_DELIMITER === '\\')
- $this->path = strtr($path,'/','\\');
- else
- $this->path = $path;
- }
-
- /**
- * @return string fully delimited path (OS-dependent format)
- */
- function getPath()
- {
- if (!isset($this->path)) return false;
- return $this->path;
- }
-
- /**
- * @param array $packages array of packages to display in documentation (package1,package2,...)
- * @see phpDocumentor_IntermediateParser::$packageoutput
- */
- function setPackageOutput($packages)
- {
- $this->packageOutput = $packages;
- }
-
- /**
- * @return array array of packages (package1,package2,...)
- * @see phpDocumentor_IntermediateParser::$packageoutput
- */
- function getPackageOutput()
- {
- return $this->packageOutput;
- }
-
- /**
- * @param string $name phpdoc-safe name (only _, numbers and letters) set by Parser::parse()
- * @see Parser::parse()
- */
- function setName($name)
- {
- $this->name = $name;
- }
-
- /**
- * @return string phpdoc-safe name (only _, numbers and letters)
- */
- function getName()
- {
- if (!isset($this->name)) return false;
- return $this->name;
- }
-
- /**
- * @param string $source path of this file relative to program root
- */
- function setSourceLocation($source)
- {
- $this->sourceLocation = $source;
- }
-
- /**
- * @param Converter
- * @param boolean if this parameter is true, it will truncate the source location to the
- * subdirectory of pear
- * @return string path of this file relative to program root
- */
- function getSourceLocation ($c,$pearize = false)
- {
- global $_phpDocumentor_options;
- if (!isset($this->sourceLocation)) return false;
- if ($pearize)
- {
- $sl = $this->sourceLocation;
- if (strpos($sl,'pear/'))
- {
- $sl = substr($sl,strpos($sl,'pear/') + 5);
- return $sl;
- } else
- {
- return str_replace($_phpDocumentor_options['Program_Root'] . PATH_DELIMITER,'',$sl);
- }
- return $sl;
- }
- return $this->sourceLocation;
- }
- /**
- * Not implemented in this version
- * @return boolean tell the parser whether to parse the file, otherwise
- * this function will retrieve the parsed data from external file
- */
- function getParseData()
- {
- return true;
- }
-}
-
-/**
- * Contains an in-memory representation of all documentable elements
- * ({@link parserPage}, {@link parserFunction}, {@link parserDefine},
- * {@link parserInclude}, {@link parserClass}, {@link parserMethod},
- * {@link parserVar}) and their DocBlocks ({@link parserDocBlock}).
- *
- * This class works in coordination with {@link phpDocumentor_IntermediateParser}
- * to take output from {@link Parser::handleEvent()} and create indexes, links,
- * and other assorted things (all documented in phpDocumentor_IntermediateParser
- * and {@link Converter})
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserData.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-class parserData
-{
- /**
- * {@link parserPage} element that is this parserData's parent, or false if
- * not set.
- * @var false|parserPage
- */
- var $parent = false;
- /**
- * array of parsed elements
- * @var array
- */
- var $elements = array();
- /**
- * array of parsed elements with @access private
- * @var array
- */
- var $privateelements = array();
- /**
- * array of parsed class elements
- * @var array
- */
- var $classelements = array();
-
- /**
- * @var parserTutorial|false
- */
- var $tutorial = false;
- /**
- * array of parsed class elements with @access private
- * @var array
- */
- var $privateclasselements = array();
- /**
- * array of links descended from {@link abstractLink}
- * @var array
- * @see pageLink, defineLink, classLink, functionLink, methodLink, varLink
- */
- var $links = array();
- /**
- * used by {@link phpDocumentor_IntermediateParser::handleDocBlock()} to
- * determine whether a docblock is a page-level docblock or not. $clean is
- * true as long as only 0 or 1 docblock has been parsed, and no element
- * other than parserPage has been parsed
- * @var boolean
- */
- var $clean = true;
- /**
- * DocBlock ({@link parserDocBlock}) for this page, or false if not set
- * @var mixed
- */
- var $docblock = false;
- /**
- * Flag used to determine whether a page-level docblock is present
- * @var boolean
- * @access private
- */
- var $_explicitdocblock = false;
- /**
- * Type is used by many functions to skip the hassle of if
- * <code>phpDocumentor_get_class($blah) == 'parserBlah'</code>
- * always 'page', used in element indexing and conversion functions found in
- * {@link Converter}
- * @var string
- */
- var $type = 'page';
-
- /**
- * @param parserElement add a parsed element to the {@link $elements} array,
- * also sets {@link $clean} to false
- */
- function addElement(&$element)
- {
- $element->setPath($this->parent->path);
- if ($element->getType() == 'class' || $element->getType() == 'method' || $element->getType() == 'var'
- || $element->getType() == 'const')
- {
- $this->classelements[] = $element;
- } else
- {
- $this->elements[] = $element;
- }
- $this->clean = false;
- }
-
- /**
- * @param parserTutorial
- * @param Converter
- */
- function addTutorial($t,&$c)
- {
- $this->tutorial = new tutorialLink;
- $this->tutorial->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($c));
- }
-
- /**
- * If this file has a tutorial associated with it, returns a link to the
- * tutorial.
- * @return tutorialLink
- */
- function getTutorial()
- {
- return $this->tutorial;
- }
-
- /**
- * If the page-level DocBlock was present in the source, returns true
- * @return boolean
- */
- function hasExplicitDocBlock()
- {
- return $this->_explicitdocblock;
- }
-
- /**
- * Tells this page that its DocBlock was not implicit
- */
- function explicitDocBlock()
- {
- $this->_explicitdocblock = true;
- }
-
- /**
- * @param parserElement element to add a new link (descended from
- * {@link abstractLink})to the {@link $links} array
- * @param string classname for elements that are class-based (this may be
- * deprecated in the future, as the classname should be
- * contained within the element. if $element is a page, this
- * parameter is a package name
- * @param string subpackage name for page elements
- */
- function addLink(&$element,$classorpackage = '', $subpackage = '')
- {
- switch($element->type)
- {
- case 'function':
- $x = new functionLink;
- $x->addLink($this->parent->path, $this->parent->name, $element->name, $element->docblock->package, $element->docblock->subpackage);
- return $x;
- break;
- case 'define':
- $x = new defineLink;
- $x->addLink($this->parent->path, $this->parent->name, $element->name, $element->docblock->package, $element->docblock->subpackage);
- return $x;
- break;
- case 'global':
- $x = new globalLink;
- $x->addLink($this->parent->path, $this->parent->name, $element->name, $element->docblock->package, $element->docblock->subpackage);
- return $x;
- break;
- case 'class':
- $x = new classLink;
- $x->addLink($this->parent->path, $this->parent->name, $element->name, $element->docblock->package, $element->docblock->subpackage);
- return $x;
- break;
- case 'method':
- $x = new methodLink;
- $x->addLink($classorpackage, $this->parent->path, $this->parent->name, $element->name, $element->docblock->package, $element->docblock->subpackage);
- return $x;
- break;
- case 'var':
- $x = new varLink;
- $x->addLink($classorpackage, $this->parent->path, $this->parent->name, $element->name, $element->docblock->package, $element->docblock->subpackage);
- return $x;
- break;
- case 'page':
- if (empty($classorpackage)) $classorpackage = $GLOBALS['phpDocumentor_DefaultPackageName'];
- $x = new pageLink;
- $x->addLink($element->path,$element->name,$element->file,$classorpackage, $subpackage);
- return $x;
- break;
- }
- }
-
- function &getLink(&$c, $text = false)
- {
- return $c->getPageLink($this->parent->file, $this->docblock->package, $this->parent->path, $text);
- }
-
- /**
- * returns a list of all classes declared in a file
- * @param Converter &$c
- * @return array Format: array(packagename => parserClass,packagename => parserClass,...)
- */
- function getClasses(&$c)
- {
- $r = $c->classes->getClassesInPath($this->parent->path);
- $rr = array();
- if ($r)
- foreach($r as $class => $obj)
- {
- $rr[$obj->docblock->package][] = $obj;
- }
- return $rr;
- }
-
- /**
- * Get the output-safe filename (. changed to _)
- * @return string
- */
- function getName()
- {
- if (isset($this->parent) && $this->parent)
- return $this->parent->getName();
- }
-
- /**
- * @param parserPage parent element of this parsed data
- */
- function setParent(&$parent)
- {
- $this->parent = $parent;
- }
-
- /**
- * @return bool returns the value of {@link $clean}
- */
- function isClean()
- {
- return $this->clean;
- }
-
- /**
- * @param parserDocBlock
- * @see parserDocBlock
- */
- function setDocBlock(&$docblock)
- {
- $this->docblock = $docblock;
- }
-}
-
-/**
- * Base class for all elements
- * @package phpDocumentor
- * @subpackage ParserData
- * @abstract
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserData.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-class parserBase
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * always base
- * @var string
- */
- var $type = 'base';
- /**
- * set to different things by its descendants
- * @abstract
- * @var mixed
- */
- var $value = false;
-
- /**
- * @return string returns value of {@link $type}
- */
- function getType()
- {
- return $this->type;
- }
-
- /**
- * @param mixed set the value of this element
- */
- function setValue($value)
- {
- $this->value = $value;
- }
-
- /**
- * @return mixed get the value of this element (element-dependent)
- */
- function getValue()
- {
- return $this->value;
- }
-}
-
-
-/**
- * Used to represent strings that contain inline tags, so that they can be properly parsed at link time
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserData.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-class parserStringWithInlineTags extends parserBase
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * always '_string'
- * @var string
- */
- var $type = '_string';
- /** @access private */
- var $cache = false;
- /**
- * array of strings and {@link parserInlineTag}s
- * Format:
- * array(string1,string2,parserInlineTag1,string3,parserInlineTag2,...)
- * @var array
- */
- var $value = array();
-
- /**
- * equivalent to the . operator ($a = $b . $c)
- * @param mixed either a string or a {@link parserInlineTag}
- */
- function add($stringOrInlineTag)
- {
- if (is_string($stringOrInlineTag))
- {
- if (!count($this->value))
- {
- $this->value[] = $stringOrInlineTag;
- return;
- }
- if (is_string($this->value[count($this->value) - 1]))
- {
- $this->value[count($this->value) - 1] .= $stringOrInlineTag;
- return;
- } else
- {
- $this->value[] = $stringOrInlineTag;
- return;
- }
- } else
- {
- if (is_a($stringOrInlineTag,'parserinlinetag') && phpDocumentor_setup::checkIgnoreTag($stringOrInlineTag->inlinetype, true)) return;
- $this->value[] = $stringOrInlineTag;
- }
- }
-
- /**
- * Determine whether the string contains any inline tags
- * @tutorial inlinetags.pkg
- * @return boolean
- */
- function hasInlineTag()
- {
- for($i=0;$i<count($this->value);$i++)
- {
- if (is_a($this->value[$i],'parserinlinetag')) return true;
- }
- return false;
- }
-
- /**
- * Pass source code to any {@}source} tags contained within the string
- * for later conversion.
- * @param string|array source code ready to be highlighted
- */
- function setSource($source)
- {
- for($i=0;$i<count($this->value);$i++)
- {
- if (phpDocumentor_get_class($this->value[$i]) == 'parsersourceinlinetag')
- {
- $this->value[$i]->setSource($source);
- }
- }
- }
-
- /**
- * equivalent to trim(strlen($string))
- * @return integer length of the string this object represents
- */
- function trimmedStrlen()
- {
- $a = 0;
- for($i=0;$i<count($this->value);$i++)
- {
- if (is_string($this->value[$i]))
- {
- if ($i == 0)
- {
- $a += strlen(ltrim($this->value[$i]));
- } elseif ($i == count($this->value[$i]) - 1)
- {
- $a += strlen(chop($this->value[$i]));
- }
- } else
- {
- $a += $this->value[$i]->Strlen();
- }
- }
- return $a;
- }
-
- /**
- * return the string unconverted (all inline tags are taken out - this
- * should only be used in pre-parsing to see if any other text
- * is in the string)
- * @uses parserInlineTag::getString() removes inline tag length, as it is
- * indeterminate until conversion.
- * @return string trimmed value
- */
- function getString($trim = true)
- {
- $a = '';
- for($i=0; $i<count($this->value); $i++)
- {
- if (is_string($this->value[$i]))
- {
- $a .= $this->value[$i];
- } else
- {
- $a .= $this->value[$i]->getString();
- }
- }
- if ($trim) $a = trim($a);
- return $a;
- }
-
- /**
- * Use to convert the string to a real string with all inline tags parsed and linked
- * @see Converter::returnSee()
- * @param Converter
- * @param boolean true if one needs to postprocess
- * @param boolean false if the output should not be trimmed
- */
- function Convert(&$converter,$postprocess = true, $trim = true)
- {
- if ($this->cache)
- {
- if ($converter->name == $this->cache['name'] && $converter->outputformat == $this->cache['output'] && $converter->checkState($this->cache['state']) && $this->cache['postprocess'] === $postprocess) return $this->cache['contents'];
- if ($converter->name != $this->cache['name']) {
- $this->cache = false;
- }
- }
- if (is_string($this->value)) return $this->value;
- $a = '';
- for($i=0; $i<count($this->value); $i++)
- {
- if (is_string($this->value[$i]))
- {
- if ($postprocess && !method_exists($converter,'postProcess')) var_dump('a',$converter);
- if ($postprocess) $a .= $converter->postProcess($this->value[$i]);
- else $a .= $this->value[$i];
- } else
- {
- $a .= $this->value[$i]->Convert($converter, $postprocess);
- }
- }
- if ($trim) {
- $a = trim($a);
- }
- $this->cache = array('name' => $converter->name,'output' => $converter->outputformat, 'contents' => $a, 'state' => $converter->getState(), 'postprocess' => $postprocess);
- return $a;
- }
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc b/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc
deleted file mode 100644
index bd80d104..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc
+++ /dev/null
@@ -1,1456 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * All of the functions to clean up and handle the long description
- * of a DocBlock are in this file.
- *
- * The primary functionality is based on Parser and WordParser, and modified to recognize
- * only the tokens defined in the PHPDOCUMENTOR_PDP_* constants
- * @see Parser, WordParser
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.2
- */
-/**#@+
- * {@link parserDescParser} token constants
- */
-/** when <<code>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_CODE', 600);
-/** when <<code>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_CODE', 700);
-/** when <<p>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_P', 601);
-/** when <<p>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_P', 701);
-/** when \n\n is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_DOUBLECR', 602);
-/** when \n\n is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_DOUBLECR', 702);
-/** when <<pre>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_PRE', 603);
-/** when <<pre>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_PRE', 703);
-/** when <<ul>>/<<ol>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_LIST', 604);
-/** when <<ul>>/<<ol>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_LIST', 704);
-/** when <<b>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_B', 605);
-/** when <<b>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_B', 705);
-/** when <<i>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_I', 606);
-/** when <<i>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_I', 706);
-/** when <<br>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_BR', 607);
-/** when <<br>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_BR', 707);
-/** when the << potential escape for tags is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE',608);
-/** when the << potential escape for tags is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_ESCAPE',708);
-/** when << /pre>> is found in a <<pre>><</pre>> section */
-define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE',609);
-/** when << /pre>> is found in a <<pre>><</pre>> section */
-define('PHPDOCUMENTOR_PDP_STATE_ESCAPE_PRE',709);
-/** when << /code>> is found in a <<code>><</code>> section */
-define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE',610);
-/** when << /code>> is found in a <<code>><</code>> section */
-define('PHPDOCUMENTOR_PDP_STATE_ESCAPE_CODE',710);
-/** when <<var>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_VAR',611);
-/** when <<var>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_VAR',711);
-/** when <<samp>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_SAMP',612);
-/** when <<samp>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_SAMP',712);
-/** when <<kbd>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_EVENT_KBD',613);
-/** when <<kbd>> is found in a desc */
-define('PHPDOCUMENTOR_PDP_STATE_KBD',713);
-/** when a simple list is found in a desc
- *
- * like
- * <pre>
- * o item 1
- * o item 2
- * </pre>
- */
-define('PHPDOCUMENTOR_PDP_EVENT_SIMLIST',614);
-/** when a simple list is found in a desc
- *
- * like
- * <pre>
- * o item 1
- * o item 2
- * </pre>
- */
-define('PHPDOCUMENTOR_PDP_STATE_SIMLIST',714);
-/**#@-*/
-/**
-* Like WordParser but designed to handle an array with strings and
-* {@link parserInlineTag}s
-* @package phpDocumentor
-* @subpackage WordParsers
-* @author Greg Beaver <cellog@users.sourceforge.net>
-* @since 1.2
-*/
-class ObjectWordParser extends WordParser
-{
- /**
- * Determines whether text searching is case-sensitive or not
- * @access private
- */
- var $_casesensitive = false;
-
- function ObjectWordParser($casesensitive = false)
- {
- $this->_casesensitive = $casesensitive;
- }
-
- /**
- * Set the word parser to go.
- *
- * @param array {@link parserStringWithInlineTags::$value} style-array, with
- * alternating text and inline tags
- */
- function setup(&$input)
- {
-// if (is_string($input[0])) $input[0] = ltrim($input[0]);
- $this->data = & $input;
- $this->pos = 0;
- $this->linenum = 0;
- $this->linenumpos = 0;
- $this->cache = array();
- reset($this->data);
- list($this->index,) = each($this->data);
- if (!is_object($this->data[$this->index]))
- $this->size = strlen($this->data[$this->index]);
- else $this->size = 0;
- //$this->run = 0;
- //$this->word = WORD_PARSER_RET_WORD;
- }
-
- function getWord()
- {
- if (!isset($this->data[$this->index])) return false;
- // return any inline tags unchanged
- if (is_object($this->data[$this->index]))
- {
- $index = $this->index;
- list($this->index,) = each($this->data);
- $this->pos = 0;
- if ($this->index)
- {
- if (!is_object($this->data[$this->index]))
- $this->size = strlen($this->data[$this->index]);
- else $this->size = 0;
- $this->cache = array();
- return $this->data[$index];
- } else
- {
- return false;
- }
- }
- //$st = $this->mtime();
- if ($this->size == $this->pos)
- {
- // cycle to next line in the array
- list($this->index,) = each($this->data);
- if (!$this->index) return false;
- $this->pos = 0;
- if (!is_object($this->data[$this->index]))
- $this->size = strlen($this->data[$this->index]);
- else $this->size = 0;
- $this->cache = array();
- return $this->getWord();
- }
-
- $npos = $this->size;
- if (is_array($this->wordseperators))
- {
- //$this->wordseperators = array();
- foreach($this->wordseperators as $sep)
- {
- if (isset($this->cache[$sep]))
- $tpos = $this->cache[$sep];
- else
- $tpos = false;
- if ($tpos < $this->pos || !is_int($tpos))
- {
- if ($this->_casesensitive)
- $tpos = strpos($this->data[$this->index],$sep,$this->pos);
- else
- $tpos = strpos(strtolower($this->data[$this->index]),$sep,$this->pos);
- }
-
- if ( ($tpos < $npos) && !($tpos === false))
- {
- //echo trim($sep) . "=$tpos\n";
- $npos = $tpos;
- $seplen = strlen($sep);
- }
- else if (!($tpos === false))
- {
- $this->cache[$sep] = $tpos;
- }
- }
- } else {
- // its time to cycle
- return "";
- }
-
- $len = $npos - $this->pos;
- if ($len == 0)
- {
- $len = $seplen;
- }
-
- //$st3 = $this->mtime();
- $word = substr($this->data[$this->index],$this->pos,$len);
-
- // Change random other os newlines to the unix one
- if ($word == "\r" || $word == "\r\n")
- {
- $word = "\n";
- }
-
- if ($this->linenumpos <= $this->pos)
- {
- $this->linenumpos = $this->pos + $len;
- $this->linenum += count(explode("\n",$word)) - 1;
- }
-
- if ($this->getsource)
- {
- $this->source .= $word;
- }
- $this->pos = $this->pos + $len;
- //$this->word = WORD_PARSER_RET_SEP;
-
- // Things like // commenats rely on the newline to find their end so im going to have to return them
- // never return worthless white space /t ' '
- if ($this->returnWhiteSpace == false)
- {
- if (strlen(trim($word)) == 0 && $word != "\n")
- {
- $word = $this->getWord();
- }
- }
- //$this->time3 = $this->time3 + ($this->mtime() - $st3);
- //$this->time = $this->time + ($this->mtime() - $st);
- return $word;
- }
-
- /**
- * Determine if the next word is an inline tag
- * @return boolean
- */
- function nextIsObjectOrNonNL()
- {
- return (($this->size == $this->pos) && isset($this->data[$this->index + 1])
- && is_object($this->data[$this->index + 1])) ||
- (($this->size > $this->pos) && !in_array($this->data[$this->index]{$this->pos}, array("\n", "\r")));
- }
-}
-
-/**
- * Parses a DocBlock description to retrieve abstract representations of
- * <<pre>>,<<code>>,<<p>>,<<ul>>,<<ol>>,<<li>>,<<b>>,<<i>>
- * @tutorial phpDocumentor.howto.pkg#basics.desc
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.2
- */
-class parserDescParser extends Parser
-{
- /**#@+
- * @access private
- */
- /**
- * @var array
- */
- var $eventHandlers = array(PHPDOCUMENTOR_PDP_EVENT_CODE => 'handleCode',
- PHPDOCUMENTOR_PDP_EVENT_PRE => 'handlePre',
- PHPDOCUMENTOR_PDP_EVENT_P => 'handleP',
- PHPDOCUMENTOR_PDP_EVENT_DOUBLECR => 'handleDoubleCR',
- PHPDOCUMENTOR_PDP_EVENT_LIST => 'handleList',
- PHPDOCUMENTOR_PDP_EVENT_B => 'handleB',
- PHPDOCUMENTOR_PDP_EVENT_I => 'handleI',
- PHPDOCUMENTOR_PDP_EVENT_VAR => 'handleVar',
- PHPDOCUMENTOR_PDP_EVENT_KBD => 'handleKbd',
- PHPDOCUMENTOR_PDP_EVENT_SAMP => 'handleSamp',
- PHPDOCUMENTOR_PDP_EVENT_BR => 'handleBr',
- PHPDOCUMENTOR_PDP_EVENT_ESCAPE => 'handleEscape',
- PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE => 'handleEscapeCode',
- PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE => 'handleEscapePre',
- PHPDOCUMENTOR_PDP_EVENT_SIMLIST => 'handleSimpleList',
- PARSER_EVENT_NOEVENTS => 'defaultHandler',
- );
-
- /**
- * @var array
- */
- var $pars = array();
- /**
- * Determines whether parsing of &lt;p&gt; tags will occur, or double CR will
- * be used
- * @var boolean
- */
- var $parse_Ps;
- /**
- * Context stack.
- *
- * Values can be 'normal', or any tag container like 'my_i', 'my_b'. This
- * is used to determine which tag text or nested tags should be added to
- * @var array
- */
- var $_context = array('normal');
- /**#@-*/
-
- /**
- * sets $wp to be a {@link ObjectWordParser}
- *
- * $wp is the word parser that retrieves tokens
- */
- function parserDescParser()
- {
- $this->wp = new ObjectWordParser;
- }
-
- /**
- * Parse a long or short description for tags
- *
- * @param array array of strings or {@link parserInlineTag}s
- * @param boolean true if the description is a short description. (only 1 paragraph allowed in short desc)
- * @param string name of the class to instantiate for each paragraph. parserDesc for desc/sdesc,
- * parserStringWithInlineTags for tag data
- * @staticvar integer used for recursion limiting if a handler for an event is not found
- */
- function parse (&$parse_data,$sdesc = false,$ind_type = 'parserDesc')
- {
- static $endrecur = 0;
- global $_phpDocumentor_setting;
- if (!is_array($parse_data) || count($parse_data) == 0)
- {
- return false;
- }
- $this->p_vars['indtype'] = $ind_type;
- $this->setupStates($sdesc);
- if (isset($_phpDocumentor_setting['javadocdesc']) && $_phpDocumentor_setting['javadocdesc'] == 'on')
- $this->parse_Ps = true;
-
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
- $this->p_vars['curpar'] = 0;
- $this->pars = array();
- $this->p_vars['start'] = true;
- $this->p_vars['event_stack'] = new EventStack;
-
- $this->wp->setup($parse_data,$sdesc);
- $this->wp->setWhitespace(true);
- $this->p_vars['list_count'] = 0;
- if ($sdesc) $this->p_vars['start'] = false;
- do
- {
- if (!isset($this->pars[$this->p_vars['curpar']])) $this->pars[$this->p_vars['curpar']] = new $ind_type;
- $lpevent = $pevent;
- $pevent = $this->p_vars['event_stack']->getEvent();
- if ($lpevent != $pevent)
- {
- $this->p_vars['last_pevent'] = $lpevent;
- }
-
- if ($this->p_vars['last_pevent'] != $pevent)
- {
- // its a new event so the word parser needs to be reconfigured
- $this->configWordParser($pevent);
- }
-
-
- $this->p_vars['last_word'] = $word;
- $word = $this->wp->getWord();
-
- if (0)//PHPDOCUMENTOR_DEBUG == true)
- {
- echo "----------------\n";
- echo "LAST: |" . htmlentities($this->p_vars['last_word']) . "|\n";
-// echo "INDEX: ".$this->p_vars['curpar']."\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo "LASTPEVENT: " . $this->getParserEventName($this->p_vars['last_pevent']) . "\n";
- echo $this->wp->getPos() . " WORD: |".htmlentities($word)."|\n\n";
- var_dump($this->_context);
- }
- if (isset($this->eventHandlers[$pevent]))
- {
- $handle = $this->eventHandlers[$pevent];
- if ($word !== false) $this->$handle($word, $pevent);
- else
- {
- if (!count($this->pars[$this->p_vars['curpar']]->value)) unset($this->pars[$this->p_vars['curpar']]);
- }
- } else
- {
- debug('WARNING: possible error, no ParserDescParser handler for event number '.$pevent);
- if ($endrecur++ == 25)
- {
- die("FATAL ERROR, recursion limit reached");
- }
- }
- if (is_object($word) || trim($word) != '')
- {
- $this->p_vars['start'] = false;
- }
- } while (is_object($word) || !($word === false) && $word != '');
- $context = $this->getContext();
- if ($context != 'normal')
- {
- if ($context == 'list' && $this->p_flags['simplelist'])
- {
- $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]);
- unset($this->p_vars['list_item'][0]);
- $this->setContext('normal');
- $this->addText($this->p_vars['lists'][0]);
- } else addError(PDERROR_UNCLOSED_TAG,str_replace('my_','',$context));
- }
- if ($this->p_vars['list_count'] > 0) addError(PDERROR_UNMATCHED_LIST_TAG);
- if ($sdesc)
- $this->publishEvent(2,$this->pars);
- else
- $this->publishEvent(1,$this->pars);
- }
- /**#@+ @access private */
- /**
- * basic handling
- *
- * This function checks to see if the first thing in
- * a description is the <p> tag. If so, it will switch
- * into a mode of parsing out paragraphs by <p> instead
- * of a double line-break
- *
- * It also removes extra whitespace
- * @uses doSimpleList()
- */
- function defaultHandler($word, $pevent)
- {
- $context = $this->getContext();
- if ($context != 'normal') $this->setContext('normal');
- if ($this->p_vars['start'] && is_string($word) && strtolower($word) == '<p>')
- {
- $this->parse_Ps = true;
- }
- if (is_string($word) && $this->checkEventPush($word, $pevent)) return;
-// if (!isset($this->parse_Ps) || !$this->parse_Ps)
- {
- if (!is_object($word) && ($word == ' ' && $this->p_vars['last_word'] == ' ')) return;
- if ($pevent == PARSER_EVENT_NOEVENTS)
- {
- if ($this->doSimpleList($word)) return;
- }
- $this->addText($word);
- }
- }
-
- /**
- * Retrieve the current top-level tag to add text into
- * @uses $_context
- */
- function getContext()
- {
- array_push($this->_context,$a = array_pop($this->_context));
- return $a;
- }
-
- /**
- * Pop a context off of the context stack
- * @uses $_context
- */
- function dropContext()
- {
- array_pop($this->_context);
- if (count($this->_context) == 0)
- $this->_context = array('normal');
- }
-
- /**
- * @uses $_context
- * @param string context name
- */
- function setContext($context)
- {
- array_push($this->_context,$context);
- }
-
- /**
- * add input as text to the current paragraph or list
- * @param string|parserInlineTag
- */
- function addText($text)
- {
- $context = $this->getContext();
- if ($context == 'list')
- {
-// debug('aded to '.$context);
- $this->p_vars['list_item'][$this->p_vars['list_count']]->add($text);
- } elseif ($context != 'normal')
- {
-// debug('added to '.$context);
- $this->p_vars[$context]->add($text);
- } else
- {
-// debug('added to normal ');
- $indtype = $this->p_vars['indtype'];
- if (!isset($this->pars[$this->p_vars['curpar']]))
- $this->pars[$this->p_vars['curpar']] = new $indtype;
- $this->pars[$this->p_vars['curpar']]->add($text);
- }
- }
-
- /**#@-*/
- /**#@+
- * @access private
- * @param string|parserInlineTag token from the ObjectWordParser
- * @param integer parser event from {@link ParserDescCleanup.inc}
- */
- /**
- * Handles special case where a description needs the text "<tag>" and tag
- * is one of code, b, i, pre, var, or any other valid in-DocBlock html tag.
- *
- * the text <<<code>>> in a DocBlock will parse out as <<code>>, instead
- * of being parsed as markup.
- */
- function handleEscape($word, $pevent)
- {
- $this->p_vars['event_stack']->popEvent();
- if (!in_array($word, $this->tokens[PHPDOCUMENTOR_PDP_STATE_ESCAPE]))
- {
- if ($word == '<')
- {
- $this->addText($word);
- $this->wp->backupPos($word.$word);
- } else
- $this->wp->backupPos($word);
- return;
- }
- $this->addText('<'.str_replace('>>','>',$word));
- }
-
- /**
- * Just like {@link handleEscape}, except the only valid escape is
- * <<</pre>>>
- */
- function handleEscapePre($word, $pevent)
- {
- $this->p_vars['event_stack']->popEvent();
- $this->addText('</pre>');
- }
-
- /**
- * Just like {@link handleEscape}, except the only valid escape is
- * <<</code>>>
- */
- function handleEscapeCode($word, $pevent)
- {
- $this->p_vars['event_stack']->popEvent();
- $this->addText('</code>');
- }
-
- /**
- * Handle "<<br>>"
- * Add a new {@link parserBr}
- * @uses addText()
- */
- function handleBr($word, $pevent)
- {
- if (is_string($word) && $this->checkEventPop($word, $pevent))
- {
- $this->addText(new parserBr);
- }
- }
-
- /**
- * Handles simple lists
- *
- * phpEdit has an ingenious facility to handle simple lists used in a
- * DocBlock like this:
- *
- * - item 1
- * - item 2
- * - item 3
- *
- * The DocBlock is:
- * <pre>
- * * - item 1
- * * - item 2
- * * - item 3
- * </pre>
- * This function converts these simple lists into the parserList class
- * @param boolean true if this is the first list item in the list
- */
- function handleSimpleList($word, $pevent, $start = false)
- {
- if (is_object($word) && $this->p_flags['in_item'])
- {
- $this->p_vars['list_item'][0]->add($word);
- return;
- }
- if (is_string($word) && $this->checkEventPush($word, $pevent))
- {
- $this->p_flags['in_event'] = true;
- return;
- }
- $ltrimword = @substr($word, @strpos($word, ltrim($word)));
- $is_valid = false;
- if (strlen(trim($word)) == 0)
- {
- if ($this->wp->nextIsObjectOrNonNL())
- {
- $is_valid = true;
- }
- }
- if ($word == "\n" && is_string($this->p_vars['last_word'])
- && $this->p_vars['last_word']{strlen($this->p_vars['last_word']) - 1}
- == "\n")
- {
- if ($this->p_flags['in_item'])
- {
- $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]);
- unset($this->p_vars['list_item'][0]);
- $this->setContext('normal');
- $this->p_flags['simplelist'] = false;
- $this->addText($this->p_vars['lists'][0]);
- unset($this->p_vars['lists']);
- unset($this->p_vars['last_list']);
- $this->wp->backuppos($word);
- $this->p_vars['event_stack']->popEvent();
- $this->p_flags['in_item'] = false;
-// debug('end of list 3');
- return;
- } else
- {
- $this->wp->backuppos($word);
- $this->p_vars['event_stack']->popEvent();
- $this->p_flags['in_item'] = false;
-// debug('not a list 2');
- return;
- }
- }
- $start_list = $this->getStartList($word);
- if (substr($ltrimword,0,strlen($start_list)) != $start_list
- || $this->p_flags['in_event'] || is_object($this->p_vars['last_word']))
- {
- if (((strlen($this->p_vars['whitespace']) + 1) < strlen(substr($word,0,strpos($word, $ltrimword))))
- || $word == "\n"
- || $is_valid
- || $this->p_flags['in_event']
- || (is_object($this->p_vars['last_word']) && $this->p_flags['in_item']))
- {
- $this->p_vars['list_item'][0]->add($word);
- $this->resetStartList($start_list);
- $this->p_flags['in_event'] = false;
-// debug('middle of list');
- } else
- {
- if ($this->p_flags['in_item'])
- {
- $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]);
- unset($this->p_vars['list_item'][0]);
- $this->setContext('normal');
- $this->p_flags['simplelist'] = false;
- $this->addText($this->p_vars['lists'][0]);
- unset($this->p_vars['lists']);
- unset($this->p_vars['last_list']);
- $this->wp->backuppos($word);
- $this->p_vars['event_stack']->popEvent();
- $this->p_flags['in_item'] = false;
-// debug('end of list 1');
- return;
- } else
- {
- $this->wp->backuppos($word);
- $this->p_vars['event_stack']->popEvent();
- $this->p_flags['in_item'] = false;
-// debug('not a list');
- return;
- }
- }
- } else
- {
- if ($this->p_vars['whitespace'] != substr($word,0,strpos($word, $start_list)))
- { // if the whitespace is greater than that preceding the list
- // delimiter, it's a multi-line list item
- $this->setContext('normal');
- $this->p_flags['simplelist'] = false;
- $this->addText($this->p_vars['lists'][0]);
- unset($this->p_vars['lists']);
- $this->wp->backuppos($word);
- $this->p_vars['event_stack']->popEvent();
- unset($this->p_vars['last_list']);
- $this->p_flags['in_item'] = false;
-// debug('end of list 2');
- return;
- } else
- {
- if ($this->p_flags['in_item'])
- {
- // end of a list item, add it to the list
- $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]);
- unset($this->p_vars['list_item'][0]);
- }
-// debug('next list item');
- $this->p_vars['list_item'][0] = new parserStringWithInlineTags;
- $this->p_vars['list_item'][0]->add(ltrim(substr($ltrimword,strlen($start_list))));
- $this->p_flags['in_item'] = true;
- }
- }
- }
- /**#@-*/
- /**
- * Get the next list marker
- *
- * In unordered lists, this will be something like "o", "-"
- *
- * In ordered lists, this will be either the number "3", "5" or "3.", "5."
- * @return string text of the next list marker to look for
- * @param string current word from the parser
- * @access private
- */
- function getStartList($word)
- {
- // unordered, return the first marker found
- if (!$this->p_flags['orderedlist']) return $this->p_vars['start_list'];
- if (isset($this->p_vars['last_list']))
- {
- $this->p_vars['save_list'] = $this->p_vars['last_list'];
- $next = $this->p_vars['last_list'];
- // increment to next list number, convert to string
- if (substr($this->p_vars['start_list'], strlen($this->p_vars['start_list']) - 1) == '.')
- $next = (substr($next, 0, strpos($next,'.')) + 1) . '.';
- else
- $next = ($next + 1) . '';
-// debug("next is '$next'");
- if ($this->p_vars['whitespace'] == substr($word,0,strpos($word, $next)))
- return $this->p_vars['last_list'] = $next;
- // the next number is not in this word, so return but don't save
- return $next;
- } else
- {
- $this->p_vars['last_list'] = $this->p_vars['start_list'];
- return $this->p_vars['start_list'];
- }
- }
-
- /**
- * Set the next list marker to the current list marker
- *
- * In ordered lists, this will ensure that the next number returned is the
- * right number
- * @param string token for next list marker
- * @access private
- */
- function resetStartList($start)
- {
- if (!isset($this->p_vars['save_list'])) return false;
- $this->p_vars['last_list'] = $this->p_vars['save_list'];
- }
-
- /**#@+
- * @access private
- * @param string|parserInlineTag token from the ObjectWordParser
- * @param integer parser event from {@link ParserDescCleanup.inc}
- */
- /**
- * Handles <<ol>>,<<li>>,<<ul>>
- *
- * This allows parsing of lists nested to any level. Using
- * the lists and list_item temporary variables and using
- * list_count to control nesting, the method creates a {@link parserList}
- * for each <<ol>> or <<ul>> tag, and a
- * standard {@link parserStringWithInlineTags} for all the text, adding
- * in nested lists as if they were inline tags (the conversion interface
- * is the same for both object types)
- */
- function handleList($word, $pevent)
- {
- if (is_string($word) && $this->checkEventPush($word, $pevent))
- {
- return;
- }
- $ordered = false;
- if (!is_object($this->p_vars['last_word']) && strtolower($this->p_vars['last_word']) == '<ol>')
- {
- // ordered list
- $ordered = true;
- }
- // start a new list
- if (!is_object($this->p_vars['last_word']) && (strtolower($this->p_vars['last_word']) == '<ol>' || strtolower($this->p_vars['last_word']) == '<ul>'))
- {
- $this->p_flags['in_item'] = false;
- $this->setContext('list');
- $this->p_vars['lists'][++$this->p_vars['list_count']] = new parserList($ordered);
- }
- if (!is_object($word) && strtolower($word) == '<li>')
- {
- if ($this->p_flags['in_item'])
- {
- // end of a list item (no end tag), add it to the list
- $this->p_vars['lists'][$this->p_vars['list_count']]->addItem($this->p_vars['list_item'][$this->p_vars['list_count']]);
- unset($this->p_vars['list_item'][$this->p_vars['list_count']]);
- }
- // start a new list item
- $this->p_vars['list_item'][$this->p_vars['list_count']] = new parserStringWithInlineTags;
- $this->p_flags['in_item'] = true;
- } else
- {
- if (is_object($word) || (strtolower($word) != '</li>'))
- {
- if (is_object($word) || (strtolower($word) != '</ul>' && strtolower($word) != '</ol>'))
- {
- // item text
- if (isset($this->p_vars['list_item'][$this->p_vars['list_count']]))
- {
- if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
- $this->p_vars['list_item'][$this->p_vars['list_count']]->add($word);
- }
- } else
- {
- if ($this->p_flags['in_item'])
- {
- // end the current list item before ending a list
- $this->p_vars['lists'][$this->p_vars['list_count']]->addItem($this->p_vars['list_item'][$this->p_vars['list_count']]);
- unset($this->p_vars['list_item'][$this->p_vars['list_count']]);
- $this->p_flags['in_item'] = false;
- }
- if (is_string($word) && $this->checkEventPop($word, $pevent))
- {
- if ($this->p_vars['list_count'] > 1)
- {
- // this is a sublist, add it to the list item of the parent list
- $this->p_vars['list_item'][$this->p_vars['list_count'] - 1]->add($this->p_vars['lists'][$this->p_vars['list_count']]);
- // remove the sublist item and sublist, drop to parent list
- unset($this->p_vars['lists'][$this->p_vars['list_count']]);
- unset($this->p_vars['lists'][$this->p_vars['list_count']]);
- $this->p_vars['list_count']--;
- $this->p_flags['in_item'] = true;
- } else
- {
- // this is a primary list and it has concluded
- $this->pars[$this->p_vars['curpar']]->add($this->p_vars['lists'][$this->p_vars['list_count']]);
- unset($this->p_vars['lists']);
- unset($this->p_vars['list_item']);
- $this->p_vars['list_count'] = 0;
- $this->dropContext();
- }
- }
- }
- } else
- {
- // check to make sure our list item is not unclosed
- if (!$this->p_flags['in_item'])
- {
- addError(PDERROR_TEXT_OUTSIDE_LI);
- } else
- {
- // end of a list item, add it to the list
- $this->p_vars['lists'][$this->p_vars['list_count']]->addItem($this->p_vars['list_item'][$this->p_vars['list_count']]);
- unset($this->p_vars['list_item'][$this->p_vars['list_count']]);
- $this->p_flags['in_item'] = false;
- }
- }
- }
- }
-
- /**
- * Handles <<code>><</code>> blocks
- */
- function handleCode($word, $pevent)
- {
- if (!isset($this->p_vars['my_code']))
- {
- $this->setContext('my_code');
- $this->p_vars['my_code'] = new parserCode;
- }
- if (is_string($word) && $this->checkEventPush($word, $pevent)) return;
- if (is_object($word) || strtolower($word) != '</code>') $this->p_vars['my_code']->add($word);
- if (is_string($word))
- {
- if ($this->checkEventPop($word,$pevent))
- {
- $this->dropContext();
- $this->addText($this->p_vars['my_code']);
- unset($this->p_vars['my_code']);
- }
- }
- }
-
- /**
- * Handles <<pre>><</pre>> blocks
- */
- function handlePre($word, $pevent)
- {
- if (!isset($this->p_vars['my_pre']))
- {
- $this->setContext('my_pre');
- $this->p_vars['my_pre'] = new parserPre;
- }
- if (is_string($word) && $this->checkEventPush($word, $pevent)) return;
- if (is_object($word) || strtolower($word) != '</pre>') $this->p_vars['my_pre']->add($word);
- if (is_string($word))
- {
- if ($this->checkEventPop($word,$pevent))
- {
- $this->dropContext();
- $this->addText($this->p_vars['my_pre']);
- unset($this->p_vars['my_pre']);
- }
- }
- }
-
- /**
- * Handles <<b>><</b>> blocks
- */
- function handleB($word, $pevent)
- {
- if (!isset($this->p_vars['my_b']))
- {
- $this->setContext('my_b');
- $this->p_vars['my_b'] = new parserB;
- }
- if (is_string($word))
- {
- if ($this->checkEventPop($word,$pevent))
- {
- $this->dropContext();
- $this->addText($this->p_vars['my_b']);
- unset($this->p_vars['my_b']);
- } else
- {
- $this->p_vars['my_b']->add($word);
- }
- } else $this->p_vars['my_b']->add($word);
- }
-
- /**
- * Handles <<i>><</i>> blocks
- */
- function handleI($word, $pevent)
- {
- if (!isset($this->p_vars['my_i']))
- {
- $this->p_vars['my_i'] = new parserI;
- $this->setContext('my_i');
- }
- if (is_string($word))
- {
- if ($this->checkEventPop($word,$pevent))
- {
- $this->dropContext();
- $this->addText($this->p_vars['my_i']);
- unset($this->p_vars['my_i']);
- } else
- {
- $this->p_vars['my_i']->add($word);
- }
- } else $this->p_vars['my_i']->add($word);
- }
-
- /**
- * Handles <<var>><</var>> blocks
- */
- function handleVar($word, $pevent)
- {
- if (!isset($this->p_vars['my_var']))
- {
- $this->setContext('my_var');
- $this->p_vars['my_var'] = new parserDescVar;
- }
- if (is_string($word))
- {
- if ($this->checkEventPop($word,$pevent))
- {
- $this->dropContext();
- $this->addText($this->p_vars['my_var']);
- unset($this->p_vars['my_var']);
- } else
- {
- $this->p_vars['my_var']->add($word);
- }
- } else $this->p_vars['my_var']->add($word);
- }
-
- /**
- * Handles <<samp>><</samp>> blocks
- */
- function handleSamp($word, $pevent)
- {
- if (!isset($this->p_vars['my_samp']))
- {
- $this->setContext('my_samp');
- $this->p_vars['my_samp'] = new parserSamp;
- }
- if (is_string($word))
- {
- if ($this->checkEventPop($word,$pevent))
- {
- $this->dropContext();
- $this->addText($this->p_vars['my_samp']);
- unset($this->p_vars['my_samp']);
- } else
- {
- $this->p_vars['my_samp']->add($word);
- }
- } else $this->p_vars['my_samp']->add($word);
- }
-
- /**
- * Handles <<kbd>><</kbd>> blocks
- */
- function handleKbd($word, $pevent)
- {
- if (!isset($this->p_vars['my_kbd']))
- {
- $this->setContext('my_kbd');
- $this->p_vars['my_kbd'] = new parserKbd;
- }
- if (is_string($word))
- {
- if ($this->checkEventPop($word,$pevent))
- {
- $this->dropContext();
- $this->addText($this->p_vars['my_kbd']);
- unset($this->p_vars['my_kbd']);
- } else
- {
- $this->p_vars['my_kbd']->add($word);
- }
- } else $this->p_vars['my_kbd']->add($word);
- }
-
- /**
- * Handles <<p>><</p>> blocks
- *
- * Note that the only time <<p>> will be interpreted as delimiting a
- * paragraph is if it is the first thing in the description.
- */
- function handleP($word, $pevent)
- {
- if (!isset($this->parse_Ps)) $this->parse_Ps = false;
- if (is_string($word))
- {
- if (is_string($word) && $this->checkEventPush($word, $pevent)) return;
- }
- if (!$this->parse_Ps)
- {
- $this->p_vars['event_stack']->popEvent();
- if (!is_object($word) && strtolower($this->p_vars['last_word']) == '<p>') $this->addText('<p>');
- $this->addText($word);
- return;
- }
- if ($word == "\n") $word = " ";
- if (is_string($word))
- {
- if ($this->checkEventPop($word, $pevent))
- {
- $this->p_vars['curpar']++;
- return;
- }
- // if no closing tag, pretend there was one
- if (!is_object($word) && strtolower($word) == '<p>' && $this->parse_Ps)
- {
- $this->p_vars['curpar']++;
- return;
- }
- }
- if ($this->p_vars['start'])
- {
- $this->addText($word);
- } else
- {// if the <p> is not at the beginning of the desc, then it is not
- // possible to parse into paragraphs using this tag
- if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
- $this->addText($word);
- }
- }
-
- /**
- * Handles \n\n as a paragraph marker
- * @uses doSimpleList()
- */
- function handleDoubleCR($word, $pevent)
- {
- $this->p_vars['event_stack']->popEvent();
- if ($word == "\n")
- {
- // only use this if <p> isn't being used
- if ((!isset($this->parse_Ps) || !$this->parse_Ps))
- {
- if ($this->p_vars['last_word'] == "\n")
- {
- $this->p_vars['curpar']++;
- $this->parse_Ps = false;
- } else
- {
- if (is_string($word) && !$this->checkEventPush($word, $pevent))
- {
- if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
- $this->addText($word);
- }
- }
- } else
- {
- if (is_string($word) && !$this->checkEventPush($word, $pevent))
- {
- if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
- $this->addText($word);
- }
- }
- } else
- {
- if ($this->p_vars['last_word'] == "\n")
- {
- if ((!isset($this->parse_Ps) || !$this->parse_Ps))
- {
- $this->addText(' ');
- }
- }
- if (is_string($word) && !($e = $this->checkEventPush($word, $pevent)))
- {
- if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
- if ($this->doSimpleList($word)) return;
- $this->addText($word);
- }
- }
- }
-
- /**#@-*/
- /**
- * Return a simple list, if found
- *
- * This helper function extracts a simple list beginning with any of
- * 'o','-'.'#','+','0','1','0.','1.' and starts parsing it.
- * @param string line that may contain a simple list
- * @return boolean true if a list is found, false otherwise
- */
- function doSimpleList($word)
- {
- if ($this->p_flags['in_event']) return true;
- if (is_object($word)) return false;
- $ltrimword = ltrim($word);
- if ((strlen($ltrimword) != strlen($word))
- && strlen($ltrimword) > 1
- && ((in_array($ltrimword{0},array('o','-','1','0','#','+')) && $ltrimword{1} == ' '))
- || ((strlen($ltrimword) >= 2) && (in_array(substr($ltrimword,0,2),array('1.','0.')) && $ltrimword{2} == ' ')))
- {
- // save the whitespace for comparison
- $this->p_vars['whitespace'] = substr($word,0,strlen($word) - strlen($ltrimword));
- $this->p_vars['start_list'] = $ltrimword{0};
- if ($this->p_vars['start_list'] != '1' && $this->p_vars['start_list'] != '1.' &&
- $this->p_vars['start_list'] != '0' && $this->p_vars['start_list'] != '0.')
- {
- $this->p_flags['orderedlist'] = false;
- } else
- {
- if (substr($ltrimword,0,2) == '1.')
- {
- $this->p_vars['start_list'] = '1.';
- }
- $this->p_flags['orderedlist'] = true;
- }
- $this->p_vars['event_stack']->pushEvent(PHPDOCUMENTOR_PDP_EVENT_SIMLIST);
- $this->setContext('list');
- $this->p_flags['simplelist'] = true;
- $this->p_vars['lists'][0] = new parserList($this->p_flags['orderedlist']);
- $this->p_vars['list_count'] = 0;
- $this->handleSimpleList($word, PHPDOCUMENTOR_PDP_EVENT_SIMLIST, true);
- return true;
- }
- return false;
- }
- /**
- * setup the parser tokens, and the pushEvent/popEvent arrays
- * @see $tokens, $pushEvent, $popEvent
- * @param boolean determines whether to allow paragraph parsing
- * @global boolean used to determine whether to slow things down or not by
- * eliminating whitespace from comments
- */
-
- function setupStates($sdesc)
- {
- $this->p_flags['in_item'] = false;
- $this->p_flags['in_event'] = false;
- $this->p_flags['simplelist'] = false;
- $this->_context = array('normal');
- $this->tokens[STATE_NOEVENTS] = array("\n", "<code>", "<pre>", "<ol>", "<ul>",
- "<b>", "<i>", '<var>', '<kbd>', '<samp>', "<br", '<<');
- if (!$sdesc)
- {
- $this->tokens[STATE_NOEVENTS][] = "<p>";
- $this->tokens[STATE_NOEVENTS][] = "</p>";
- }
- if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[STATE_NOEVENTS][] = ' ';
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_P] = array("</p>","<code>","<pre>","\n","<ol>","<ul>","<b>","<i>","<br","<p>", '<<',
- '<var>', '<kbd>', '<samp>');
- if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[PHPDOCUMENTOR_PDP_STATE_P][] = ' ';
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_CODE] = array("</code>", '<</code>>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_PRE] = array("</pre>", '<</pre>>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_LIST] = array("<ul>","<ol>","</ul>","</ol>","<li>","</li>","<b>","<i>","<br", '<<',"<code>","<pre>","<br",
- '<var>', '<kbd>', '<samp>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_DOUBLECR] = array("\n","<ol>","<ul>","<code>","<pre>","<b>","<i>","<br","<p>","</p>",
- '<var>', '<kbd>', '<samp>', '<<');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_SIMLIST] = array("\n",'<var>', '<kbd>', '<samp>','<b>','<i>', '<pre>', '<code>',
- '<br', '<<');
-
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_B] = array("<code>","\n","<pre>","<ol>","<ul>","</b>","<i>","<br", '<<',
- '<var>', '<kbd>', '<samp>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_KBD] = array("<code>","\n","<pre>","<ol>","<ul>","<b>","<i>","<br", '<<',
- '<var>', '</kbd>', '<samp>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_VAR] = array("<code>","\n","<pre>","<ol>","<ul>","<b>","<i>","<br", '<<',
- '</var>', '<kbd>', '<samp>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_SAMP] = array("<code>","\n","<pre>","<ol>","<ul>","<b>","<i>","<br", '<<',
- '<var>', '<kbd>', '</samp>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_I] = array("<code>","\n","<pre>","<ol>","<ul>","<b>","</i>","<br", '<<',
- '<var>', '<kbd>', '<samp>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_BR] = array(">","/>");
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_ESCAPE] = array('code>>', '/code>>', 'pre>>', '/pre>>', 'b>>', '/b>>',
- 'i>>', '/i>>', 'ol>>', '/ol>>', 'ul>>', '/ul>>',
- 'br>>', 'br />>', 'p>>', '/p>>', 'samp>>', '/samp>>',
- 'kbd>>', '/kbd>>', 'var>>', '/var>>');
- if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[PHPDOCUMENTOR_PDP_STATE_DOUBLECR][] = ' ';
-
- // For each event word to event mapings
- $this->pushEvent[PARSER_EVENT_NOEVENTS] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<p>" => PHPDOCUMENTOR_PDP_EVENT_P,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<b>" => PHPDOCUMENTOR_PDP_EVENT_B,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- "\n" => PHPDOCUMENTOR_PDP_EVENT_DOUBLECR,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_CODE] =
- array(
- '<</code>>' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_CODE] = array("</code>");
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_PRE] =
- array(
- '<</pre>>' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_PRE] = array("</pre>");
-##########################
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_BR] = array(">","/>");
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_P] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<b>" => PHPDOCUMENTOR_PDP_EVENT_B,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_P] = array("</p>");
-##########################
-
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_LIST] =
- array(
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<b>" => PHPDOCUMENTOR_PDP_EVENT_B,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_LIST] = array("</ul>","</ol>");
-##########################
-
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_SIMLIST] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<p>" => PHPDOCUMENTOR_PDP_EVENT_P,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<b>" => PHPDOCUMENTOR_PDP_EVENT_B,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-##########################
-
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_DOUBLECR] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<b>" => PHPDOCUMENTOR_PDP_EVENT_B,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- "<p>" => PHPDOCUMENTOR_PDP_EVENT_P,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_B] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<i>' => PHPDOCUMENTOR_PDP_EVENT_I,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_B] = array("</b>");
-
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_I] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<b>' => PHPDOCUMENTOR_PDP_EVENT_B,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_I] = array("</i>");
-
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_VAR] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<b>' => PHPDOCUMENTOR_PDP_EVENT_B,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_VAR] = array("</var>");
-
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_SAMP] =
- array(
- "<code>" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<pre>" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<kbd>" => PHPDOCUMENTOR_PDP_EVENT_KBD,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<b>' => PHPDOCUMENTOR_PDP_EVENT_B,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_SAMP] = array("</samp>");
-
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_KBD] =
- array(
- "<code" => PHPDOCUMENTOR_PDP_EVENT_CODE,
- "<ol>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<ul>" => PHPDOCUMENTOR_PDP_EVENT_LIST,
- "<pre" => PHPDOCUMENTOR_PDP_EVENT_PRE,
- "<var>" => PHPDOCUMENTOR_PDP_EVENT_VAR,
- "<samp>" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
- "<i>" => PHPDOCUMENTOR_PDP_EVENT_I,
- "<br" => PHPDOCUMENTOR_PDP_EVENT_BR,
- '<b>' => PHPDOCUMENTOR_PDP_EVENT_B,
- '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_KBD] = array("</kbd>");
- }
-
- function getParserEventName ($value)
- {
- $lookup = array(
- PARSER_EVENT_NOEVENTS => "PARSER_EVENT_NOEVENTS",
- PHPDOCUMENTOR_PDP_EVENT_CODE => "PHPDOCUMENTOR_PDP_EVENT_CODE",
- PHPDOCUMENTOR_PDP_EVENT_P => "PHPDOCUMENTOR_PDP_EVENT_P",
- PHPDOCUMENTOR_PDP_EVENT_B => "PHPDOCUMENTOR_PDP_EVENT_B",
- PHPDOCUMENTOR_PDP_EVENT_I => "PHPDOCUMENTOR_PDP_EVENT_I",
- PHPDOCUMENTOR_PDP_EVENT_BR => "PHPDOCUMENTOR_PDP_EVENT_BR",
- PHPDOCUMENTOR_PDP_EVENT_VAR => "PHPDOCUMENTOR_PDP_EVENT_VAR",
- PHPDOCUMENTOR_PDP_EVENT_SAMP => "PHPDOCUMENTOR_PDP_EVENT_SAMP",
- PHPDOCUMENTOR_PDP_EVENT_KBD => "PHPDOCUMENTOR_PDP_EVENT_KBD",
- PHPDOCUMENTOR_PDP_EVENT_ESCAPE => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE",
- PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE",
- PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE",
- PHPDOCUMENTOR_PDP_EVENT_DOUBLECR => "PHPDOCUMENTOR_PDP_EVENT_DOUBLECR",
- PHPDOCUMENTOR_PDP_EVENT_LIST => "PHPDOCUMENTOR_PDP_EVENT_LIST",
- PHPDOCUMENTOR_PDP_EVENT_PRE => "PHPDOCUMENTOR_PDP_EVENT_PRE",
- PHPDOCUMENTOR_PDP_EVENT_SIMLIST => "PHPDOCUMENTOR_PDP_EVENT_SIMLIST",
- );
- if (isset($lookup[$value]))
- return $lookup[$value];
- else return $value;
- }
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ParserDocBlock.inc b/buildscripts/PhpDocumentor/phpDocumentor/ParserDocBlock.inc
deleted file mode 100644
index 96ea1b20..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserDocBlock.inc
+++ /dev/null
@@ -1,1165 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * DocBlock Parser Classes
- * @package phpDocumentor
- * @subpackage ParserDocBlock
- */
-/**
- * represents a short or long description in a DocBlock ({@link parserDocBlock})
- * @package phpDocumentor
- * @subpackage ParserDocBlock
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserDocBlock.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-class parserDesc extends parserStringWithInlineTags
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * always '_desc'
- * @var string
- */
- var $type = '_desc';
-
- /**
- * @param mixed like {@link parserStringWithInlineTags::add()}, this can be a string or parserInlineTag, but it can also be a
- * parserStringWithInlineTags, and the contents will be merged
- */
- function add($stringOrClass)
- {
- if (is_object($stringOrClass))
- {
- if (phpDocumentor_get_class($stringOrClass) == 'parserstringwithinlinetags' ||
- phpDocumentor_get_class($stringOrClass) == 'parserdesc')
- {
- for($i=0;$i<count($stringOrClass->value);$i++)
- {
- parserStringWithInlineTags::add($stringOrClass->value[$i]);
- }
- } else
- {
- parserStringWithInlineTags::add($stringOrClass);
- }
- } else return parserStringWithInlineTags::add($stringOrClass);
- }
-
- /**
- * @return boolean whether this desc has an {@}inheritdoc} inline tag
- */
- function hasInheritDoc()
- {
- for($i=0;$i<count($this->value);$i++)
- {
- if (phpDocumentor_get_class($this->value[$i])=='parserinheritdocinlinetag') return true;
- }
- }
-
- /**
- * @return boolean whether this desc has an {@}source} inline tag
- */
- function hasSource()
- {
- for($i=0;$i<count($this->value);$i++)
- {
- if (phpDocumentor_get_class($this->value[$i])=='parsersourceinlinetag') return true;
- }
- }
-
- /**
- * replaces {@}inheritdoc} with the contents of the parent DocBlock
- * @param parserDesc parent parserDesc, used to retrieve the description
- */
- function replaceInheritDoc($desc)
- {
- $value = $this->value;
- $this->value = array();
- for($i=0;$i<count($value);$i++)
- {
- if (phpDocumentor_get_class($value[$i])=='parserinheritdocinlinetag')
- {
- for($j=0;$j<count($desc->value);$j++)
- {
- $this->add($desc->value[$j]);
- }
- } else $this->add($value[$i]);
- }
- }
-}
-
-/**
- * Represents a docblock and its components, {@link $desc}, {@link $sdesc}, {@link $tags}, and also {@link $params} for functions
- * @package phpDocumentor
- * @subpackage ParserDocBlock
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserDocBlock.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-class parserDocBlock
-{
- /**
- * @var parserDesc
- */
- var $desc = false;
- /**
- * @var array array of {@link parserDesc}s
- */
- var $processed_desc = false;
- /**
- * @var array array of {@link parserDesc}s
- */
- var $processed_sdesc = false;
- /**
- * @var parserDesc
- */
- var $sdesc = false;
- /**
- * Line number in the source on which this docblock begins
- * @since 1.2
- * @var false|integer
- */
- var $linenumber = false;
- /**
- * Line number in the source on which this docblock ends
- * @since 1.2
- * @var false|integer
- */
- var $endlinenumber = false;
- /**
- * array of {@link parserTag}s
- * @var array
- */
- var $tags = array();
- /**
- * array of unrecognized {@link parserTag}s
- * @var array
- */
- var $unknown_tags = array();
- /**
- * array of param data.
- * Format:
- * array(index of param in function parameter list -OR- parameter name =>
- * parserStringWithInlineTags,...)
- * @var array
- */
- var $params = array();
- /**
- * array of global variable data.
- * Format:
- * array(index of global variable in @global tag list -OR- global variable name =>
- * array(datatype,parserStringWithInlineTags),...)
- * @var array
- */
- var $funcglobals = array();
-
- /**
- * array of static variable data.
- * Format:
- * array(index of static variable in @global tag list -OR- static variable name =>
- * {@link parserStaticvarTag},...)
- * @var array
- */
- var $statics = array();
- /**
- * This is either a {@link parserReturnTag} or false if no return tag is present
- * @var mixed
- */
- var $return = false;
- /**
- * This is either a {@link parserVarTag} or false if no var tag is present
- * @var mixed
- */
- var $var = false;
- /**
- * fix for bug 591396
- * @var boolean
- */
- var $explicitpackage = false;
- /**
- * fix for bug 708559
- * @var boolean
- */
- var $explicitcategory = false;
- /** @var string */
- var $category;
- /** @var string */
- var $package = 'default';
- /** @var string */
- var $subpackage = '';
- /**
- * whether this DocBlock has an @access tag
- * @var boolean */
- var $hasaccess = false;
- /**
- * whether this DocBlock has a @name tag
- * @var boolean */
- var $hasname = false;
- /**
- * description of package parsed from @package tag
- * Unused in this version
- * @var string
- */
- var $packagedescrip = '';
- /**
- * description of subpackage parsed from @package tag
- * Unused in this version
- * @var string
- */
- var $subpackagedescrip = '';
- /**
- * Determines whether a DocBlock can legally have a {@}source} tag
- * @tutorial tags.inlinesource.pkg
- * @var boolean
- * @access private
- */
- var $_canSource = false;
-
- /**
- * sets package to default
- * @global string default package name
- */
- function parserDocBlock()
- {
- global $phpDocumentor_DefaultPackageName;
- $this->package = $GLOBALS['phpDocumentor_DefaultPackageName'];
- $this->category = $GLOBALS['phpDocumentor_DefaultCategoryName'];
- }
-
- /**
- * Sets the starting line number for the DocBlock
- * @param integer
- */
- function setLineNumber($number)
- {
- $this->linenumber = $number;
- }
-
- /**
- * Retrieve starting line number
- * @return integer
- */
- function getLineNumber()
- {
- return $this->linenumber;
- }
-
- /**
- * Sets the ending line number for the DocBlock
- * @param integer
- */
- function setEndLineNumber($number)
- {
- $this->endlinenumber = $number;
- }
-
- /**
- * Retrieve ending line number
- * @return integer
- */
- function getEndLineNumber()
- {
- return $this->endlinenumber;
- }
-
- /**
- * Parse out any html tags from doc comments, and make them into
- * abstract structures
- * @uses parserDescParser::parse()
- */
- function postProcess()
- {
- if ($this->sdesc)
- {
- $parser = new parserDescParser;
- $parser->subscribe('*',$this);
- if ($this->desc) $parser->parse($this->desc->value);
- $parser->parse($this->sdesc->value,true);
- }
- }
-
- /**
- * Tells the DocBlock it can have a @filesource tag
- *
- * Only page-level DocBlocks may have a @filesource tag
- */
- function canSource()
- {
- $this->_canSource = true;
- }
-
- /**
- * Tells the DocBlock it can't have a @filesource tag
- *
- * Only page-level DocBlocks may have a @filesource tag
- */
- function cantSource()
- {
- $this->_canSource = false;
- }
-
- /**
- * Indirectly called after parsing by {@link postProcess}
- *
- * @param integer either 1 for long desc or 2 for short desc
- * @param array data organized into paragraphs. Each entry is a {@link parserStringWithInlineTags}
- * @uses $processed_desc sets to the array passed from {@link parserDescParser::parse()}
- * @uses $processed_sdesc sets to the array passed from {@link parserDescParser::parse()}
- * @access private
- */
- function HandleEvent($event,$data)
- {
- if ($event == 1)
- $this->processed_desc = $data;
- else
- $this->processed_sdesc = $data;
- }
-
- /**
- * @param array
- */
- function updateModifiers($modifiers)
- {
- if (is_array($modifiers) && count($modifiers))
- {
- foreach ($modifiers as $modifier)
- {
- switch ($modifier)
- {
- case 'private' :
- case 'public' :
- case 'protected' :
- unset($this->tags['access']);
- $x = new parserAccessTag($modifier);
- if ($x->isvalid)
- {
- $this->hasaccess = true;
- $this->tags['access'][] = $x;
- }
- break;
- case 'static' :
- case 'abstract' :
- unset($this->tags[$modifier]);
- $this->addKeyword($modifier, '');
- break;
- }
- }
- }
- }
-
- /**
- * Set the short description of the DocBlock
- *
- * Setting the short description is possible by passing in one of three
- * possible parameters:
- * <ul>
- * <li>another DocBlock's short description</li>
- * <li>another DocBlock, the short description will be extracted</li>
- * <li>a Zend Studio-compatible @desc tag</li>
- * </ul>
- * @param parserDesc|parserDocBlock|parserTag sets {@link $sdesc}
- */
- function setShortDesc($desc)
- {
- if (phpDocumentor_get_class($desc) == 'parsertag')
- {
- $this->sdesc = new parserDesc;
- $this->processed_sdesc = $desc->value;
- return;
- }
- if (phpDocumentor_get_class($desc) == 'parserdesc') {
- $this->sdesc = $desc;
- } else
- {
- $this->sdesc = $desc->sdesc;
- $this->processed_sdesc = $desc->processed_sdesc;
- }
-
- if ($this->sdesc && $this->sdesc->hasSource())
- {
- addWarning(PDERROR_SOURCE_TAG_IGNORED,$this->sdesc->getString());
- }
- }
-
- /**
- * Passes to {@link parserStringWithInlineTags::setSource()}
- *
- * After passing, it calls {@link postProcess()} to set up the new
- * source
- * @param string|array tokenized highlight-ready source code
- * @param false|string name of class if this is a method source
- */
- function setSource($source, $class = false)
- {
- if ($this->desc)
- {
- $this->desc->setSource($source, $class);
- $this->postProcess();
- }
- }
-
- /**
- * @param parserDesc|parserDocBlock sets {@link $desc}
- */
- function setDesc($desc)
- {
- if (phpDocumentor_get_class($desc) == 'parserdesc')
- $this->desc = $desc;
- else
- {
- $this->desc = $desc->desc;
- $this->processed_desc = $desc->processed_desc;
- }
- }
-
- /**
- * Wrapper for {@link parserDesc::hasInheritDoc()}
- * @return boolean
- */
- function hasInheritDoc()
- {
- if (!$this->desc) return false;
- return $this->desc->hasInheritDoc();
- }
-
- /**
- * Wrapper for {@link parserDesc::replaceInheritDoc()}
- *
- * Also replaces {@}inheritdoc} in the {@link $processed_desc}
- * @param parserDesc
- */
- function replaceInheritDoc($desc)
- {
- if (!$this->desc) return false;
- $this->desc->replaceInheritDoc($desc->desc);
- $this->postProcess();
- }
-
- /**
- * @param Converter takes {@link $sdesc} and converts it to a string and returns it if present, otherwise returns ''
- * @return string
- */
- function getSDesc(&$converter)
- {
- if ($this->sdesc && $this->processed_sdesc)
- {
- $result = '';
- foreach($this->processed_sdesc as $desc)
- {
- if (count($desc->value))
- $result .= $desc->Convert($converter);
- }
- return $result;
- } else
- {
-// var_dump($this->desc,$this->processed_desc);
- }
- return '';
- }
-
- /**
- * @param Converter takes {@link $desc} and converts it to a string and returns it if present, otherwise returns ''
- * @return string
- */
- function getDesc(&$converter)
- {
- if ($this->desc && $this->processed_desc)
- {
- $result = '';
- foreach($this->processed_desc as $desc)
- {
- if (count($desc->value))
- $result .= $converter->EncloseParagraph($desc->Convert($converter));
- }
- return $result;
- } else
- {
-// var_dump($this->desc,$this->processed_desc);
- }
- return '';
- }
-
- /**
- * @param string $paramVar if empty, param is indexed in the order received and set using {@link changeParam()}
- * @param parserStringWithInlineTags $value
- */
- function addParam($paramVar, $paramType, $value)
- {
- if (empty($paramVar))
- $this->params[count($this->params)] = new parserParamTag($paramType,$value);
- else
- $this->params[$paramVar] = new parserParamTag($paramType,$value);
- }
-
- /**
- * @param integer $index index of parameter in the {@link $params} array
- * @param string $name name of the parameter to set in the $params array
- */
- function changeParam($index,$name)
- {
- $this->params[$name] = $this->params[$index];
- unset($this->params[$index]);
- }
-
- /**
- * replaces nameless parameters in the {@link $params} array with their names
- * @param array $params Format: array(parameter index => parameter name,...)
- */
- function updateParams($params)
- {
- for($i=0;$i<count($params);$i++)
- {
- if (isset($this->params[$i]))
- {
- $this->changeParam($i,$params[$i]);
- }
- }
- if (isset($this->tags))
- unset($this->tags['param']);
- }
-
- /**
- * Used to insert DocBlock Template tags into a docblock
- * @param parserTag tag
- * @global array used to determine whether to add ignored tags, or not
- */
- function addTag($tag)
- {
- global $_phpDocumentor_setting;
- if (phpDocumentor_setup::checkIgnoreTag($tag->keyword)) return;
- $value = $tag->value;
- if (is_array($value)) $value = $value[0];
- if ($tag->keyword == 'uses')
- {
- $this->addUses($value, $tag->_description);
- } else
- {
- $this->addKeyword($tag->keyword, $value);
- }
- }
-
- /**
- * @param string $keyword tag name
- * @param parserStringWithInlineTags $value the contents of the tag
- * @global array used to determine whether to add the @internal tag or not
- */
- function addKeyword($keyword, $value)
- {
- global $_phpDocumentor_setting;
- if (phpDocumentor_setup::checkIgnoreTag($keyword)) return;
- // don't add the tag at all if it was specified to ignore it with --ignore-tags
- if ($keyword == 'package' || $keyword == 'subpackage' || $keyword == 'category') return $this->addPackage($keyword, $value);
- if ($keyword == 'access') return $this->addAccess($value);
- if ($keyword == 'link') return $this->addLink($value);
- if ($keyword == 'see' || $keyword == 'tutorial') return $this->addSee($keyword,$value);
- if ($keyword == 'uses') return $this->addUses($keyword, $value);
- if ($keyword == 'name') return $this->addName($value);
- if (!in_array($keyword,$GLOBALS['_phpDocumentor_tags_allowed']))
- $this->addUnknownTag($keyword,$value);
- else
- {
- if ($keyword == 'internal' && (!isset($_phpDocumentor_setting['parseprivate']) || $_phpDocumentor_setting['parseprivate'] == 'off')) return;
- if (!isset($this->tags[$keyword])) {
- $this->tags[$keyword] = array();
- }
- $ptag = 'parserTag';
- if (class_exists('parser'.$keyword.'tag'))
- $ptag = 'parser'.ucfirst($keyword).'Tag';
- array_unshift($this->tags[$keyword], new $ptag($keyword, $value));
- }
- }
-
- /**
- * adds an @example tag
- * @param string contents of the tag
- * @param string path to the file containing this tag
- */
- function addExample($value, $path)
- {
- $this->tags['example'][] = new parserExampleTag($value, $path);
- }
-
- /**
- * adds an unknown tag to the {@link $unknown_tags} array for use by custom converters
- * @param string tag name
- * @param string tag value
- */
- function addUnknownTag($keyword, $value)
- {
- addWarning(PDERROR_UNKNOWN_TAG,$keyword);
- $this->unknown_tags[$keyword][] = new parserTag($keyword, $value);
- }
-
- /**
- * set the element's package to the passed values. Used in {@link phpDocumentor_IntermediateParser} to align package of
- * elements inside a class or procedural page to the package of the class/procedural page
- * @param string
- * @param string
- * @param string
- * @param string element name
- * @param string element type (include, define, var, method, global, function, const)
- */
- function overridePackage($category, $package,$subpackage,$elname,$type)
- {
- if ($this->package != $GLOBALS['phpDocumentor_DefaultPackageName'])
- {
- addError(PDERROR_OVERRIDDEN_PACKAGE_TAGS,$elname,$type,$this->package);
- $this->explicitpackage = false;
- }
- if (!empty($this->subpackage))
- addError(PDERROR_OVERRIDDEN_SUBPACKAGE_TAGS,$type,$elname,$this->subpackage);
- $this->package = $GLOBALS['phpDocumentor_DefaultPackageName'];
- $this->subpackage = '';
- $this->category = $category;
- $this->addPackage('package',$package);
- $this->addPackage('subpackage',$subpackage);
- }
-
- /**
- * Used if this docblock has a @package tag.
- *
- * phpDocumentor will guess package for DocBlocks that don't have
- * a @package tag
- * @uses $explicitpackage
- */
- function setExplicitPackage()
- {
- $this->explicitpackage = true;
- }
-
- /**
- * If the DocBlock has a @package tag, then this returns true
- * @return boolean
- */
- function getExplicitPackage()
- {
- return $this->explicitpackage;
- }
-
- /**
- * Used if this docblock has a @category tag.
- *
- * phpDocumentor will guess category for DocBlocks that don't have
- * a @category tag
- * @uses $explicitcategory
- */
- function setExplicitCategory()
- {
- $this->explicitcategory = true;
- }
-
- /**
- * If the DocBlock has a @category tag, then this returns true
- * @return boolean
- */
- function getExplicitCategory()
- {
- return $this->explicitcategory;
- }
-
- /**
- * @param string $keyword tag name (either package or subpackage)
- * @param mixed $value either a string or a parserStringWithInlineTags. Strips all inline tags and use the text as the package
- */
- function addPackage($keyword, $value)
- {
- if ($keyword == 'package')
- {
- if (!$this->explicitpackage)
- {
- if (!is_string($value))
- $value = $value->getString();
- $rest = '';
- $value = explode(' ',$value);
- if (count($value) - 1)
- {
- $rest = $value;
- $value = $value[0];
- unset($rest[0]);
- $rest = implode($rest,' ');
- } else
- {
- $value = explode("\t",$value[0]);
- if (count($value) - 1)
- {
- $rest = $value;
- $value = $value[0];
- unset($rest[0]);
- $rest = implode($rest,"\t");
- } else $value = $value[0];
- }
- preg_match("/^([^`~!@#$%^&*(){}|<>,;]+)$/",$value,$match);
- if (!isset($match[0]))
- {
- // if were a single line and the only bad character is a space then will fix things for them
- preg_match("/^([^`~!@#$%^&*(){}|<>,;]+)$/",$value,$match);
- if (!isset($match[0]))
- {
- addError(PDERROR_ILLEGAL_PACKAGENAME,'package','package',$value);
- $value = $GLOBALS['phpDocumentor_DefaultPackageName'];
- }
- else
- {
- $value =
- str_replace(array(" ","/","\\",":"),"_",
- trim($value));
- }
- }
- $this->packagedescrip = $this->package = trim($value);
- if (!empty($rest)) $this->packagedescrip = $rest;
- } else
- {
- if (is_string($value))
- addError(PDERROR_MULTIPLE_PACKAGE_TAGS,$value);
- else
- addError(PDERROR_MULTIPLE_PACKAGE_TAGS,$value->getString());
- }
- } elseif ($keyword == 'subpackage')
- {
- if (empty($this->subpackage))
- {
- if (!is_string($value))
- $value = $value->getString();
- $rest = '';
- $value = explode(' ',$value);
- if (count($value) - 1)
- {
- $rest = $value;
- $value = $value[0];
- unset($rest[0]);
- $rest = implode($rest,' ');
- } else
- {
- $value = explode("\t",$value[0]);
- if (count($value) - 1)
- {
- $rest = $value;
- $value = $value[0];
- unset($rest[0]);
- $rest = implode($rest,"\t");
- } else $value = $value[0];
- }
- if (!empty($value))
- {
- preg_match("/^([^`~!@#$%^&*(){}|<>,;]+)$/",$value,$match);
- if (!isset($match[0]))
- {
- // if were a single line and the only bad character is a space then will fix things for them
- preg_match("/^([^`~!@#$%^&*(){}|<>,;]+)$/",$value,$match);
- if (!isset($match[0]))
- {
- addError(PDERROR_ILLEGAL_PACKAGENAME,'subpackage','subpackage',$value);
- $value = '';
- }
- else
- {
- $value =
- str_replace(array(" ","/","\\",":"),"_",
- trim($value));
- }
- }
- }
- $this->subpackage = trim($value);
- if (!empty($rest)) $this->subpackagedescrip = $rest;
- } else
- {
- if (is_string($value))
- addError(PDERROR_MULTIPLE_SUBPACKAGE_TAGS,$value);
- else
- addError(PDERROR_MULTIPLE_SUBPACKAGE_TAGS,$value->getString());
- }
- } elseif ($keyword == 'category')
- {
- if (!$this->explicitcategory)
- {
- if (!is_string($value))
- $value = $value->getString();
- $this->category = $value;
- } else
- {
- if (is_string($value))
- addError(PDERROR_MULTIPLE_CATEGORY_TAGS,$value);
- else
- addError(PDERROR_MULTIPLE_CATEGORY_TAGS,$value->getString());
- }
- }
- }
-
- /**
- * Adds a @name tag to the tag list
- * @param string new name of element
- */
- function addName($value)
- {
- if (is_object($value)) $value = $value->getString();
- if (!$this->hasname)
- {
- $x = new parserNameTag('name',$value);
- $this->hasname = true;
- $this->tags['name'][] = $x;
- } else
- {
- addError(PDERROR_MULTIPLE_NAME_TAGS,$value);
- }
- }
-
- /**
- * @param string if empty, staticvar is indexed in the order received and set using {@link changeStatic()}
- * @param string data type
- * @param parserStringWithInlineTags
- */
- function addStaticVar($staticvar, $type, $descrip)
- {
- if (empty($staticvar))
- $this->statics[] = new parserStaticvarTag($type,$descrip);
- else
- $this->statics[$staticvar] = new parserStaticvarTag($type,$descrip);
- }
-
- /**
- * adds a function declaration of @global to the {@link $funcglobals} array
- * @param string global type
- * @param string description of how the global is used in the function
- */
- function addFuncGlobal($type,$value)
- {
- $this->funcglobals[] = array($type,$value);
- }
-
- /**
- * @param integer $index index of parameter in the {@link $funcglobals} array
- * @param string $name name of the parameter to set in the $funcglobals array
- */
- function changeGlobal($index,$name)
- {
- $this->funcglobals[$name] = $this->funcglobals[$index];
- unset($this->funcglobals[$index]);
- }
-
- /**
- * @param integer $index index of parameter in the {@link $statics} array
- * @param string $name name of the parameter to set in the $statics array
- */
- function changeStatic($index,$name)
- {
- $this->statics[$name] = $this->statics[$index];
- unset($this->statics[$index]);
- }
-
- /**
- * replaces nameless global variables in the {@link $funcglobals} array with their names
- * @param array
- */
- function updateGlobals($funcs)
- {
- for($i=0;$i<count($funcs);$i++)
- {
- if (isset($this->funcglobals[$i]))
- {
- $this->changeGlobal($i,$funcs[$i]);
- }
- }
- }
-
- /**
- * replaces nameless static variables in the {@link $statics} array with their names
- * @param array
- */
- function updateStatics($funcs)
- {
- for($i=0;$i<count($funcs);$i++)
- {
- if (isset($this->statics[$i]))
- {
- $this->changeStatic($i,$funcs[$i]);
- }
- }
- }
-
- /**
- * add an @access tag to the {@link tags} array
- * @param string should be either public or private
- */
- function addAccess($value)
- {
- if (is_object($value)) $value = $value->getString();
- $value = strtolower($value);
- if (!$this->hasaccess)
- {
- $x = new parserAccessTag($value);
- if ($x->isvalid)
- {
- $this->hasaccess = true;
- $this->tags['access'][] = $x;
- }
- } else
- {
- if (is_string($value))
- addError(PDERROR_MULTIPLE_ACCESS_TAGS,$value);
- else
- addError(PDERROR_MULTIPLE_ACCESS_TAGS,$value->getString());
- }
- }
-
- /**
- * Adds a new @filesource tag to the DocBlock
- * @tutorial tags.filesource.pkg
- * @param string full path to the file
- * @param array tokenized source code, ordered by line number
- */
- function addFileSource($path, $source)
- {
- if (isset($this->tags['filesource'])) return;
- $this->tags['filesource'][] = new parserFileSourceTag($path, $source);
- }
-
- /**
- * creates a {@link parserLinkTag} and adds it to the {@link $tags} array
- * @param string $link
- */
- function addLink($link)
- {
- if (phpDocumentor_setup::checkIgnoreTag('@link')) return;
- $this->tags['link'][] = new parserLinkTag($link);
- }
-
- /**
- * creates a {@link parserLinkTag} and adds it to the {@link $tags} array
- * @param string either see or uses
- * @param string $value
- */
- function addSee($keyword,$value)
- {
- if (phpDocumentor_setup::checkIgnoreTag($keyword)) return;
- $tag = 'parser'.ucfirst($keyword).'Tag';
- $this->tags[$keyword][] = new $tag($value);
- }
-
- /**
- * creates a {@link parserReturnTag} and adds it to the {@link $tags} array
- * @param string $returnType the one-word name of the return type (mixed should be used if more than one type)
- * @param parserStringWithInlineTags $value
- */
- function addReturn($returnType, $value)
- {
- // only take the first one
- if (!$this->return)
- {
- $this->return = new parserReturnTag($returnType, $value);
- } else
- {
- addError(PDERROR_MULTIPLE_RETURN_TAGS,$returnType,$value->getString());
- }
- }
-
- /**
- * creates a {@link parserVarTag} and adds it to the {@link $tags} array
- * @param string $varType the one-word name of the variable type (mixed should be used if more than one type)
- * @param parserStringWithInlineTags $value
- */
- function addVar($varType, $value)
- {
- // only take the first one
- if (!$this->var)
- {
- $this->var = new parserVarTag($varType, $value);
- } else
- {
- addError(PDERROR_MULTIPLE_VAR_TAGS,$varType,$value->getString());
- }
- }
-
- /**
- * Adds a virtual @usedby tag to output
- * @param abstractLink link to the element that has a @uses tag
- * @param parserStringWithInlinetags description of how the elements uses
- * this one
- * @access private
- */
- function addUsedBy($link, $descrip)
- {
- $this->tags['usedby'][] = new parserUsedByTag($link, $descrip);
- }
-
- /**
- * Add a @uses tag to the DocBlock
- * @param string @see-style text, used for {@link Converter::getLink()}
- * @param parserStringWithInlineTags description of how the used element is
- * used
- * @tutorial tags.uses.pkg
- */
- function addUses($seeel, $description)
- {
- $this->tags['uses'][] = new parserUsesTag($seeel, $description);
- }
-
- /**
- * @param string
- * @return mixed false if no keyword, unconverted value if one keyword, array of unconverted values if more than one keyword
- */
- function getKeyword($keyword)
- {
- if ($keyword == 'filesource' && !$this->_canSource) return false;
- if (isset($this->tags[$keyword]))
- {
- if (count($this->tags[$keyword]) == 1)
- {
- return $this->tags[$keyword][0];
- } else return $this->tags[$keyword];
- } else return false;
- }
-
- /**
- * @return array Format: array('var' => tag name, 'data' => unconverted tag value)
- */
- function listParams()
- {
- if (isset($this->params))
- {
- $ret = array();
- foreach($this->params as $key => $val)
- {
- $ret[] = array("var" => ucfirst($key),"data" => $val);
- }
- return $ret;
- } else {
- return array();
- }
- }
-
- /**
- * @param Converter
- */
- function listTags()
- {
- $tags = array();
- foreach($this->tags as $keyword => $vals)
- {
- if ($keyword == 'filesource' && !$this->_canSource) continue;
- foreach($vals as $val)
- {
- $tags[] = $val;
- }
- }
- usort($tags,'tagsort');
- return $tags;
- }
-
- /** @return string always 'docblock' */
- function getType()
- {
- return 'docblock';
- }
-}
-
-/**
- * @access private
- */
-function tagsort($a, $b)
-{
- switch(phpDocumentor_get_class($a))
- {
- case 'parsertag' :
- switch ($a->keyword)
- {
- case 'author' :
- $o = 3;
- break;
- case 'version' :
- $o = 4;
- break;
- case 'deprecated' :
- case 'deprec' :
- $o = 7;
- break;
- case 'todo' :
- case 'TODO' :
- $o = 8;
- break;
- case 'abstract' :
- $o = 9;
- break;
- }
- case 'parseraccesstag' :
- $o = 10;
- break;
- case 'parsernametag' :
- $o = 11;
- break;
- case 'parserseetag' :
- $o = 5;
- break;
- case 'parserlinktag' :
- $o = 6;
- break;
- case 'parserreturntag' :
- $o = 0;
- break;
- case 'parservartag' :
- $o = 1;
- break;
- case 'parserstaticvartag' :
- $o = 2;
- break;
- default :
- $o = 12;
- break;
- }
- switch(phpDocumentor_get_class($b))
- {
- case 'parsertag' :
- switch ($b->keyword)
- {
- case 'author' :
- $p = 3;
- case 'version' :
- $p = 4;
- case 'deprecated' :
- case 'deprec' :
- $p = 7;
- case 'todo' :
- case 'TODO' :
- $p = 8;
- case 'abstract' :
- $p = 9;
- }
- case 'parseraccesstag' :
- $p = 10;
- case 'parsernametag' :
- $p = 11;
- case 'parserseetag' :
- $p = 5;
- case 'parserlinktag' :
- $p = 6;
- case 'parserreturntag' :
- $p = 0;
- case 'parservartag' :
- $p = 1;
- case 'parsertutorialtag' :
- $p = 1;
- case 'parserstaticvartag' :
- $p = 2;
- default :
- $p = 12;
- }
- if ($o == $p) return 0;
- if ($o < $p) return -1;
- if ($o > $p) return 1;
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ParserElements.inc b/buildscripts/PhpDocumentor/phpDocumentor/ParserElements.inc
deleted file mode 100644
index a95d24b8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserElements.inc
+++ /dev/null
@@ -1,1910 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Parser Elements, all classes representing documentable elements
- * @package phpDocumentor
- * @subpackage ParserElements
- * @since 1.1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-
-/**
- * all elements except {@link parserPackagePage} descend from this abstract class
- * @abstract
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserElement extends parserBase
-{
- /**
- * @var mixed either false or a {@link parserDocBlock}
- */
- var $docblock = false;
- /**
- * name of this element, or include type if element is a {@link parserInclude}
- */
- var $name;
-
- /**
- * @var mixed either false or an array of paths to files with conflicts
- */
- var $conflicts = false;
-
- /**
- * location of this element (filename)
- * @var string
- */
- var $file = '';
-
- /**
- * full path location of this element (filename)
- * @var string
- */
- var $path = '';
-
- /**
- * line number on file where this element stops
- * @since 1.2
- * @var false|integer
- */
- var $endlinenumber = 0;
-
- /**
- * Line number in the source on which this element appears
- * @since 1.2
- * @var false|integer
- */
- var $linenumber = false;
-
- /**
- * @param parserDocBlock
- */
- function setDocBlock($docblock)
- {
- $this->docblock = $docblock;
- }
-
- /**
- * @param string
- */
- function setName($name)
- {
- $this->name = trim($name);
- }
-
- /**
- * Set starting line number
- * @param integer
- */
- function setLineNumber($number)
- {
- $this->linenumber = $number;
- }
-
- /**
- * Sets the ending line number of elements
- * @param integer
- */
- function setEndLineNumber($l)
- {
- $this->endlinenumber = $l;
- }
-
- /**
- * @return integer
- */
- function getLineNumber()
- {
- return $this->linenumber;
- }
-
- /**
- * @return integer
- */
- function getEndLineNumber()
- {
- return $this->endlinenumber;
- }
-
- /** @return string package containing this element */
- function getPackage()
- {
- if ($this->docblock)
- {
- return $this->docblock->package;
- } else return $GLOBALS['phpDocumentor_DefaultPackageName'];
- }
-
- /** @param string */
- function setFile($file)
- {
- $this->file = $file;
- }
-
- /** @param string */
- function setPath($file)
- {
- // look for special windows case
- if(SMART_PATH_DELIMITER === '\\')
- $this->path = strtr($file,'/','\\');
- else
- $this->path = $file;
- $this->path = $file;
- }
-
- /**
- * @return string
- */
- function getName()
- {
- if (!isset($this->name)) return false;
- return $this->name;
- }
-
- /**
- * @return string
- */
- function getFile()
- {
- if (!isset($this->file)) return false;
- return $this->file;
- }
-
- /**
- * @return string
- */
- function getPath()
- {
- if (!isset($this->path)) return false;
- return $this->path;
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserInclude extends parserElement
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'include'
- */
- var $type = 'include';
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserGlobal extends parserElement
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'global'
- */
- var $type = 'global';
-
- /**
- * Name of the global's data type
- * @var string
- */
- var $datatype = 'mixed';
-
- /**
- * quick way to link to this element
- * @return mixed converter-specific link to this global variable
- * @param Converter
- * @param string text to display for the link or false for default text
- */
- function getLink(&$c, $text = false, $returnobj = false)
- {
- if ($returnobj)
- {
- return $c->getLink('global ' . $this->name, $this->docblock->package);
- }
- return $c->getGlobalLink($this->name, $this->docblock->package, $this->path, $text);
- }
-
- /**
- * Returns all global variables in other packages that have the same name as this global variable
- * @return mixed false or an array Format: (package => {@link parserGlobal} of conflicting global variable)
- * @param Converter
- */
- function getConflicts(&$c)
- {
- $a = $c->proceduralpages->getGlobalConflicts($this->name);
- unset($a[$this->docblock->package]);
- return $a;
- }
-
- /**
- * Sets the name of the global variable's type
- * @param string
- */
- function setDataType($type)
- {
- $this->datatype = $type;
- }
-
- /**
- * Retrieve converter-specific representation of the data type
- *
- * If the data type is a documented class name, then this function will
- * return a Converter-specific link to that class's documentation, so users
- * can click/browse to the documentation directly from the global variable
- * declaration
- * @return string
- * @param Converter
- */
- function getDataType(&$converter)
- {
- $converted_datatype = $this->datatype;
- if (strpos($this->datatype,'|'))
- {
- $types = explode('|',$this->datatype);
- foreach($types as $returntype)
- {
- $a = $converter->getLink($returntype);
- if (is_object($a) && phpDocumentor_get_class($a) == 'classlink')
- {
- if (!empty($my_types)) $my_types .= '|';
- $my_types .= $converter->returnSee($a,$converter->type_adjust($returntype));
- } else
- {
- if (!empty($my_types)) $my_types .= '|';
- $my_types .= $converter->type_adjust($returntype);
- }
- }
- $converted_datatype = $my_types;
- } else
- {
- $a = $converter->getLink($this->datatype);
- if (is_object($a) && phpDocumentor_get_class($a) == 'classlink')
- {
- $converted_datatype = $converter->returnSee($a,$converter->type_adjust($this->datatype));
- } else
- {
- $converted_dataype = $converter->type_adjust($this->datatype);
- }
- }
- return $converted_datatype;
- }
-
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserFunction extends parserElement
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'function'
- */
- var $type = 'function';
- /**
- * parameters parsed from function definition.
- *
- * param name may be null, in which case, updateParams() must be called from the Converter
- * @var array Format: array(param name => default value parsed from function definition)
- * @see updateParams()
- */
- var $params = false;
- /**
- * Function returns a reference to an element, instead of a value
- *
- * set to true if function is declared as:
- * <code>
- * function &func(...
- * </code>
- * @var boolean
- */
- var $returnsreference = false;
- /**
- * global declarations parsed from function definition
- *
- * @var array Format: array(globalname1, globalname2,....)
- */
- var $globals = false;
- /**
- * static variable declarations parsed from function definition
- * @var array Format: array(array('name' => staticvar1,'val' => '' or default val of staticvar1),...)
- */
- var $statics = false;
-
- var $source = '';
- /**
- * @param string
- * @param string default value parsed from function definition
- * @param boolean indicates whether this parameter has a default value
- */
- function addParam($name, $value, $has_default = true)
- {
- $this->params[$name] = array($value, $has_default);
- }
-
- /**
- * Set the source code. Always array in PHP 4.3.0+
- * @param string|array
- */
- function addSource($source)
- {
- $this->source = $source;
- }
-
- /**
- * Determine whether the source code has been requested via {@}source}
- * @return boolean
- */
- function hasSource()
- {
- if (is_array($this->source)) return true;
- return strlen($this->source);
- }
-
- /**
- * @return string|array source code ready for highlighting
- */
- function getSource()
- {
- return $this->source;
- }
-
- /**
- * quick way to link to this element
- * @return mixed converter-specific link to this function
- * @param Converter
- * @param string text to display for the link or false for default text
- */
- function getLink($c, $text = false, $returnobj = false)
- {
- if ($returnobj)
- {
- return $c->getLink('function ' . $this->name, $this->docblock->package);
- }
- return $c->getFunctionLink($this->name, $this->docblock->package, $this->path, $text);
- }
-
- /**
- * Returns all functions in other packages that have the same name as this function
- * @return mixed false or an array Format: (package => {@link parserFunction} of conflicting functions)
- * @param Converter
- */
- function getConflicts(&$c)
- {
- $a = $c->proceduralpages->getFuncConflicts($this->name);
- unset($a[$this->docblock->package]);
- return $a;
- }
-
- /**
- * Add all "global $var, $var2" declarations to this function
- * @param array $globals Format: array(globalname1, globalname2,....)
- */
- function addGlobals($globals)
- {
- $this->globals = $globals;
- }
-
- /**
- * Add all "static $var, $var2 = 6" declarations to this function
- * @param array Format: array(varname1, varname2,...)
- * @param array Format: array(default val of var 1, default val of var 2,...) if var 1 has no default, array(default val of var 2,...)
- */
- function addStatics($static,$vals)
- {
- if (count($static))
- {
- $this->statics = array();
- for($i=0;$i<count($static);$i++)
- {
- if (isset($static[$i]))
- {
- $a = '';
- if (isset($vals[$i])) $a = $vals[$i];
- $this->statics[] = array('name' => $static[$i],'val' => $a);
- }
- }
- }
- }
-
- /**
- * @return string default value of param $name
- * @param string
- */
- function getParam ($name)
- {
- if (!isset($this->params[$name])) return false;
- $test = $this->params[$name];
- if ($test[1])
- {
- return $this->params[$name];
- } else
- {
- return false;
- }
- }
-
- /**
- * @return array format: array(array(paramname, default value),...)
- */
- function listParams ()
- {
- if (isset($this->params))
- {
- $ret = array();
- if ($this->params)
- foreach($this->params as $key => $val)
- {
- if ($val[1])
- {
- $arr = array($key,$val[0]);
- if (isset($val[2]))
- {
- $arr[2] = $val[2];
- }
- $ret[] = $arr;
- } else
- {
- $arr = array($key,false);
- if (isset($val[2]))
- {
- $arr[2] = $val[2];
- }
- $ret[] = $arr;
- }
- }
- return $ret;
- } else {
- return array();
- }
- }
-
- /**
- * @return array format: array(array(index, globalname),...)
- */
- function listGlobals ()
- {
- if (isset($this->globals))
- {
- $ret = array();
- if ($this->globals)
- foreach($this->globals as $key => $val)
- {
- $ret[] = array($key,$val);
- }
- return $ret;
- } else {
- return array();
- }
- }
-
- /**
- * @return array format: array(array(static var name, static var default value),...)
- */
- function listStatics ()
- {
- if (isset($this->statics))
- {
- $ret = array();
- if ($this->statics)
- foreach($this->statics as $key => $val)
- {
- $ret[] = array($val['name'],$val['val']);
- }
- return $ret;
- } else {
- return array();
- }
- }
-
- /**
- * sets {@link $returnsreference} to true
- */
- function setReturnsReference()
- {
- $this->returnsreference = true;
- }
-
- /**
- * @return boolean returns value of {@link $returnsreference}
- */
- function getReturnsReference()
- {
- return $this->returnsreference;
- }
-
- /**
- * Get a human-friendly description of the function call
- *
- * takes declaration like:
- * <code>
- * /** @returns string ... {rest of docblock}
- * function &func($param1, $param2 = 6,
- * $param3 = array('20',9 => "heroo"))
- * {...}
- * </code>
- * and returns:
- * string &func( $param1, [$param2 = 6], [$param3 = array('20',9 => "heroo")] )
- * @return string stylized function declaration
- */
- function getFunctionCall()
- {
- $a = '';
- if ($this->getReturnsReference()) $a = '&';
- $function_call = $a.$this->getName() . " ( ";
- $tmp = 0;
- foreach($this->listParams() as $param)
- {
- if ($tmp == 0)
- {
- $tmp = 1;
- } else {
- $function_call .= ", ";
- }
- if ($param[1] !== false)
- {
- $function_call .= "[$param[0] = $param[1]]";
- } else {
- $function_call .= $param[0];
- }
- $update_params[] = $param[0];
- }
- $function_call .= " )";
- return $function_call;
- }
-
- /**
- * Like getFunctionCall(), but has no English or pre-determined formatting.
- *
- * Much more flexible.
- * @return array Format:
- * <code>
- * array('name' => function name,
- * 'returnsref' => boolean if declared as "function &name()"
- * 'params' => array('type' => data type of parameter,
- * 'description' => from @param tag,
- * 'name' => variable name,
- * 'default' => default value if any))
- * </code>
- * @see getFunctionCall()
- */
- function getIntricateFunctionCall($converter,$paramtags)
- {
- $a = array();
- if ($this->getReturnsReference()) $a['returnsref'] = true;
- $a['name'] = $converter->type_adjust($this->getName());
- $c = $this->listParams();
- foreach($c as $param)
- {
- $b = array();
- $b['type'] = 'mixed';
- if (isset($paramtags[$param[0]]))
- {
- $b['type'] = $paramtags[$param[0]]['datatype'];
- $b['description'] = $paramtags[$param[0]]['data'];
- unset($paramtags[$param[0]]);
- } elseif(isset($paramtags[substr($param[0],1)]))
- {
- $b['type'] = $paramtags[substr($param[0],1)]['datatype'];
- $b['description'] = $paramtags[substr($param[0],1)]['data'];
- unset($paramtags[substr($param[0],1)]);
- }
- if (isset($param[2]))
- {
- $b['type'] = $param[2];
- }
- $b['name'] = $param[0];
- $b['default'] = $param[1];
- $b['hasdefault'] = ($param[1] !== false);
- $a['params'][] = $b;
- }
- // @param tags that don't correspond to actual parameters (like extra function values)
- if (count($paramtags))
- {
- foreach($paramtags as $param)
- {
- $b = array();
- $b['type'] = $param['datatype'];
- $b['description'] = $param['data'];
- $b['name'] = $param['var'];
- $b['default'] = '';
- $b['hasdefault'] = false;
- $a['params'][] = $b;
- }
- }
- return $a;
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserClass extends parserElement
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'class'
- */
- var $type = 'class';
- /** @var string
- * @see parserPage::$sourceLocation */
- var $sourceLocation = '';
- /**
- * @var mixed false or contents of extends clause in class declaration
- */
- var $extends = false;
- /**
- * @var array a list of interfaces this class implements
- */
- var $_implements = array();
- /**
- * @var array a list of interfaces this class implements
- * @access private
- */
- var $_modifiers = false;
- /**
- * @var boolean determines whether a class is considered to be an interface
- * @access private
- */
- var $_isInterface = false;
- /**
- * Format: array(file, parent) where parent class is found or false if no parent
- * @var mixed
- */
- var $parent = false;
- /**
- * Used to determine whether a class should be ignored or not. Helps maintain integrity of parsing
- * @var boolean
- * @see Classes::getParentClass()
- */
- var $ignore = false;
-
- /**
- * @var string same as {@link parserElement::$path}
- */
- var $curfile = false;
- /**
- * @var tutorialLink|false either a link to the tutorial associated with this class, or false
- */
- var $tutorial = false;
-
- /**
- * Return name of the class that contains this method
- * @return string
- */
- function getModifiers()
- {
- return $this->_modifiers;
- }
-
- /**
- * Return name of the class that contains this method
- * @return string
- */
- function setModifiers($m)
- {
- $this->_modifiers = $m;
- }
-
- /**
- * @param parserTutorial
- * @param Converter
- */
- function addTutorial($t,&$c)
- {
- $this->tutorial = new tutorialLink;
- $this->tutorial->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($c));
- }
-
- /**
- * Get the associated tutorial for this class, if any
- * @tutorial tutorials.pkg
- * @return parserTutorial
- */
- function getTutorial()
- {
- return $this->tutorial;
- }
-
- /**
- * Returns all classes in other packages that have the same name as this class
- * @return mixed false or an array Format: (package => {@link parserClass} of conflicting classes)
- * @param Converter
- */
- function getConflicts(&$c)
- {
- $a = $c->classes->getConflicts($this->name);
- unset($a[$this->docblock->package]);
- return $a;
- }
-
- /**
- * quick way to link to this element
- * @return mixed converter-specific link to this class
- * @param Converter
- * @param string text to display for the link or false for default text
- */
- function getLink($c, $text = false, $returnobj = false)
- {
- if ($returnobj)
- {
- return $c->getLink('object ' . $this->name, $this->docblock->package);
- }
- return $c->getClassLink($this->name, $this->docblock->package, $this->curfile, $text);
- }
-
- /**
- * @param string parent class name
- * @param string parent class file
- * @param Classes {@link Classes} object currently calling setParent
- * @see Classes::setClassParent()
- */
-
- function setParent($p,$f, &$c)
- {
- $this->parent = array($f, $p);
- $p = $c->getClass($p, $f);
- // inherit package if no @package tag is in the docblock, fixes 591396
- if (!$this->docblock->getExplicitPackage())
- {
- $this->docblock->package = $p->docblock->package;
- }
- if ($this->docblock->package == $p->docblock->package)
- {
- if ($this->docblock->subpackage == '')
- $this->docblock->subpackage = $p->docblock->subpackage;
- }
- $author = $p->docblock->getKeyword('author');
- $version = $p->docblock->getKeyword('version');
- $copyright = $p->docblock->getKeyword('copyright');
- // inherit tags
- if (!$this->docblock->getKeyword('author'))
- {
- if ($author && !is_array($author)) $author = array($author);
- if ($author) $this->docblock->tags['author'] = $author;
- }
- if (!$this->docblock->getKeyword('version'))
- {
- if ($version && !is_array($version)) $version = array($version);
- if ($version) $this->docblock->tags['version'] = $version;
- }
- if (!$this->docblock->getKeyword('copyright'))
- {
- if ($copyright && !is_array($copyright)) $copyright = array($copyright);
- if ($copyright) $this->docblock->tags['copyright'] = $copyright;
- }
- if (!$this->docblock->sdesc)
- {
- $this->docblock->setShortDesc($p->docblock);
- $this->docblock->setDesc($p->docblock);
- } else
- {
- if ($this->docblock->hasInheritDoc())
- {
- $this->docblock->replaceInheritDoc($p->docblock);
- }
- }
- }
-
- /**
- * @param string $par parent class name (used by {@link Classes::setClassParent()} if parent class not found
- */
- function setParentNoClass($par)
- {
- $this->parent = $par;
- }
-
- /**
- * Use this method to set the type of class to be an interface
- */
- function setInterface()
- {
- $this->_isInterface = true;
- }
-
- /**
- * @return boolean true if this is an interface class
- */
- function isInterface()
- {
- return $this->_isInterface;
- }
-
- /**
- * Use this method to set access modifiers for a class
- * @param array
- */
- function setAccessModifiers($modifiers)
- {
- $this->_modifiers = $modifiers;
- }
-
- /**
- * retrieve object that represents the parent class
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return mixed returns the {@link parserClass} representation of the parent class, or false if no parent class
- */
- function &getParent(&$c)
- {
- $a = false;
- if (!$this->parent) return $a;
- if (is_array($this->parent))
- {
- return $c->classes->getClass($this->parent[1],$this->parent[0]);
- } else return $this->parent;
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array returns a simple array of method objects
- */
- function getMethods(&$c)
- {
- return $c->classes->getMethods($this->name,$this->curfile);
- }
-
- /**
- * @return mixed {@link parserMethod} or false if not found
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param string method name in this class
- */
- function getMethod(&$c, $name)
- {
- return $c->classes->getMethod($this->name,$this->curfile,$name);
- }
-
- /**
- * @return mixed {@link parserVar} or false if not found
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param string var name in this class
- */
- function getVar(&$c, $name)
- {
- return $c->classes->getVar($this->name,$this->curfile,$name);
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array returns a simple array of method name strings
- */
- function getMethodNames(&$c)
- {
- if (!$c->classes->hasMethods($this->curfile, $this->name)) return array();
- $arr = array();
- $arr1 = $this->getMethods($c);
- for($i=0; $i < count($arr1); $i++)
- {
- $arr[] = $arr1[$i]->name;
- }
- return $arr;
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param string method name
- * @return boolean whether this class has a method of name $name
- */
- function hasMethod(&$c,$name)
- {
- return $c->classes->hasMethod($this->name, $this->curfile, $name);
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param string var name
- * @return boolean whether this class has a var of name $name
- */
- function hasVar(&$c,$name)
- {
- return $c->classes->hasVar($this->name, $this->curfile, $name);
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param string class constant name
- * @return boolean whether this class has a constant of name $name
- */
- function hasConst(&$c,$name)
- {
- return $c->classes->hasConst($this->name, $this->curfile, $name);
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array returns a simple array of var objects
- */
- function getVars(&$c)
- {
- return $c->classes->getVars($this->name,$this->curfile);
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array returns a simple array of const objects
- */
- function getConsts(&$c)
- {
- return $c->classes->getConsts($this->name,$this->curfile);
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array returns a simple array of var name strings
- */
- function getVarNames(&$c)
- {
- if (!$c->classes->hasVars($this->curfile, $this->name)) return array();
- $arr = array();
- $arr1 = $this->getVars($c);
- for($i=0; $i < count($arr1); $i++)
- {
- $arr[] = $arr1[$i]->name;
- }
- return $arr;
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array returns a simple array of const name strings
- */
- function getConstNames(&$c)
- {
- if (!$c->classes->hasConsts($this->curfile, $this->name)) return array();
- $arr = array();
- $arr1 = $this->getConsts($c);
- for($i=0; $i < count($arr1); $i++)
- {
- $arr[] = $arr1[$i]->name;
- }
- return $arr;
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param boolean determines whether overriden methods should be included in the list of inherited methods
- * @return array returns an array of methods by parent classname array(name => array(method1,method2..),name2 => array(method1....))
- */
- function getInheritedMethods(&$c,$override = false)
- {
- $x = $this;
- $methods = array();
- $arr = array();
- while ($x->parent && is_array($x->parent))
- {
- $methods = array_merge($methods,$x->getMethodNames($c));
- $par = $x->getParent($c);
- $parmethodnames = $par->getMethodNames($c);
- $parmethods = $par->getMethods($c);
- for($i=0; $i<count($parmethodnames); $i++)
- {
- if ($override)
- {
- if (!in_array($parmethodnames[$i],$methods))
- {
- // fix for bug 587733
- if ($parmethods[$i]->docblock && $parmethods[$i]->docblock->hasaccess && !$c->parseprivate && $parmethods[$i]->docblock->tags['access'][0]->value == 'private')
- {
- continue;
- }
- $methods[] = $parmethodnames[$i];
- $arr[$par->getName()]['methods'][] = $parmethods[$i];
- $arr[$par->getName()]['file'] = $par->curfile;
- }
- } else
- {
- // fix for bug 587733
- if ($parmethods[$i]->docblock && $parmethods[$i]->docblock->hasaccess && !$c->parseprivate && $parmethods[$i]->docblock->tags['access'][0]->value == 'private')
- {
- continue;
- }
- $arr[$par->getName()]['methods'][] = $parmethods[$i];
- $arr[$par->getName()]['file'] = $par->curfile;
- }
- }
- $x = &$par;
- }
- return $arr;
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param boolean determines whether overriden vars should be included in the list of inherited vars
- * @return array returns an array of vars by parent classname array(name => array(var1,var1..),name2 => array(var1....))
- */
- function getInheritedVars(&$c,$override = true, $vars = false)
- {
- $x = $this;
- $vars = array();
- $arr = array();
- while ($x->parent && is_array($x->parent))
- {
- $vars = array_merge($vars,$x->getVarNames($c));
- $par = $x->getParent($c);
- $parvarnames = $par->getVarNames($c);
- $parvars = $par->getVars($c);
- for($i=0; $i<count($parvarnames); $i++)
- {
- if ($override)
- {
- if (!in_array($parvarnames[$i],$vars))
- {
- // fix for bug 587733
- if ($parvars[$i]->docblock && $parvars[$i]->docblock->hasaccess && !$c->parseprivate && $parvars[$i]->docblock->tags['access'][0]->value == 'private')
- {
- continue;
- }
- $vars[] = $parvarnames[$i];
- $arr[$par->getName()]['vars'][] = $parvars[$i];
- $arr[$par->getName()]['file'] = $par->curfile;
- }
- } else
- {
- // fix for bug 587733
- if ($parvars[$i]->docblock && $parvars[$i]->docblock->hasaccess && !$c->parseprivate && $parvars[$i]->docblock->tags['access'][0]->value == 'private')
- {
- continue;
- }
- $arr[$par->getName()]['vars'][] = $parvars[$i];
- $arr[$par->getName()]['file'] = $par->curfile;
- }
- }
- $x = &$par;
- }
- return $arr;
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @param boolean determines whether overriden vars should be included in the list of inherited vars
- * @return array returns an array of consts by parent classname array(name => array(const1,const2..),name2 => array(const1....))
- */
- function getInheritedConsts(&$c,$override = false, $consts = false)
- {
- $x = $this;
- $consts = array();
- $arr = array();
- while ($x->parent && is_array($x->parent))
- {
- $consts = array_merge($consts,$x->getConstNames($c));
- $par = $x->getParent($c);
- $parvarnames = $par->getConstNames($c);
- $parvars = $par->getConsts($c);
- for($i=0; $i<count($parvarnames); $i++)
- {
- if ($override)
- {
- if (!in_array($parvarnames[$i],$consts))
- {
- // fix for bug 587733
- if ($parvars[$i]->docblock && $parvars[$i]->docblock->hasaccess && !$c->parseprivate && $parvars[$i]->docblock->tags['access'][0]->value == 'private')
- {
- continue;
- }
- $consts[] = $parvarnames[$i];
- $arr[$par->getName()]['consts'][] = $parvars[$i];
- $arr[$par->getName()]['file'] = $par->curfile;
- }
- } else
- {
- // fix for bug 587733
- if ($parvars[$i]->docblock && $parvars[$i]->docblock->hasaccess && !$c->parseprivate && $parvars[$i]->docblock->tags['access'][0]->value == 'private')
- {
- continue;
- }
- $arr[$par->getName()]['consts'][] = $parvars[$i];
- $arr[$par->getName()]['file'] = $par->curfile;
- }
- }
- $x = &$par;
- }
- return $arr;
- }
-
- /**
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array Format: array(parentclassname => parserClass/false if no parent, parentclassname2 => ...)
- */
- function getParentClassTree(&$c)
- {
- $result = array();
- $result[$this->name] = $arr = $this->getParent($c);
- if (is_string($arr)) $result[$arr] = false;
- while ($arr && is_object($arr))
- {
- $result[$arr->name] = $arr->getParent($c);
- $arr = $arr->getParent($c);
- if (is_string($arr)) $result[$arr] = false;
- }
- return $result;
- }
-
- /**
- * returns a list of all child classes of this class
- * @param Converter this function will not work before the Conversion stage of parsing
- * @return array Format: array(parserClass child1,parserClass child2,...)
- */
- function getChildClassList(&$c)
- {
- $list = array();
- $kids = $c->classes->getDefiniteChildren($this->name,$this->curfile);
- if ($kids)
- {
- foreach($kids as $chile => $file)
- {
- $list[] = $c->classes->getClass($chile,$file);
- }
- }
- return $list;
- }
-
- /**
- * @param string
- * @see $sourceLocation
- */
- function setSourceLocation($sl)
- {
- $this->sourceLocation = $sl;
- }
-
- /**
- * @param Converter
- * @param boolean
- * @return string
- * @see $sourceLocation
- */
- function getSourceLocation($c,$pearize = false)
- {
- global $_phpDocumentor_options;
- if (!isset($this->sourceLocation)) return false;
- if ($pearize)
- {
- $sl = $this->sourceLocation;
- if (strpos($sl,'pear/'))
- {
- $sl = substr($sl,strpos($sl,'pear/') + 5);
- return $sl;
- } else
- {
- return $sl;
- }
- return $sl;
- }
- return $this->sourceLocation;
- }
-
- /**
- * @param string
- * @see $extends
- */
- function setExtends($extends)
- {
- $this->extends = $extends;
- }
-
- /**
- * @param string
- */
- function addImplements($implements)
- {
- $this->_implements[] = $implements;
- }
-
- /**
- * @return array
- */
- function getImplements()
- {
- return $this->_implements;
- }
-
- /**
- * @return boolean
- * @see $extends
- */
- function getExtends()
- {
- if (!isset($this->extends)) return false;
- return $this->extends;
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserVar extends parserElement
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'var'
- */
- var $type = 'var';
- /** @var string class that contains this var */
- var $class = '';
- /** @var array */
- var $_modifiers;
-
- /**
- * @param string
- */
- function parserVar($class)
- {
- $this->class = $class;
- }
-
- /**
- * Retrieve the class name
- * @return string Class name that this var belongs to
- */
- function getClass()
- {
- return $this->class;
- }
-
- /**
- * Return name of the class that contains this method
- * @return string
- */
- function getModifiers()
- {
- return $this->_modifiers;
- }
-
- /**
- * Return name of the class that contains this method
- * @return string
- */
- function setModifiers($m)
- {
- $this->_modifiers = $m;
- }
-
- /**
- * quick way to link to this element
- * @return mixed converter-specific link to this var
- * @param Converter $c
- * @param string $text text to display for the link or false for default text
- */
- function getLink($c, $text = false, $returnobj = false)
- {
- if ($returnobj)
- {
- return $c->getLink($this->class . '::' . $this->name, $this->docblock->package);
- }
- return $c->getVarLink($this->name, $this->class, $this->docblock->package, false, $text);
- }
-
- /**
- * @param Converter
- * @return mixed {@link parserVar} representing var this var overrides from the parent class, or false if none
- */
- function getOverrides(&$c)
- {
- $class = $c->classes->getClass($this->class,$this->path);
- $par = $class->getParent($c);
-
- while (is_object($par))
- {
- if ($par->hasVar($c,$this->name))
- {
- $var = $par->getVar($c,$this->name);
- if (!($var->docblock && $var->docblock->hasaccess && !$c->parseprivate && $var->docblock->tags['access'][0]->value == 'private'))
- return $var;
- }
- $par = $par->getParent($c);
- }
-
- return false;
- }
-
- /**
- * @param Converter
- * @return array an array of parserVars from ALL child classes that override this var
- */
- function getOverridingVars(&$c)
- {
- $class = $c->classes->getClass($this->class,$this->path);
-
- return $this->getOverridingVarsForClass($c, $class);
- }
-
- /**
- * @param Converter
- * @param parserClass
- * @return array an array of parserVars from ALL child classes that override this var in the given class
- */
- function getOverridingVarsForClass(&$c, &$class)
- {
- $vars = array();
- if (!$class) return $meths;
- $kids = $class->getChildClassList($c);
- for($i=0; $i<count($kids); $i++)
- {
- if ($kids[$i]->hasVar($c, $this->name))
- {
- $var = $kids[$i]->getVar($c,$this->name);
- if (!($var->docblock && $var->docblock->hasaccess && !$c->parseprivate && $var->docblock->tags['access'][0]->value == 'private'))
- $vars[] = $var;
- }
-
- $vars = array_merge($vars, $this->getOverridingVarsForClass($c, $kids[$i]));
- }
- return $vars;
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.2.4
- */
-class parserConst extends parserElement
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'const'
- */
- var $type = 'const';
- /** @var string class that contains this var */
- var $class = '';
-
- /**
- * @param string
- */
- function parserConst($class)
- {
- $this->class = $class;
- }
-
- /**
- * Retrieve the class name
- * @return string Class name that this var belongs to
- */
- function getClass()
- {
- return $this->class;
- }
-
- /**
- * quick way to link to this element
- * @return mixed converter-specific link to this var
- * @param Converter $c
- * @param string $text text to display for the link or false for default text
- */
- function getLink($c, $text = false, $returnobj = false)
- {
- if ($returnobj)
- {
- return $c->getLink($this->class . '::'. $this->name, $this->docblock->package);
- }
- return $c->getConstLink($this->name, $this->class, $this->docblock->package, false, $text);
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserMethod extends parserFunction
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'method'
- */
- var $type = 'method';
- /** @var boolean whether this method is a constructor */
- var $isConstructor = false;
- /** @var boolean whether this method is a destructor by PEAR standards */
- var $isDestructor = false;
- /** @var string class that contains this method */
- var $class = '';
- var $_modifiers = array();
-
- /**
- * @param string
- */
- function parserMethod($class)
- {
- $this->class = $class;
- }
-
- /**
- * @param string
- * @param string default value parsed from function definition
- * @param boolean indicates whether this parameter has a default value
- * @param null|string class type hint
- */
- function addParam($name, $value, $has_default = true, $typehint = null)
- {
- $this->params[$name] = array($value, $has_default);
- if (isset($typehint))
- {
- $this->params[$name][2] = $typehint;
- }
- }
-
- /**
- * adds "constructor " to start of function call if {@link $isConstructor} is true
- * @return string
- * @see parent::getFunctionCall()
- */
- function getFunctionCall()
- {
- $a = parserFunction::getFunctionCall();
- if ($this->isConstructor) $a = "constructor $a";
- return $a;
- }
-
- function getIntricateFunctionCall($converter,$paramtags)
- {
- $a = parserFunction::getIntricateFunctionCall($converter,$paramtags);
- if ($this->isConstructor) $a['constructor'] = true;
- if ($this->isDestructor) $a['destructor'] = true;
- return $a;
- }
-
- /**
- * Return name of the class that contains this method
- * @return string
- */
- function getClass()
- {
- return $this->class;
- }
-
- /**
- * Return name of the class that contains this method
- * @return string
- */
- function getModifiers()
- {
- return $this->_modifiers;
- }
-
- /**
- * Return name of the class that contains this method
- * @return string
- */
- function setModifiers($m)
- {
- $this->_modifiers = $m;
- }
-
- /**
- * @param Converter
- * @return mixed {@link parserMethod} representing method this method overrides from the parent class, or false if none
- */
- function getOverrides(&$c)
- {
- $class = $c->classes->getClass($this->class,$this->path);
-
- $par = $class->getParent($c);
-
- while (is_object($par))
- {
- if ($par->hasMethod($c,$this->name))
- {
- $meth = $par->getMethod($c,$this->name);
- if (!($meth->docblock && $meth->docblock->hasaccess && !$c->parseprivate && $meth->docblock->tags['access'][0]->value == 'private'))
- return $meth;
- }
-
- $par = $par->getParent($c);
- }
-
- return false;
- }
-
- /**
- * quick way to link to this element
- * @return mixed converter-specific link to this method
- * @param Converter $c
- * @param string $text text to display for the link or false for default text
- */
- function getLink($c, $text = false, $returnobj = false)
- {
- if ($returnobj)
- {
- return $c->getLink($this->class . '::' . $this->name . '()', $this->docblock->package);
- }
- return $c->getMethodLink($this->name, $this->class, $this->docblock->package, false, $text);
- }
-
- /**
- * Use this method to tell the parser that this method is the class constructor
- */
- function setConstructor()
- {
- $this->isConstructor = true;
- }
-
- /**
- * Use this method to tell the parser that this method is the class constructor
- */
- function setDestructor()
- {
- $this->isDestructor = true;
- }
-
- /**
- * @param Converter
- * @return array an array of parserMethods from child classes that override this method
- */
- function getOverridingMethods(&$c)
- {
- $class = $c->classes->getClass($this->class,$this->path);
-
- return $this->getOverridingMethodsForClass($c, $class);
- }
-
- /**
- * @param Converter
- * @param parserClass
- * @return array an array of parserMethods from ALL child classes that override this method in the given class
- */
- function getOverridingMethodsForClass(&$c, &$class)
- {
- $meths = array();
- if (!$class) return $meths;
- $kids = $class->getChildClassList($c);
- for($i=0; $i<count($kids); $i++)
- {
- if ($kids[$i]->hasMethod($c, $this->name))
- {
- $meth = $kids[$i]->getMethod($c,$this->name);
- if (!($meth->docblock && $meth->docblock->hasaccess && !$c->parseprivate && $meth->docblock->tags['access'][0]->value == 'private'))
- $meths[] = $meth;
- }
-
- $meths = array_merge($meths, $this->getOverridingMethodsForClass($c, $kids[$i]));
- }
- return $meths;
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserDefine extends parserElement
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'define'
- */
- var $type = 'define';
-
- /**
- * quick way to link to this element
- * @return mixed converter-specific link to this define
- * @param Converter $c
- * @param string $text text to display for the link or false for default text
- */
- function getLink($c, $text = false, $returnobj = false)
- {
- if ($returnobj)
- {
- return $c->getLink('constant ' . $this->name, $this->docblock->package);
- }
- return $c->getDefineLink($this->name, $this->docblock->package, false, $text);
- }
-
- /**
- * Returns all defines in other packages that have the same name as this define
- * @return mixed false or an array Format: (package => {@link parserDefine} of conflicting defines)
- * @param Converter
- */
- function getConflicts(&$c)
- {
- $a = $c->proceduralpages->getDefineConflicts($this->name);
- unset($a[$this->docblock->package]);
- return $a;
- }
-
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc,v 1.2 2005/11/28 07:27:59 cellog Exp $
- */
-class parserPackagePage extends parserStringWithInlineTags
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'packagepage'
- */
- var $type = 'packagepage';
- /** @var string */
- var $package = 'default';
-
- /**
- * @param string
- */
- function parserPackagePage($package)
- {
- $this->package = $package;
- }
-
- /**
- * @param Converter
- */
- function Convert(&$c)
- {
- return parent::Convert($c,false);
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @since 1.2
- */
-class parserTutorial extends parserPackagePage
-{
- /**
- * Type is used by many functions to skip the hassle of if phpDocumentor_get_class($blah) == 'parserBlah'
- * @var string always 'tutorial'
- */
- var $type = 'tutorial';
- /** @var string */
- var $package = 'default';
- /**
- * Either cls, pkg, or proc
- * @var string
- */
- var $tutorial_type;
- /**
- * The documentable element this tutorial is linked to
- *
- * Can be a parserData, parserClass, or nothing for package/subpackage docs
- */
- var $linked_element;
- /**
- * path to the tutorial page
- * @var string
- */
- var $path;
- /**
- * filename minus extension of this tutorial (used for @tutorial tag)
- * @var string
- */
- var $name;
- /** @var boolean */
- var $_xml = true;
- /**
- * output from tutorialname.ext.ini
- *
- * an array generated by {@link phpDocumentor_parse_ini_file()} containing
- * an index 'Linked Tutorials' with an array of tutorial names in the order
- * they should appear. This is used to generate a linked list of tutorials like
- * {@tutorial phpDocumentor/tags.pkg}
- * @var array
- */
- var $ini = false;
- /**
- * link to the next tutorial in a document series, or false if none
- * @var tutorialLink
- */
- var $next = false;
- /**
- * link to the previous tutorial in a document series, or false if none
- * @var tutorialLink
- */
- var $prev = false;
- /**
- * link to the parent tutorial in a document series, or false if none
- *
- * This is used to generate an "Up" or "Home" link like the php manual.
- * The parent is defined as a tutorial that has a parenttutorialname.ext.ini
- * file and is not contained by any other tutorial's tutorialname.ext.ini
- * @var tutorialLink
- */
- var $parent = false;
- /**
- * links to the child tutorials, or false if none
- * @var array
- */
- var $children = false;
-
- /**
- * @param parserXMLDocBookTag top-level tag (<refentry> for 1.2.0)
- * @param information about the tutorial file. Format:
- *
- * <pre>
- * array('tutename' => tutorial name,
- * 'path' => relative path of tutorial to tutorials/ directory
- * 'ini' => contents of the tutorial .ini file, if any)
- * </pre>
- */
- function parserTutorial($data, $info)
- {
- $this->value = $data;
- $this->package = $info['package'];
- $this->subpackage = $info['subpackage'];
- $this->tutorial_type = $info['tutetype'];
- $this->name = $info['tutename'];
- $this->path = $info['path'];
- $this->ini = $info['ini'];
- }
-
- /**
- * Retrieve the title of the tutorial, or of any subsection
- * @param Converter
- * @param string which subsection to retrieve the title from, if any
- * @uses parserXMLDocBookTag::getSubSection() retrieve the subsection to
- * to get a title from
- */
- function getTitle(&$c,$subsection = '')
- {
- if (!empty($subsection))
- {
- $z = $this->value->getSubSection($c,$subsection);
- if (!$z)
- {
- addWarning(PDERROR_TUTORIAL_SUBSECTION_NOT_FOUND,$this->name,$subsection);
- return $subsection;
- }
- return $z->getTitle($c);
- }
- return $this->value->getTitle($c);
- }
-
- /**
- * @param Converter
- * @param boolean determines whether character data is postprocessed to be
- * Converter-friendly or not.
- */
- function Convert(&$c, $postprocess = true)
- {
- return $this->value->Convert($c, $postprocess);
- }
-
- /**
- * @uses $parent creates a link to the documentation for the parent tutorial
- * @param parserTutorial
- * @param Converter
- */
- function setParent($parent,&$c)
- {
- $this->parent = new tutorialLink;
- $this->parent->addLink('', $parent->path, $parent->name, $parent->package, $parent->subpackage, $parent->getTitle($c));
- }
-
- /**
- * @param array array of parserTutorials that have child tutorials
- */
- function isChildOf($parents)
- {
- foreach($parents as $i => $parent)
- {
- if ($parent->path == $this->path) continue;
- if ($parent->ini && ($parent->package == $this->package) && ($parent->subpackage == $this->subpackage) && ($parent->tutorial_type == $this->tutorial_type))
- {
- foreach($parent->ini['Linked Tutorials'] as $child)
- {
- if ($child . '.' . $this->tutorial_type == $this->name) return true;
- }
- }
- }
- }
-
- /**
- * Retrieve converter-specific link to the parent tutorial's documentation
- * @param Converter
- */
- function getParent(&$c)
- {
- if (!$this->parent) return false;
- return $c->returnSee($this->parent);
- }
-
- /**
- * @uses $next creates a link to the documentation for the next tutorial
- * @param parserTutorial
- * @param Converter
- */
- function setNext($next,&$c)
- {
- if (phpDocumentor_get_class($next) == 'tutoriallink') return $this->next = $next;
- $this->next = new tutorialLink;
- $this->next->addLink('', $next->path, $next->name, $next->package, $next->subpackage, $next->getTitle($c));
- }
-
- /**
- * Retrieve converter-specific link to the next tutorial's documentation
- * @param Converter
- */
- function getNext(&$c)
- {
- if (!$this->next) return false;
- return $c->returnSee($this->next);
- }
-
- /**
- * @uses $prev creates a link to the documentation for the previous tutorial
- * @param parserTutorial
- * @param Converter
- */
- function setPrev($prev,&$c)
- {
- if (phpDocumentor_get_class($prev) == 'tutoriallink') return $this->prev = $prev;
- $this->prev = new tutorialLink;
- $this->prev->addLink('', $prev->path, $prev->name, $prev->package, $prev->subpackage, $prev->getTitle($c));
- }
-
- /**
- * Retrieve converter-specific link to the previous tutorial's documentation
- * @param Converter
- */
- function getPrev(&$c)
- {
- if (!$this->prev) return false;
- return $c->returnSee($this->prev);
- }
-
- /**
- * Get a link to this tutorial, or to any subsection of this tutorial
- * @param Converter
- * @param boolean if true, returns a {@link tutorialLink} instead of a string
- * @param string section name to link to
- * @return string|tutorialLink
- */
- function getLink(&$c,$pure = false,$section = '')
- {
- $link = new tutorialLink;
- $link->addLink($section, $this->path, $this->name, $this->package, $this->subpackage, $this->getTitle($c), $this->category);
- if ($pure) return $link;
- return $c->returnSee($link);
- }
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc b/buildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc
deleted file mode 100644
index a26fbacc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc
+++ /dev/null
@@ -1,782 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Intermediate procedural page parsing structure.
- * This structure parses defines, functions, and global variables by file,
- * and then iterates over the elements to document conflicts.
- * @package phpDocumentor
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.1
- * @version $Id: ProceduralPages.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-/**
- * Intermediate procedural page parsing structure.
- * This structure parses defines, functions, and global variables by file,
- * and then iterates over the elements to document conflicts.
- * @package phpDocumentor
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.1
- * @version $Id: ProceduralPages.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- */
-class ProceduralPages
-{
- /**
- * file being parsed, used in every add function to match up elements with the file that contains them
- * @see addClass(), addMethod(), addVar(), nextFile()
- * @var string
- */
- var $curfile;
- /**
- * array of all procedural pages ordered by name
- * Format:
- * array(name => array(fullpath => parserPage,fullpath => parserPage2 [if there are name conflicts],...))
- * @var array
- */
- var $pages = array();
- /**
- * array of all procedural pages ordered by name that have been ignored via -po or @access private or @ignore
- * Format:
- * array(name => array(fullpath => parserPage,fullpath => parserPage2 [if there are name conflicts],...))
- * @var array
- */
- var $ignorepages = array();
- /**
- * array of all procedural page names ordered by full path to the file
- * Format:
- * array(fullpath => name)
- * @var array
- */
- var $pathpages = array();
- /**
- * array of parsed includes organized by the full path of the file that contains the include.
- * Format:
- * array(full path => array(includename => {@link parserInclude}))
- * @var array
- */
- var $includesbyfile = array();
- /**
- * array of parsed functions organized by the full path of the file that contains the function.
- * Format:
- * array(full path => array(functionname => {@link parserFunction}))
- * @var array
- */
- var $functionsbyfile = array();
- /**
- * array of parsed defines organized by the full path of the file that contains the define.
- * Format:
- * array(full path => array(definename => {@link parserDefine}))
- * @var array
- */
- var $definesbyfile = array();
- /**
- * array of parsed global variables organized by the full path of the file that contains the global variable definition.
- * Format:
- * array(full path => array(globalname => {@link parserGlobal}))
- * @var array
- */
- var $globalsbyfile = array();
- /**
- * array of file names organized by functions that are in the file.
- * This structure is designed to handle name conflicts. Two files can contain functions with the same name, and this array will
- * record both filenames to help control namespace errors
- * Format:
- * array(functionname => array(full path of file containing functionname, full path of file 2 containing functionname...)
- * @var array
- */
- var $functionsbynamefile = array();
- /**
- * array of file names organized by defines that are in the file.
- * This structure is designed to handle name conflicts. Two files can contain defines with the same name, and this array will
- * record both filenames to help control namespace errors
- * Format:
- * array(definename => array(full path of file containing definename, full path of file 2 containing definename...)
- * @var array
- */
- var $definesbynamefile = array();
- /**
- * array of file names organized by global variables that are in the file.
- * This structure is designed to handle name conflicts. Two files can contain global variables with the same name, and this array will
- * record both filenames to help control namespace errors
- * Format:
- * array(global variablename => array(full path of file containing global variablename, full path of file 2 containing global variablename...)
- * @var array
- */
- var $globalsbynamefile = array();
- /**
- * array of packages ordered by full path
- * Format:
- * array(fullpath => array(packagename,subpackagename))
- * @var array
- */
- var $pagepackages = array();
- /**
- * array of packages assigned to classes in a file, ordered by fullpath
- * Format:
- * array(fullpath => array(packagename => array(subpackagename => 1,subpackagename => 1,..),packagename2 =>...)
- * @var array
- */
- var $pageclasspackages = array();
- /**
- * Namespace conflicts within all documented packages of functions
- * Format:
- * array(functionname => array(full path, full path,...))
- * @var array
- */
- var $functionconflicts = array();
- /**
- * Namespace conflicts within all documented pages
- * Format:
- * array(pagename => array(fullpath, fullpath,...))
- * @var array
- */
- var $pageconflicts = array();
- /**
- * Namespace conflicts within all documented packages of functions
- * Format:
- * array(functionname => array(full path, full path,...))
- * @var array
- */
- var $defineconflicts = array();
- /**
- * Namespace conflicts within all documented packages of functions
- * Format:
- * array(functionname => array(full path, full path,...))
- * @var array
- */
- var $globalconflicts = array();
- /** @access private
- * @var array */
- var $revcpbf = array();
- /** @access private
- * @var boolean */
- var $packagesetup = false;
-
- /**
- * sets up the {@link $pages} array
- * @param parserPage &$element
- */
- function addPage(&$element)
- {
- $this->curfile = $element->getPath();
- $this->pages[$element->getFile()][$element->getPath()] = $element;
- $this->pathpages[$this->curfile] = $element->getFile();
- $this->addPagePackage($this->curfile, $element->package, $element->subpackage);
- }
-
- /**
- * moves a page from the {@link $pages} array to the {@link $ignorepages} array
- * @param parserPage &$element
- */
- function ignorePage(&$element)
- {
- $this->ignorepages[$element->getFile()][$element->getPath()] = $this->pages[$element->getFile()][$element->getPath()];
- unset($this->pages[$element->getFile()][$element->getPath()]);
- }
-
- function getPathInfo($path,&$c)
- {
- $path = str_replace('/',SMART_PATH_DELIMITER,$path);
- $info = array();
- if (!isset($this->pathpages[$path])) return false;
- $p = $this->pages[$this->pathpages[$path]][$path];
- $p->name = $c->getPageName($p);
- $info['package'] = $p->package;
- $info['subpackage'] = $p->subpackage;
- $info['name'] = $p->getFile();
- $info['source_loc'] = $p->getSourceLocation($c);
- $x = new pageLink;
- $x->addLink($p->path,$p->name,$p->file,$p->package, $p->subpackage);
- $info['docs'] = $c->returnSee($x);
- return $info;
- }
-
- /**
- * Change a page's name from its file to alias $name
- *
- * This function is used to handle a @name tag in a page-level DocBlock
- * @param string $name
- */
- function setName($name)
- {
- $this->pages[$name][$this->curfile] = $this->pages[$this->pathpages[$this->curfile]][$this->curfile];
- $this->pages[$name][$this->curfile]->file = $name;
- unset($this->pages[$this->pathpages[$this->curfile]][$this->curfile]);
- $this->pathpages[$this->curfile] = $name;
- }
-
- /**
- * Changes the package of the page represented by $path
- *
- * changes package in both the {@link $pages} array and the {@link pagepackages} array
- * @param string $path full path
- * @param string $package
- * @param string $subpackage
- */
- function addPagePackage($path,$package,$subpackage)
- {
- $this->pages[$this->pathpages[$path]][$path]->package = $package;
- $this->pages[$this->pathpages[$path]][$path]->subpackage = $subpackage;
- $this->pagepackages[$path] = array($package, $subpackage);
- if (isset($this->includesbyfile[$path]))
- {
- foreach($this->includesbyfile[$path] as $i => $el)
- {
- $el->package = $package;
- $el->subpackage = $subpackage;
- $this->includesbyfile[$path][$i] = $el;
- }
- }
- if (isset($this->functionsbyfile[$path]))
- {
- foreach($this->functionsbyfile[$path] as $i => $el)
- {
- $el->package = $package;
- $el->subpackage = $subpackage;
- $this->functionsbyfile[$path][$i] = $el;
- }
- }
- if (isset($this->definesbyfile[$path]))
- {
- foreach($this->definesbyfile[$path] as $i => $el)
- {
- $el->package = $package;
- $el->subpackage = $subpackage;
- $this->definesbyfile[$path][$i] = $el;
- }
- }
- if (isset($this->globalsbyfile[$path]))
- {
- foreach($this->globalsbyfile[$path] as $i => $el)
- {
- $el->package = $package;
- $el->subpackage = $subpackage;
- $this->globalsbyfile[$path][$i] = $el;
- }
- }
- }
-
- /**
- * sets up the {@link $includesbyfile} array using {@link $curfile}
- * @param parserInclude &$element
- */
- function addInclude(&$element)
- {
- $this->includesbyfile[$this->curfile][] = $element;
- }
-
- /**
- * sets up the {@link $functionsbyfile} array using {@link $curfile}
- * @param parserFunction &$element
- */
- function addFunction(&$element)
- {
- if (isset($this->functionsbyfile[$this->curfile]))
- {
- foreach($this->functionsbyfile[$this->curfile] as $i => $function)
- {
- if ($function->getName() == $element->getName())
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'function',$element->getName(),$this->curfile);
- return;
- }
- }
- }
- $this->functionsbyfile[$this->curfile][] = $element;
- $this->functionsbynamefile[$element->getName()][] = $this->curfile;
- }
-
- /**
- * sets up the {@link $globalsbyfile} array using {@link $curfile}
- * @param parserGlobal &$element
- */
- function addGlobal(&$element)
- {
- if (isset($this->globalsbyfile[$this->curfile]))
- {
- foreach($this->globalsbyfile[$this->curfile] as $i => $global)
- {
- if ($global->getName() == $element->getName())
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'global variable',$element->getName(),$this->curfile);
- return;
- }
- }
- }
- $this->globalsbyfile[$this->curfile][] = $element;
- $this->globalsbynamefile[$element->getName()][] = $this->curfile;
- }
-
- /**
- * sets up the {@link $definesbyfile} array using {@link $curfile}
- * @param parserDefine &$element
- */
- function addDefine(&$element)
- {
- if (isset($this->definesbyfile[$this->curfile]))
- {
- foreach($this->definesbyfile[$this->curfile] as $i => $define)
- {
- if ($define->getName() == $element->getName())
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'define',$element->getName(),$this->curfile);
- return;
- }
- }
- }
- $this->definesbyfile[$this->curfile][] = $element;
- $this->definesbynamefile[$element->getName()][] = $this->curfile;
- }
-
- /**
- * Used to align an element with the package of its parent page prior to Conversion.
- * @param parserElement &$element
- */
- function replaceElement(&$element)
- {
- if ($element->type == 'define')
- {
- foreach($this->definesbyfile[$element->getPath()] as $i => $el)
- {
- if ($el->getName() == $element->getName())
- {
- $this->definesbyfile[$element->getPath()][$i] = &$element;
- }
- }
- } elseif ($element->type == 'global')
- {
- foreach($this->globalsbyfile[$element->getPath()] as $i => $el)
- {
- if ($el->getName() == $element->getName())
- {
- $this->globalsbyfile[$element->getPath()][$i] = &$element;
- }
- }
- } elseif ($element->type == 'include')
- {
- foreach($this->includesbyfile[$element->getPath()] as $i => $el)
- {
- if ($el->getName() == $element->getName())
- {
- $this->includesbyfile[$element->getPath()][$i] = &$element;
- }
- }
- } elseif ($element->type == 'function')
- {
- foreach($this->functionsbyfile[$element->getPath()] as $i => $el)
- {
- if ($el->getName() == $element->getName())
- {
- $this->functionsbyfile[$element->getPath()][$i] = &$element;
- }
- }
- }
- }
-
- /**
- * adds a package from a class to the current file
- * @param string $file full path to the file that contains the class
- * @param string $package package name
- */
- function addClassPackageToFile($file,$package,$subpackage)
- {
- // don't care about default
-// if ($package == $GLOBALS['phpDocumentor_DefaultPackageName'])
-// $this->revcpbf[$file][$package][$subpackage] = 1;
- if (!isset($this->revcpbf[$file][$package][$subpackage]))
- {
- $this->pageclasspackages[$file][$package][$subpackage] = 1;
- }
- $this->revcpbf[$file][$package][$subpackage] = 1;
- }
-
- /**
- * if there is one class package in a file, the parent path inherits the package if its package is default.
- * helps with -po to avoid dumb bugs
- */
- function setupPagePackages()
- {
- if ($this->packagesetup) return;
- foreach($this->pageclasspackages as $fullpath => $packages)
- {
- if (isset($this->pagepackages[$fullpath]))
- {
- if ($this->pagepackages[$fullpath][0] == $GLOBALS['phpDocumentor_DefaultPackageName'])
- {
- if (count($packages) == 1)
- {
- list($package,$subpackage) = each($packages);
- if (count($subpackage) == 1) list($subpackage,) = each($subpackage);
- else $subpackage = '';
- $this->addPagePackage($fullpath,$package,$subpackage);
- }
- }
- }
- }
- $this->packagesetup = true;
- }
-
- /**
- * extracts function, define, and global variable name conflicts within the same package and between different
- * packages. No two elements with the same name are allowed in the same package, to keep automatic linking
- * possible.
- * @access private
- */
- function setupConflicts(&$render)
- {
-
- foreach($this->functionsbynamefile as $function => $paths)
- {
- if (count($paths) - 1)
- { //conflict
- $package = array();
- foreach($paths as $path)
- {
- // create a list of conflicting functions in each package
- $package[$this->pagepackages[$path][0]][] = $path;
- }
- foreach($package as $pathpackages)
- {
- // if at least 2 functions exist in the same package, delete all but the first one and add warnings
- if (count($pathpackages) - 1)
- {
- for($i=1; $i < count($pathpackages); $i++)
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'function',$function,$pathpackages[$i]);
- foreach($this->functionsbyfile[$pathpackages[$i]] as $j => $blah)
- {
- if ($this->functionsbyfile[$pathpackages[$i]][$j]->getName() == $function)
- unset($this->functionsbyfile[$pathpackages[$i]][$j]);
- }
- $oth = array_flip($paths);
- unset($paths[$oth[$pathpackages[$i]]]);
- }
- }
- }
- $this->functionconflicts[$function] = $paths;
- }
- }
-
- foreach($this->definesbynamefile as $define => $paths)
- {
- if (count($paths) - 1)
- { //conflict
- $package = array();
- foreach($paths as $path)
- {
- // create a list of conflicting functions in each package
- $package[$this->pagepackages[$path][0]][] = $path;
- }
- foreach($package as $pathpackages)
- {
- // if at least 2 functions exist in the same package, delete all but the first one and add warnings
- if (count($pathpackages) - 1)
- {
- for($i=1; $i < count($pathpackages); $i++)
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'define',$define,$pathpackages[$i]);
- foreach($this->definesbyfile[$pathpackages[$i]] as $j => $blah)
- {
- if ($this->definesbyfile[$pathpackages[$i]][$j]->getName() == $define)
- unset($this->definesbyfile[$pathpackages[$i]][$j]);
- }
- $oth = array_flip($paths);
- unset($paths[$oth[$pathpackages[$i]]]);
- }
- }
- }
- $this->defineconflicts[$define] = $paths;
- }
- }
-
- foreach($this->globalsbynamefile as $global => $paths)
- {
- if (count($paths) - 1)
- { //conflict
- $package = array();
- foreach($paths as $path)
- {
- // create a list of conflicting functions in each package
- $package[$this->pagepackages[$path][0]][] = $path;
- }
- foreach($package as $pathpackages)
- {
- // if at least 2 functions exist in the same package, delete all but the first one and add warnings
- if (count($pathpackages) - 1)
- {
- for($i=1; $i < count($pathpackages); $i++)
- {
- addWarning(PDERROR_ELEMENT_IGNORED,'global variable',$global,$pathpackages[$i]);
- foreach($this->globalsbyfile[$pathpackages[$i]] as $j => $blah)
- {
- if ($this->globalsbyfile[$pathpackages[$i]][$j]->getName() == $global)
- unset($this->globalsbyfile[$pathpackages[$i]][$j]);
- }
- $oth = array_flip($paths);
- unset($paths[$oth[$pathpackages[$i]]]);
- }
- }
- }
- $this->globalconflicts[$global] = $paths;
- }
- }
-
- foreach($this->pages as $name => $pages)
- {
- if (count($pages) - 1)
- { // possible conflict
-
- }
- }
- }
-
- /**
- * called by {@link parserFunction::getConflicts()} to get inter-package conflicts, should not be called directly
- * @access private
- * @return array Format: (package => {@link parserFunction} of conflicting function)
- */
- function getFuncConflicts($name)
- {
- if (!isset($this->functionconflicts[$name])) return false;
- $a = array();
- foreach($this->functionconflicts[$name] as $conflict)
- {
- foreach($this->functionsbyfile[$conflict] as $i => $func)
- {
- if ($func->getName() == $name)
- $a[$this->functionsbyfile[$conflict][$i]->docblock->package] = $this->functionsbyfile[$conflict][$i];
- }
- }
- return $a;
- }
-
- /**
- * called by {@link parserGlobal::getConflicts()} to get inter-package conflicts, should not be called directly
- * @access private
- * @return array Format: (package => {@link parserGlobal} of conflicting global variable)
- */
- function getGlobalConflicts($name)
- {
- if (!isset($this->globalconflicts[$name])) return false;
- $a = array();
- foreach($this->globalconflicts[$name] as $conflict)
- {
- foreach($this->globalsbyfile[$conflict] as $i => $func)
- {
- if ($func->getName() == $name)
- $a[$this->globalsbyfile[$conflict][$i]->docblock->package] = $this->globalsbyfile[$conflict][$i];
- }
- }
- return $a;
- }
-
- /**
- * called by {@link parserDefine::getConflicts()} to get inter-package conflicts, should not be called directly
- * @access private
- * @return array Format: (package => {@link parserDefine} of conflicting define)
- */
- function getDefineConflicts($name)
- {
- if (!isset($this->defineconflicts[$name])) return false;
- $a = array();
- foreach($this->defineconflicts[$name] as $conflict)
- {
- foreach($this->definesbyfile[$conflict] as $i => $func)
- {
- if ($func->getName() == $name)
- $a[$this->definesbyfile[$conflict][$i]->docblock->package] = $this->definesbyfile[$conflict][$i];
- }
- }
- return $a;
- }
-
- /**
- * Adjusts packages of all pages and removes name conflicts within a package
- *
- * Automatic linking requires that each linkable name have exactly one element associated with it. In other words, there
- * cannot be two functions named foo() in the same package. This also adheres to php rules with one exception:
- *
- * <code>
- * if ($test == 3)
- * {
- * define('whatever','this thing');
- * } else
- * {
- * define('whatever','this other thing');
- * }
- * </code>
- *
- * phpDocumentor is not aware of conditional control structures because it would slow things down considerably.
- * So, what phpDocumentor does is automatically ignore the second define and raise a warning. The warning can
- * be eliminated with an @ignore tag on the second element like so:
- *
- * <code>
- * if ($test == 3)
- * {
- * define('whatever','this thing');
- * } else
- * {
- * /** @ignore {@*}
- * define('whatever','this other thing');
- * }
- * </code>
- *
- * if there are two files that contain the same procedural elements in the same package (for example,
- * a common configuration file common.php), they will also be ignored as if they were in the same file. The
- * reasoning behind this is simple. A package is an indivisible set of files and classes that a user will
- * include in their code. Name conflicts must be avoided to allow successful execution.
- *
- * This function also plays the all-important role of calling {@link phpDocumentor_IntermediateParser::addElementToPage()} in
- * order to add processed elements to their pages for Conversion.
- * @param phpDocumentor_IntermediateParser &$render
- */
- function setupPages(&$render)
- {
- global $_phpDocumentor_setting;
- phpDocumentor_out("\nProcessing Procedural Page Element Name Conflicts\n\n");
- flush();
- $this->setupPagePackages();
- $this->setupConflicts($render);
-// phpDocumentor_out("\nProcessing Procedural Pages\n\n");
- foreach($this->pathpages as $path => $name)
- {
-// phpDocumentor_out("Processing $path\n");
- $a = $this->pagepackages[$path];
- $b = &$this->pages[$name][$path];
- $render->addPage($b, $path);
- $render->addUses($b, $path);
- if (isset($this->includesbyfile[$path]))
- foreach($this->includesbyfile[$path] as $include)
- {
- $include->docblock->package = $a[0];
- $include->docblock->subpackage = $a[1];
- $render->addElementToPage($include,$path);
- }
-
- if (isset($this->functionsbyfile[$path]))
- foreach($this->functionsbyfile[$path] as $function)
- {
- $function->docblock->package = $a[0];
- $function->docblock->subpackage = $a[1];
- $render->addElementToPage($function,$path);
- $render->addUses($function,$path);
- }
-
- if (isset($this->definesbyfile[$path]))
- foreach($this->definesbyfile[$path] as $define)
- {
- $define->docblock->package = $a[0];
- $define->docblock->subpackage = $a[1];
- $render->addElementToPage($define,$path);
- $render->addUses($define,$path);
- }
-
- if (isset($this->globalsbyfile[$path]))
- foreach($this->globalsbyfile[$path] as $global)
- {
- $global->docblock->package = $a[0];
- $global->docblock->subpackage = $a[1];
- $render->addElementToPage($global,$path);
- $render->addUses($global,$path);
- }
- }
- }
-
- function setParseBase($pbase)
- {
- $this->_parsedbase = $pbase;
- }
-
- /**
- * @return false|parserPage returns matched parserPage if found
- */
- function pathMatchesParsedFile($path, $infile)
- {
- $test = $this->getRealPath($path, $infile);
- if (is_string($test))
- {
- if (isset($this->pathpages[$test]))
- return $this->pages[$this->pathpages[$test]][$test];
- if (PHPDOCUMENTOR_WINDOWS) $test = str_replace('/','\\',$test);
- if (isset($this->pathpages[$test]))
- {
- $a = $this->pages[$this->pathpages[$test]][$test];
- if (is_array($a->packageOutput) && !in_array($a->package, $a->packageOutput))
- return false;
- return $this->pages[$this->pathpages[$test]][$test];
- }
- } else
- {
- foreach($test as $file)
- {
- if (isset($this->pathpages[$file]))
- return $this->pages[$this->pathpages[$file]][$file];
- if (PHPDOCUMENTOR_WINDOWS) $file = str_replace('/','\\',$file);
- if (isset($this->pathpages[$file]))
- {
- $a = $this->pages[$this->pathpages[$file]][$file];
- if (is_array($a->packageOutput) && !in_array($a->package, $a->packageOutput))
- return false;
- return $this->pages[$this->pathpages[$file]][$file];
- }
- }
- }
- return false;
- }
-
- /**
- * @param string include() statement path to check
- * @param string full path of file the statement is in
- * @param string full path to base directory of parsing, used for .
- * @return array|string returns an array of possible file locations or
- * a string if there is an exact match
- */
- function getRealPath($path, $file)
- {
- $curdir = str_replace('\\','/',dirname($file));
- $path = str_replace('\\','/',$path);
- if (strpos($path,':') !== false)
- { // windows, and we have a drive letter
- return $path;
- } elseif(strpos($path,'/') === 0)
- {
- return $path;
- }
- // not an absolute path
- $path = explode('/',$path);
- if ($path[0] == '.')
- {
- $path[0] = dirname($file);
- return join($path,'/');
- } elseif ($path[0] == '..')
- {
- $dirfile = explode('/',dirname(str_replace('\\','/',$file)));
- array_pop($dirfile); // remove the current directory
- if (!count($dirfile)) return false; // we were at a top-level dir!
- $path[0] = join($dirfile,'/'); // replace .. with parent dirname
- return join($path,'/');
- } else
- {
- $path = join($path,'/');
- return array($curdir . PATH_DELIMITER . $path,
- str_replace('\\','/',PHPDOCUMENTOR_BASE) . PATH_DELIMITER . $path);
- }
- }
-}
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc b/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc
deleted file mode 100644
index 7e038021..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Publisher Copyright 2000-2003 Kellin |
-// | Email passionplay@hotmail.com |
-// | phpDocumentor Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * a class for handling the publishing of data
- *
- * @author Kellin <passionplay@hotmail.com>
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: Publisher.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- * @package phpDocumentor
- */
-/**
- * a class for handling the publishing of data
- *
- * @author Kellin <passionplay@hotmail.com>
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: Publisher.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- * @package phpDocumentor
- */
-class Publisher
-{
- /**#@+
- * @var array
- */
- /**
- * Array of references objects that have Subscribed to this publisher
- */
- var $subscriber = array();
-
- var $tokens = array();
-
- var $pushEvent = array();
- var $popEvent = array();
- /**#@-*/
-
-
- /**
- * Adds a subscriber to the {@link $subscriber} array().
- * if $event is '*', the publisher will use $object as the default event handler
- * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
- * @param class $object any class that has a HandleEvent() method like {@link phpDocumentor_IntermediateParser::HandleEvent()} or {@link Classes::HandleEvent()}
- */
- function subscribe($event, &$object)
- {
- $this->subscriber[$event] =& $object;
- }
-
- /**
- * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
- * @param mixed $data anything the subscribed event handler is expecting
- */
- function publishEvent($event,$data)
- {
-
- // see if there is a specific event handler
- if (!empty($this->subscriber[$event]))
- {
- $this->subscriber[$event]->HandleEvent($event,$data);
- }
- else if (isset($this->subscriber['*']) && is_object($this->subscriber['*'])) // check to see if a generic handler exists
- {
- $this->subscriber['*']->HandleEvent($event,$data);
- }
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php b/buildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php
deleted file mode 100644
index b53634de..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php
+++ /dev/null
@@ -1,785 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * This was all in phpdoc.inc, and now encapsulates the complexity
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @version $Revision: 1.6 $
- * @package phpDocumentor
- * @since 1.2
- */
-error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
-/** common settings */
-include_once("phpDocumentor/common.inc.php");
-
-include_once("phpDocumentor/Io.inc");
-include_once("phpDocumentor/Publisher.inc");
-include_once("phpDocumentor/Classes.inc");
-include_once("phpDocumentor/ProceduralPages.inc");
-include_once("phpDocumentor/IntermediateParser.inc");
-include_once("phpDocumentor/WordParser.inc");
-include_once("phpDocumentor/EventStack.inc");
-include_once("phpDocumentor/ParserData.inc");
-include_once("phpDocumentor/InlineTags.inc");
-include_once("phpDocumentor/DocBlockTags.inc");
-include_once("phpDocumentor/DescHTML.inc");
-include_once("phpDocumentor/ParserDocBlock.inc");
-include_once("phpDocumentor/ParserElements.inc");
-include_once("phpDocumentor/Parser.inc");
-include_once("phpDocumentor/phpDocumentorTWordParser.inc");
-include_once("phpDocumentor/phpDocumentorTParser.inc");
-include_once("phpDocumentor/HighlightParser.inc");
-include_once("phpDocumentor/TutorialHighlightParser.inc");
-include_once("phpDocumentor/ParserDescCleanup.inc");
-include_once("phpDocumentor/PackagePageElements.inc");
-include_once("phpDocumentor/XMLpackagePageParser.inc");
-include_once("phpDocumentor/LinkClasses.inc");
-include_once("phpDocumentor/Converter.inc");
-include_once("phpDocumentor/Errors.inc");
-if (isset($_GET))
-{
-/**
- * $interface is either 'web' or is not set at all
- * @global array $interface
- */
- if (isset($_GET['interface'])) $interface = $_GET['interface'];
-/**
- * $_phpDocumentor_setting is either the value from the web interface, or is set up by {@link Io::parseArgv()}
- * @global array $_phpDocumentor_setting
- */
- if (isset($_GET['setting'])) $_phpDocumentor_setting = $_GET['setting'];
-}
-
-/**
- * default package name, set using -dn --defaultpackagename
- * @global string $GLOBALS['phpDocumentor_DefaultPackageName']
- * @name $phpDocumentor_DefaultPackageName
- */
-$GLOBALS['phpDocumentor_DefaultPackageName'] = 'default';
-
-/**
- * default package name, set using -dn --defaultcategoryname
- * @global string $GLOBALS['phpDocumentor_DefaultCategoryName']
- * @name $phpDocumentor_DefaultCategoryName
- */
-$GLOBALS['phpDocumentor_DefaultCategoryName'] = 'default';
-
-/**
- * @package phpDocumentor
- */
-class phpDocumentor_setup
-{
- /**
- * The main parser
- * @var Parser|phpDocumentorTParser
- */
- var $parse;
- /**
- * Used to parse command-line options
- * @var Io
- */
- var $setup;
- /**
- * Used to organize output from the Parser before Conversion
- * @var phpDocumentor_IntermediateParser
- */
- var $render = false;
- /**
- * Packages to create documentation for
- * @var string
- */
- var $packages = false;
- /**
- * contents of --filename commandline
- * @tutorial phpDocumentor.howto.pkg#using.command-line.filename
- * @var string
- */
- var $files = '';
- /**
- * contents of --directory commandline
- * @tutorial phpDocumentor.howto.pkg#using.command-line.directory
- * @var string
- */
- var $dirs = '';
- /**
- * contents of --hidden commandline
- * @tutorial phpDocumentor.howto.pkg#using.command-line.hidden
- * @var boolean
- */
- var $hidden = false;
- /**
- * time that parsing was started, used for informative timing of output
- * @access private
- */
- var $parse_start_time;
- /**
- * contents of --ignore commandline
- * @tutorial phpDocumentor.howto.pkg#using.command-line.ignore
- * @var string
- */
- var $ignore_files = array();
- /**
- * Checks PHP version, makes sure it is 4.2.0+, and chooses the
- * phpDocumentorTParser if version is 4.3.0+
- * @uses parseIni()
- */
- function phpDocumentor_setup()
- {
- global $_phpDocumentor_cvsphpfile_exts;
- if (!function_exists('is_a'))
- {
- print "phpDocumentor requires PHP version 4.2.0 or greater to function";
- exit;
- }
-
- // set runtime to a large value since this can take quite a while
- // we can only set_time_limit when not in safe_mode bug #912064
- if (!ini_get('safe_mode'))
- {
- set_time_limit(0); // unlimited runtime
- } else
- {
- phpDocumentor_out("time_limit cannot be set since your in safe_mode, please edit time_limit in your php.ini to allow enough time for phpDocumentor to run");
- }
- ini_set("memory_limit","1024M");
-
- $phpver = phpversion();
- $phpdocver = PHPDOCUMENTOR_VER;
- if (isset($_GET['interface'])) {
- $phpver = "<b>$phpver</b>";
- $phpdocver = "<b>$phpdocver</b>";
- }
- phpDocumentor_out("PHP Version $phpver\n");
- phpDocumentor_out("phpDocumentor version $phpdocver\n\n");
-
- $this->parseIni();
- // create new classes
- $this->setup = new Io;
- if (tokenizer_ext)
- {
- phpDocumentor_out("using tokenizer Parser\n");
- $this->parse = new phpDocumentorTParser;
- } else
- {
- phpDocumentor_out("using default (slower) Parser - get PHP 4.3.0+
-and load the tokenizer extension for faster parsing (your version is ".phpversion()."\n");
- $this->parse = new Parser;
- }
- }
-
- /**
- * Get phpDocumentor settings from a user configuration file
- * @param string user configuration file
- */
- function readConfigFile($file)
- {
- global $_phpDocumentor_setting, $_phpDocumentor_options;
- // security
- $file = str_replace(array('..','.ini','\\'),array('','','/'),$file);
- if (is_file($file . '.ini'))
- {
- $_phpDocumentor_setting = phpDocumentor_parse_ini_file($file.'.ini');
- } else
- {
- if ('@DATA-DIR@' != '@'.'DATA-DIR@')
- {
- $configdir = str_replace('\\','/', '@DATA-DIR@/PhpDocumentor') . PATH_DELIMITER . 'user' . PATH_DELIMITER;
- } else {
- $configdir = str_replace('\\','/',$GLOBALS['_phpDocumentor_install_dir']) . PATH_DELIMITER . 'user' . PATH_DELIMITER;
- }
- if (isset($_phpDocumentor_options['userdir'])) $configdir = $_phpDocumentor_options['userdir'];
- if (substr($configdir,-1) != '/')
- {
- $configdir .= '/';
- }
- $_phpDocumentor_setting = phpDocumentor_parse_ini_file( $configdir . $file . '.ini');
- if (empty($_phpDocumentor_setting['defaultpackagename']))
- {
- $_phpDocumentor_setting['defaultpackagename'] = 'default';
- }
- }
- // don't want a loop condition!
- unset($_phpDocumentor_setting['useconfig']);
- $this->readCommandLineSettings();
- }
-
- /**
- * Get phpDocumentor settings from command-line or web interface
- */
- function readCommandLineSettings()
- {
- global $_phpDocumentor_setting,$interface,$_phpDocumentor_RIC_files;
- // subscribe $render class to $parse class events
- if (!isset($interface) && !isset($_GET['interface']) && !isset($_phpDocumentor_setting))
- {
- // Parse the argv settings
- $_phpDocumentor_setting = $this->setup->parseArgv();
- }
- if (isset($_phpDocumentor_setting['useconfig']) && !empty($_phpDocumentor_setting['useconfig'])) return $this->readConfigFile($_phpDocumentor_setting['useconfig']);
- if (!isset($_phpDocumentor_setting['junk'])) $_phpDocumentor_setting['junk'] = '';
- if (!isset($_phpDocumentor_setting['title'])) $_phpDocumentor_setting['title'] = 'Generated Documentation';
- $temp_title = $_phpDocumentor_setting['title'];
- $this->render = new phpDocumentor_IntermediateParser($temp_title);
- if (isset($_phpDocumentor_setting['help']) || $_phpDocumentor_setting['junk'] == "-h" || $_phpDocumentor_setting['junk'] == "--help")
- {
- echo $this->setup->displayHelpMsg();
- die();
- }
-
- if (isset($_phpDocumentor_setting['hidden'])) $this->hidden = true;
-
- // set to parse elements marked private with @access private
- if (isset($_phpDocumentor_setting['parseprivate']) && $_phpDocumentor_setting['parseprivate'] == 'on')
- {
- $this->render->setParsePrivate(true);
- }
-
- if (isset($_phpDocumentor_setting['ignoretags']))
- {
- $ignoretags = explode(',', $_phpDocumentor_setting['ignoretags']);
- $ignoretags = array_map('trim', $ignoretags);
- $tags = array();
- foreach($ignoretags as $tag)
- {
- if (!in_array($tag,array('@global', '@access', '@package', '@ignore', '@name', '@param', '@return', '@staticvar', '@var')))
- $tags[] = $tag;
- }
- $_phpDocumentor_setting['ignoretags'] = $tags;
- }
-
- if (isset($_phpDocumentor_setting['readmeinstallchangelog']))
- {
- $_phpDocumentor_setting['readmeinstallchangelog'] = explode(',',str_replace(' ','',$_phpDocumentor_setting['readmeinstallchangelog']));
- $rics = array();
- foreach($_phpDocumentor_setting['readmeinstallchangelog'] as $ric)
- {
- $rics[] = strtoupper(trim($ric));
- }
- $_phpDocumentor_RIC_files = $rics;
- }
-
- if (isset($_phpDocumentor_setting['javadocdesc']) && $_phpDocumentor_setting['javadocdesc'] == 'on')
- {
- $this->parse->eventHandlers[PARSER_EVENT_DOCBLOCK] = 'JavaDochandleDocblock';
- }
- if (tokenizer_ext)
- {
- if (isset($_phpDocumentor_setting['sourcecode']) && $_phpDocumentor_setting['sourcecode'] == 'on')
- {
- $_phpDocumentor_setting['sourcecode'] = true;
- } else
- {
- $_phpDocumentor_setting['sourcecode'] = false;
- }
- } else
- {
- if (isset($_phpDocumentor_setting['sourcecode']) && $_phpDocumentor_setting['sourcecode'] == 'on')
- {
- addWarning(PDERROR_SOURCECODE_IGNORED);
- }
- $_phpDocumentor_setting['sourcecode'] = false;
- }
- if (isset($_phpDocumentor_setting['converterparams']))
- {
- $_phpDocumentor_setting['converterparams'] = explode($_phpDocumentor_setting['converterparams']);
- foreach($_phpDocumentor_setting['converterparams'] as $i => $p)
- {
- $_phpDocumentor_setting['converterparams'][$i] = trim($p);
- }
- }
- if (isset($_phpDocumentor_setting['customtags']) && !empty($_phpDocumentor_setting['customtags']))
- {
- $c = explode(',',$_phpDocumentor_setting['customtags']);
- for($i=0;$i<count($c); $i++)
- {
- $GLOBALS['_phpDocumentor_tags_allowed'][] = trim($c[$i]);
- }
- }
- if (isset($_phpDocumentor_setting['pear']))
- {
- if ($_phpDocumentor_setting['pear'] === 'off') $_phpDocumentor_setting['pear'] = false;
- if ($_phpDocumentor_setting['pear'] === 'on') $_phpDocumentor_setting['pear'] = true;
- }
- if (!isset($_phpDocumentor_setting['pear'])) $_phpDocumentor_setting['pear'] = false;
- // set to change the default package name from "default" to whatever you want
- if (isset($_phpDocumentor_setting['defaultpackagename']))
- {
- $GLOBALS['phpDocumentor_DefaultPackageName'] = trim($_phpDocumentor_setting['defaultpackagename']);
- }
- // set to change the default category name from "default" to whatever you want
- if (isset($_phpDocumentor_setting['defaultcategoryname']))
- {
- $GLOBALS['phpDocumentor_DefaultCategoryName'] = trim($_phpDocumentor_setting['defaultcategoryname']);
- }
-
- // set the mode (quiet or verbose)
- if ( isset($_phpDocumentor_setting['quiet']) || strcasecmp($_phpDocumentor_setting['junk'], "-q") == 0 || strcasecmp($_phpDocumentor_setting['junk'], "--quiet") == 0)
- {
- if (isset($_phpDocumentor_setting['quiet']) && $_phpDocumentor_setting['quiet'] != 'on');
- else
- $this->render->setQuietMode(true);
- }
-
- // Setup the different classes
- if (isset($_phpDocumentor_setting['templatebase']))
- {
- $this->render->setTemplateBase($_phpDocumentor_setting['templatebase']);
- }
- if (isset($_phpDocumentor_setting['target']) && !empty($_phpDocumentor_setting['target']))
- {
- $this->render->setTargetDir($_phpDocumentor_setting['target']);
- }
- else
- {
- echo "a target directory must be specified\n try phpdoc -h\n";
- die();
- }
- if (!empty($_phpDocumentor_setting['packageoutput']))
- {
- $this->packages = explode(",",$_phpDocumentor_setting['packageoutput']);
- foreach($this->packages as $p => $v)
- {
- $this->packages[$p] = trim($v);
- }
- }
- if (!empty($_phpDocumentor_setting['filename']))
- $this->files = $_phpDocumentor_setting['filename'];
- if (!empty($_phpDocumentor_setting['directory']))
- $this->dirs = $_phpDocumentor_setting['directory'];
- }
-
- function checkIgnoreTag($tagname, $inline = false)
- {
- global $_phpDocumentor_setting;
- $tagname = '@'.$tagname;
- if (!isset($_phpDocumentor_setting['ignoretags'])) return false;
- if ($inline) $tagname = '{'.$tagname.'}';
- return in_array($tagname, $_phpDocumentor_setting['ignoretags']);
- }
-
- function setJavadocDesc()
- {
- $this->parse->eventHandlers[PARSER_EVENT_DOCBLOCK] = 'JavaDochandleDocblock';
- }
-
- function setParsePrivate()
- {
- $this->render->setParserPrivate(true);
- }
-
- function setQuietMode()
- {
- $this->render->setQuietMode(true);
- }
-
- function setTargetDir($target)
- {
- $this->render->setTargetDir($target);
- }
-
- function setTemplateBase($dir)
- {
- $this->render->setTemplateBase($dir);
- }
-
- function setPackageOutput($po)
- {
- $this->packages = explode(",",$po);
- }
-
- function setTitle($ti)
- {
- $this->render = new phpDocumentor_IntermediateParser($ti);
- }
-
- function setFilesToParse($files)
- {
- $this->files = $files;
- }
-
- function setDirectoriesToParse($dirs)
- {
- $this->dirs = $dirs;
- }
-
- function parseHiddenFiles()
- {
- $this->hidden = true;
- }
-
- function setIgnore($ig)
- {
- if (strstr($ig,","))
- {
- $this->ignore_files = explode(",",$ig);
- } else {
- if (!empty($ig))
- $this->ignore_files = array($ig);
- }
- $this->ignore_files = array_map('trim', $this->ignore_files);
- }
-
- function createDocs($title = false)
- {
- $this->parse_start_time = time();
- global $_phpDocumentor_setting;
- if (!$this->render)
- {
- $this->render = new phpDocumentor_IntermediateParser($title);
- }
- // setup ignore list
- $this->ignore_files =array();
- if(isset($_phpDocumentor_setting['ignore']))
- {
- $this->setIgnore($_phpDocumentor_setting['ignore']);
- }
- $this->parse->subscribe("*",$this->render);
- // parse the directory
- if (!empty($this->files))
- {
- $files = explode(",",$this->files);
- foreach($files as $file)
- {
- $file = trim($file);
- $test = $this->setup->getAllFiles($file);
- if ($test)
- {
- foreach($test as $file)
- {
- $file = trim($file);
- $dir = realpath(dirname($file));
- $dir = strtr($dir, "\\", "/");
- $dir = str_replace('//','/',$dir);
- // strip trailing directory seperator
- if (substr($dir,-1) == "/" || substr($dir,-1) == "\\")
- {
- $dir = substr($dir,0,-1);
- }
- $file = strtr(realpath($file), "\\", "/");
- $file = str_replace('//','/',$file);
-
- if (!$this->setup->checkIgnore(basename($file),dirname($file),$this->ignore_files))
- {
- $filelist[] = str_replace('\\','/',$file);
- } else {
- phpDocumentor_out("File $file Ignored\n");
- flush();
- }
- }
- } else
- {
- $dir = realpath(dirname(realpath($file)));
- $dir = strtr($dir, "\\", "/");
- $dir = str_replace('//','/',$dir);
- // strip trailing directory seperator
- if (substr($dir,-1) == "/" || substr($dir,-1) == "\\")
- {
- $dir = substr($dir,0,-1);
- }
- $base = count(explode("/",$dir));
- $file = strtr(realpath($file), "\\", "/");
- $file = str_replace('//','/',$file);
- flush();
-
- if (!$this->setup->checkIgnore(basename($file),dirname($file),$this->ignore_files))
- {
- $filelist[] = str_replace('\\','/',$file);
- } else {
- phpDocumentor_out("File $file Ignored\n");
- flush();
- }
- }
- }
- }
- if (!empty($this->dirs))
- {
- $dirs = explode(",",$this->dirs);
- foreach($dirs as $dir)
- {
- $dir = trim(realpath($dir));
- $dir = strtr($dir, "\\", "/");
- $dir = str_replace('//','/',$dir);
- // strip trailing directory seperator
- if (substr($dir,-1) == "/" || substr($dir,-1) == "\\")
- {
- $dir = substr($dir,0,-1);
- }
- $files = $this->setup->dirList($dir,$this->hidden);
- if (is_array($files))
- {
- foreach($files as $file)
- {
- // Make sure the file isn't a hidden file
- $file = strtr($file, "\\", "/");
- if (substr(basename($file),0,1) != ".")
- {
- if (!$this->setup->checkIgnore(basename($file),str_replace('\\','/',dirname($file)),$this->ignore_files))
- {
- $filelist[] = str_replace('\\','/',$file);
- } else {
- phpDocumentor_out("File $file Ignored\n");
- flush();
- }
- }
- }
- }
- }
- }
- if (isset($filelist))
- {
- if (PHPDOCUMENTOR_WINDOWS)
- {
- // case insensitive array_unique
- usort($filelist,'strnatcasecmp');
- reset($filelist);
-
- $newarray = array();
- $i = 0;
-
- $element = current($filelist);
- for ($n=0;$n<sizeof($filelist);$n++)
- {
- if (strtolower(next($filelist)) != strtolower($element))
- {
- $newarray[$i] = $element;
- $element = current($filelist);
- $i++;
- }
- }
- $filelist = $newarray;
- } else $filelist = array_unique($filelist);
-
- $base = count(explode("/",$source_base = $this->setup->getBase($filelist)));
- define("PHPDOCUMENTOR_BASE",$source_base);
- list($filelist,$ric) = $this->setup->getReadmeInstallChangelog($source_base, $filelist);
- phpDocumentor_out("\n\nGrabbing README/INSTALL/CHANGELOG\n");
- flush();
- foreach($ric as $file)
- {
- phpDocumentor_out(basename($file).'...');
- flush();
- $fp = fopen($file,'r');
- $contents = fread($fp,filesize($file));
- $this->render->HandleEvent(PHPDOCUMENTOR_EVENT_README_INSTALL_CHANGELOG, array(basename($file),$contents));
- fclose($fp);
- }
- phpDocumentor_out("\ndone\n");
- flush();
- list($filelist,$tutorials) = $this->setup->getTutorials($filelist);
- phpDocumentor_out("\n\nTutorial/Extended Documentation Parsing Stage\n\n");
- flush();
- if (count($tutorials))
- {
- $tuteparser = new XMLPackagePageParser;
- $tuteparser->subscribe('*',$this->render);
- foreach($tutorials as $tutorial)
- {
- switch($tutorial['tutetype'])
- {
- case 'pkg' :
- case 'cls' :
- case 'proc' :
- switch($tutorial['tutetype'])
- {
- case 'pkg' :
- $ptext = 'Package-level Docs ';
- if (!empty($tutorial['subpackage']))
- $ptext = 'Sub-Package Docs ';
- break;
- case 'cls' :
- $ptext = 'Class-level Docs ';
- break;
- case 'proc' :
- $ptext = 'Procedural-level Docs ';
- break;
- }
- $fp = @fopen($tutorial['path'],"r");
- if ($fp)
- {
- $ret = fread($fp,filesize($tutorial['path']));
- // fix 1151650
- if (stristr($ret, "utf-8") !== "")
- {
- $ret = utf8_decode($ret);
- }
- fclose($fp);
- unset($fp);
- phpDocumentor_out('Parsing '.$ptext.$tutorial['path'].'...');
- flush();
- $tuteparser->parse($ret,$tutorial);
- phpDocumentor_out("done\n");
- flush();
- } else
- {
- phpDocumentor_out('Error '.$ptext.$tutorial['path'].' doesn\'t exist'."\n");
- flush();
- }
- default :
- break;
- }
- }
- }
- phpDocumentor_out("done\n");
- flush();
- phpDocumentor_out("\n\nGeneral Parsing Stage\n\n");
- flush();
- foreach($filelist as $file)
- {
- phpDocumentor_out("Reading file $file");
- flush();
- $this->parse->parse($a = $this->setup->readPhpFile($file, $this->render->quietMode),$file,$base,$this->packages);
-
- }
- $b = (time() - $this->parse_start_time);
- phpDocumentor_out("done\n");
- flush();
- // render output
- phpDocumentor_out("\nConverting From Abstract Parsed Data\n");
- flush();
- $this->render->output();
- $a = (time() - $this->parse_start_time);
- $c = ($a - $b);
- phpDocumentor_out("\nParsing time: $b seconds\n");
- phpDocumentor_out("\nConversion time: $c seconds\n");
- phpDocumentor_out("\nTotal Documentation Time: $a seconds\n");
- phpDocumentor_out("done\n");
- flush();
- } else
- {
- print "ERROR: nothing parsed";
- exit;
- }
- }
- /**
- * Parse configuration file phpDocumentor.ini
- */
- function parseIni()
- {
- phpDocumentor_out("Parsing configuration file phpDocumentor.ini...");
- flush();
- if ('@DATA-DIR@' != '@'.'DATA-DIR@')
- {
- $options = phpDocumentor_parse_ini_file(str_replace('\\','/', '@DATA-DIR@/PhpDocumentor') . PATH_DELIMITER . 'phpDocumentor.ini',true);
- } else {
- $options = phpDocumentor_parse_ini_file(str_replace('\\','/',$GLOBALS['_phpDocumentor_install_dir']) . PATH_DELIMITER . 'phpDocumentor.ini',true);
- }
-
- if (!$options)
- {
- print "ERROR: cannot open phpDocumentor.ini in directory " . $GLOBALS['_phpDocumentor_install_dir']."\n";
- print "-Is phpdoc in either the path or include_path in your php.ini file?";
- exit;
- }
-
- foreach($options as $var => $values)
- {
- if ($var != 'DEBUG')
- {
-// phpDocumentor_out("\n$var");
- if ($var != '_phpDocumentor_setting' && $var != '_phpDocumentor_options' && $var != '_phpDocumentor_install_dir' ) $values = array_values($values);
-// fancy_debug("\n$var",$values);
- $GLOBALS[$var] = $values;
- }
- }
- phpDocumentor_out("\ndone\n");
- flush();
- /** Debug Constant */
- define("PHPDOCUMENTOR_DEBUG",$options['DEBUG']['PHPDOCUMENTOR_DEBUG']);
- define("PHPDOCUMENTOR_KILL_WHITESPACE",$options['DEBUG']['PHPDOCUMENTOR_KILL_WHITESPACE']);
- $GLOBALS['_phpDocumentor_cvsphpfile_exts'] = $GLOBALS['_phpDocumentor_phpfile_exts'];
- foreach($GLOBALS['_phpDocumentor_cvsphpfile_exts'] as $key => $val)
- {
- $GLOBALS['_phpDocumentor_cvsphpfile_exts'][$key] = "$val,v";
- }
- // none of this stuff is used anymore
- if (isset($GLOBALS['_phpDocumentor_html_allowed']))
- {
- $___htmltemp = array_flip($GLOBALS['_phpDocumentor_html_allowed']);
- $___html1 = array();
- foreach($___htmltemp as $tag => $trans)
- {
- $___html1['<'.$tag.'>'] = htmlentities('<'.$tag.'>');
- $___html1['</'.$tag.'>'] = htmlentities('</'.$tag.'>');
- }
- $GLOBALS['phpDocumentor___html'] = array_flip($___html1);
- }
- }
-
- function setupConverters($output = false)
- {
- global $_phpDocumentor_setting;
- if ($output)
- {
- $_phpDocumentor_setting['output'] = $output;
- }
- if (isset($_phpDocumentor_setting['output']) && !empty($_phpDocumentor_setting['output']))
- {
- $c = explode(',',$_phpDocumentor_setting['output']);
- for($i=0; $i< count($c); $i++)
- {
- $c[$i] = explode(':',$c[$i]);
- $a = $c[$i][0];
- $b = false;
- $d = 'default/';
- if (count($c[$i]) > 1)
- {
- $a = $c[$i][0];
- $b = $c[$i][1];
- if (isset($c[$i][2]))
- {
- $d = $c[$i][2];
- $d = str_replace("\\","/",$d);
- if (substr($d,-1) != "/")
- {
- $d .= "/";
- }
- }
- else $d = 'default/';
- }
- if (strtoupper(trim($a)) == 'HTML' && (trim($b) == 'default'))
- {
- phpDocumentor_out("WARNING: HTMLdefaultConverter is deprecated, using HTMLframesConverter.\n");
- phpDocumentor_out("WARNING: template output is identical, HTMLframes is more flexible.\n");
- phpDocumentor_out("WARNING: please adjust your usage\n");
- flush();
- $b = 'frames'; // change default to frames.
- }
- $this->render->addConverter(strtoupper(trim($a)),trim($b),trim($d));
- }
- } else
- {
- $this->render->addConverter('HTML','frames','default/');
- }
- if (empty($this->render->converters)) addErrorDie(PDERROR_NO_CONVERTERS);
- }
-}
-
-/**
- * Print parse information if quiet setting is off
- */
-function phpDocumentor_out($string)
-{
- global $_phpDocumentor_setting;
- if (!isset($_phpDocumentor_setting['quiet']) || !$_phpDocumentor_setting['quiet'])
- {
- print $string;
- }
-
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/BUGS b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/BUGS
deleted file mode 100644
index fcbe48af..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/BUGS
+++ /dev/null
@@ -1,7 +0,0 @@
-Smarty is supported only in PHP 4.0.6 or later.
-
-Smarty versions previous to 2.0 require the PEAR libraries. Be sure to include
-the path to the PEAR libraries in your php include_path. Config_file.class.php
-uses the PEAR library for its error handling routines. PEAR comes with the PHP
-distribution. Unix users check /usr/local/lib/php, windows users check
-C:/php/pear.
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/COPYING.lib b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/COPYING.lib
deleted file mode 100644
index 3b204400..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/COPYING.lib
+++ /dev/null
@@ -1,458 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/ChangeLog b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/ChangeLog
deleted file mode 100644
index 6dcda589..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/ChangeLog
+++ /dev/null
@@ -1,5421 +0,0 @@
-2003-11-18 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- move Smarty::quote_replace() to Smarty_Compiler::_quote_replace()
-
- * libs/Smarty.class.php:
- removed extract-calls from _include()- and _eval()-wrappers
- variables passed with {include_php} have to accessed as members of $params
- now
-
-2003-11-17 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml:
- fixed typo
-
-2003-11-13 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Config_File.class.php:
- fix occasional notice
-
-2003-11-13 andreas halter <phpcvs@andreashalter.ch>
-
- * docs/de/designers.sgml:
- - added cat modifier, thanks messju :-)
-
-2003-11-13 Monte Ohrt <monte@ispi.net>
-
- * (Smarty_2_6_0-RC3)
- NEWS
- libs/Config_File.class.php
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- commit RC3 tags
-
-2003-11-13 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- fix handling of $var.key inside []
-
- * libs/Smarty.class.php:
- fix unnecessary loading of core.load_resource_plugin.php
-
- * (Smarty_2_6_0-RC3)
- docs/fr/designers.sgml:
- fixed example of html_table
-
-2003-11-11 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/core/core.process_cached_inserts.php:
- fix handling of assign inside {insert}-tags
-
-2003-11-06 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/core/core.read_cache_file.php:
- added $exp_time-parameter
-
- * docs/programmers.sgml:
- added $exp_time to cache_handler_func-example
-
- * libs/Smarty.class.php
- libs/core/core.write_cache_file.php:
- added $exp_time-parameter of clear_cache() and clear_all_cache() to
- cache_handler_func.
-
-2003-11-05 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Config_File.class.php:
- fix handling if [...] inside triple-quotes in config-files
-
-2003-11-04 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- fixed little bug in _parse_resource_name() (jlgunter, messju)
-
-2003-11-03 andreas halter <phpcvs@andreashalter.ch>
-
- * docs/designers.sgml
- docs/de/designers.sgml
- docs/fr/designers.sgml:
- - changed Smarty.php.class occurences to Smarty.class.php
-
-2003-10-29 boots <jayboots@yahoo.com>
-
- * docs/appendixes.sgml
- docs/designers.sgml
- docs/manual.sgml
- docs/programmers.sgml
- docs/de/appendixes.sgml
- docs/de/designers.sgml
- docs/de/programmers.sgml
- docs/fr/appendixes.sgml
- docs/fr/designers.sgml
- docs/fr/getting-started.sgml
- docs/fr/manual.sgml
- docs/fr/preface.sgml
- docs/fr/programmers.sgml:
- Fixes to documentation syntax so that all content can be processed used
- xsltproc docbook-xsl tools. In particular, fixes unescaped entities,
- broken tags, unquoted attributes.
-
-2003-10-27 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- fix handling of simple-math-operators inside modifiers
-
-2003-10-25 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- removed unused property _output_type
- removed unused param $tag_attrs of _parse_var_props()
- cleaned up alignment of class-properties
-
-2003-10-23 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- removed notice in php-tag handling in Smarty_Compiler::_compile_file()
-
- * libs/Smarty_Compiler.class.php:
- removed two occasional E_NOTICES from
- Smarty_Compiler::_compile_include_php_tag()
-
- * NEWS
- libs/core/core.create_dir_structure.php:
- fix handling of trailing-slashes in open_basedir in
- smarty_core_create_dir_structure()
-
-2003-10-20 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- elements inside `` are bracketed now inside the compiled-tpl. this
- fixes some issues with simple-math inside backticks.
-
-2003-10-16 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml:
- update overlib docs, no working examples
-
-2003-10-12 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/core/core.is_secure.php:
- move check for template_dir in secure_dir-array into core.is_secure.php
-
- this makes template_exists() work correctly with security=true even if
- template_dir is not inside the secure_dir-array
-
-2003-10-11 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/plugins/shared.make_timestamp.php:
- tightened check for YYYYMMDDHHMMSS-format. thanks konstantin for
- pointing this out.
-
- removed a few tabs.
-
- * libs/Smarty_Compiler.class.php:
- fix precedence of simple-math-operators before modifiers.
- thanks dominik!
-
- * libs/Config_File.class.php
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.assemble_plugin_filepath.php
- libs/core/core.assign_smarty_interface.php
- libs/core/core.create_dir_structure.php
- libs/core/core.display_debug_console.php
- libs/core/core.get_include_path.php
- libs/core/core.get_microtime.php
- libs/core/core.get_php_resource.php
- libs/core/core.is_secure.php
- libs/core/core.is_trusted.php
- libs/core/core.load_plugins.php
- libs/core/core.load_resource_plugin.php
- libs/core/core.process_cached_inserts.php
- libs/core/core.process_compiled_include.php
- libs/core/core.read_cache_file.php
- libs/core/core.rm_auto.php
- libs/core/core.rmdir.php
- libs/core/core.run_insert_handler.php
- libs/core/core.smarty_include_php.php
- libs/core/core.write_compiled_include.php
- libs/core/core.write_compiled_resource.php
- libs/core/core.write_file.php:
- removed tabs from the main and the core/*.php files
-
-2003-10-08 Monte Ohrt <monte@ispi.net>
-
- * (Smarty_2_6_0-RC2)
- NEWS
- libs/Config_File.class.php
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- update version numbers to RC2
-
-2003-09-18 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml
- docs/de/designers.sgml:
- fixed description of cycle's advance-attribute
-
-2003-09-16 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- apply modifiers only once to section-loop and foreach-from attributes
-
-2003-09-15 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.write_cache_paths_file.php:
- backed out _smarty_cached_paths-file-handling
-
- * libs/Smarty.class.php
- libs/core/core.rm_auto.php:
- fixed clear_compiled_tpl with explicit $tpl_file given
- fixed return value of smarty_core_rm_auto() + Smarty::_unlink()
-
- * libs/Smarty.class.php:
- little fix in _get_auto_filename()
-
-2003-09-14 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/core/core.assemble_auto_filename.php:
- removed auto-filenames from path-cache. merged assemble_auto_filename
- back into Smarty::_get_auto_filename()
-
-2003-09-12 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- fixed quoting of modifier parameters
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.get_php_resource.php
- libs/core/core.load_plugins.php
- libs/core/core.load_resource_plugin.php:
- remove Smarty::_plugin_implementation_exists() - use php's native
- is_callable()
-
-2003-09-11 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- silenced two notices acces HTTP_SERVER_VARS
-
-2003-09-10 andreas halter <phpcvs@andreashalter.ch>
-
- * docs/de/designers.sgml
- docs/de/getting-started.sgml
- docs/de/programmers.sgml:
- - minor fixes (2 rep), slight wording changes
- - jade transform problem fixed
-
-2003-09-08 andreas halter <phpcvs@andreashalter.ch>
-
- * docs/de/designers.sgml
- docs/de/getting-started.sgml
- docs/de/manual.sgml
- docs/de/preface.sgml
- docs/de/programmers.sgml:
- all updated for 2.6.0 release, translated everything from 2_5_0 branch to
- 20030908
-
-2003-09-04 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- proper checking for files in _fetch_resource_info()
-
-2003-09-02 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- ignore {strip}/{/strip) inside {strip}-blocks
-
- * libs/plugins/function.mailto.php:
- fixed 2 notices in smarty_function_mailto()
-
-2003-09-01 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- re-include cache_paths on multiple calls to fetch() to avoid
- inconsistencies
- at multiple calls to fetch() in one script
-
- * libs/Smarty_Compiler.class.php:
- fixed handling of \r in {strip}
- renamed $_trailing_lf to $_additional_newline
-
- * libs/Smarty_Compiler.class.php:
- the weekly fix for {strip} :)
-
- * docs/designers.sgml:
- fixed example for simple math.
-
-2003-08-29 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/core/core.assign_smarty_interface.php
- libs/core/core.display_debug_console.php
- libs/plugins/function.assign.php
- libs/plugins/function.html_options.php
- libs/plugins/function.html_table.php:
- fixed PHPDocumentor-comments (thanks Konstantin)
-
- * libs/core/core.rmdir.php:
- made rmdir a bit more optimistic. especially it now removes
- directories correctly that where created accidently by "safe_mode=On
- && $use_sub_dirs=true"
-
-2003-08-27 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- fixed removal of leading/trailing newlines in {strip}-blocks
-
-2003-08-25 Messju Mohr <messju@lammfellpuschen.de>
-
- * INSTALL:
- added note emphasizing the introduction of "libs/" with 2.5.0
-
- * NEWS
- libs/plugins/modifier.escape.php:
- fixed proper escaping of " and ' with escape:javascript
-
-2003-08-22 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/core/core.assemble_plugin_filepath.php:
- fixed bug in traversal of $smarty->plugins_dir-array in
- smarty_core_assemble_plugin_filepath(). the first matching plugin in
- the path should be used, not the last one.
-
- * libs/core/core.read_cache_file.php:
- discard $_cache_info when the cache should be regenerated
-
-2003-08-20 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php
- libs/plugins/block.strip.php:
- reverted {strip} from a block-plugin back into the compiler
-
- * docs/programmers.sgml:
- fixed examples for register_function() and register_block()
-
- * libs/Smarty.class.php:
- made template_exists() quiet when the template does not exist (thanks
- to konstatin for pointing this out)
-
-2003-08-18 Monte Ohrt <monte@ispi.net>
-
- * docs/getting-started.sgml:
- fix example title
-
- * docs/README
- docs/getting-started.sgml:
- change installation wording confusion
-
-2003-08-18 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/core/core.read_cache_file.php:
- fixed unnecessary load of source in template_exists() and the
- compile-check of smarty_core_read_cache_file()
-
- * libs/Smarty_Compiler.class.php:
- allow section-, array- and object-dereference in $smarty-references
-
-2003-08-15 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml:
- added parameter-descriptions for count_characters (thanks Konstantin
- A. Pelepelin)
-
- fixed docs for {html_checkboxes}
-
-2003-08-14 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/core/core.read_cache_file.php:
- fixed timestamp-check of config-files in smarty_core_read_cache_file()
-
- * libs/Smarty.class.php:
- fixed typecasting for arrays in _parse_resource_name()
-
- * NEWS
- libs/plugins/function.config_load.php:
- fixes in config_load:
- - handling of section-attribute
- - reusing the same config-file multiple times
- - serialization of config-data for php<4.2.0 (no var_export)
-
- many thanks to atu for pointing this out and for testing
-
-2003-08-13 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/core/core.smarty_include_php.php:
- fixed problem with vars as attributes in {include_php}
-
-2003-08-13 Monte Ohrt <monte@ispi.net>
-
- * docs/README:
- commit README file for documentation compiling
-
-2003-08-13 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/debug.tpl
- libs/plugins/modifier.debug_print_var.php:
- removed '\r' from debug_print_vars' output
- properly escape vars in javascript-version of debug.tpl
-
-2003-08-11 Monte Ohrt <monte@ispi.net>
-
- * (Smarty_2_6_0_RC1)
- NEWS
- docs/designers.sgml
- docs/html.dsl
- docs/php.dsl
- libs/Config_File.class.php
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- get ready for 2.6.0-RC1 release
-
-2003-08-10 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php:
- fixed status-header for cache_modified_check under cgi-sapi
-
-2003-08-09 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/core/core.is_secure.php
- libs/core/core.is_trusted.php:
- synced secure_dir-checking with trusted_dir-checking
-
- * libs/core/core.is_secure.php:
- tightenend path checking in smarty_core_is_secure()
-
-2003-08-08 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- fix: proper nesting of $smarty->_cache_including flag in cascaded
- cached/not-cached/fetched/inserted/foo-templates
-
- * libs/debug.tpl:
- better escaping for $_debug_tpls[templates].filenames
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- removed redundant $smarty from Smarty::_smarty_include()
-
- * libs/debug.tpl:
- proper escaping of filenames in debug-console (thanks to prossel).
-
-2003-08-07 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/programmers.sgml:
- added docs for block-methods of registered objects
-
- * docs/programmers.sgml:
- fixed typo in example for registered objects
-
- * docs/designers.sgml:
- fixed exampls of html_image and html_checkboxes
-
- * libs/plugins/function.debug.php:
- fixed {debug} and removed tabs in function.debug.php
-
- * docs/programmers.sgml:
- fixed example for register_object
-
- * docs/designers.sgml
- docs/programmers.sgml:
- updated docs for capture, html_table, html_image and register_object
-
-2003-08-07 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- docs/programmers.sgml:
- add math and default_resource_type to docs
-
- * docs/getting-started.sgml:
- add core to example, add tech note
-
-2003-08-07 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/manual.sgml
- docs/fr/manual.sgml:
- upd copyright in the docs
-
-2003-08-07 Monte Ohrt <monte@ispi.net>
-
- * docs/getting-started.sgml:
- added core directory to install instructions
-
-2003-08-07 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml
- docs/programmers.sgml:
- added docs for php-functions as modifiers
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- better caching of attributes for $cacheable=false-plugins
-
- * docs/programmers.sgml:
- added section "caching.cacheable" to the docs, explaining the usage of
- the $cacheable-flag of the register_(block|compiler|function)-functions
-
- * libs/Smarty_Compiler.class.php:
- fixed output of custom-functions with cached attributes
-
- * docs/programmers.sgml:
- docs update on callbacks to the register_*-functions
-
-2003-08-06 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.process_compiled_include.php:
- added optional parameter $cache_attrs to register_function() and
- register_block(). $cache_attrs is an array containing attribute- names
- that should be cached on calls to functions that have $cacheable set
- to false.
-
- * libs/Smarty.class.php:
- fixed bug in _run_mod_handler
-
- * libs/Smarty_Compiler.class.php:
- fixed bug with autoload-handling of modifiers. thanks ándre.
-
-2003-08-05 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Config_File.class.php
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- updated copyright notice
-
- * libs/Smarty.class.php
- libs/core/core.load_plugins.php:
- fixed bug that occurred when using the same not-cacheable plugin in
- multiple includes
-
- * docs/programmers.sgml:
- docs-update for plugins.writing
-
-2003-08-04 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml
- docs/programmers.sgml:
- updated docs for register_block_function(), block-functions,
- $request_use_auto_globals and html_checkboxes
-
-2003-07-31 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- enabled registration of class-methods as callbacks for the
- register_*-functions
-
- use: array('classname', 'method_name')) as callback
-
-2003-07-29 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- modifiers are resolved at compile-time now. _run_mod_handler() is
- still used for modifiers with map_array=true (== no preceeding '@')
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.smarty_include.php:
- moved _smarty_include() back into Smarty.class.php
-
- * libs/Smarty.class.php
- libs/core/core.load_plugins.php:
- prevent unnecessary calls to _read_file() in _is_compiled()
- converted method-call to internal function-call in
- smarty_core_load_plugins()
-
-2003-07-28 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- quote smarty-header properly to prevent resource-names from escaping from
- the comment
-
-2003-07-25 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/core/core.create_dir_structure.php:
- weakend race-condition and removed bogus error-message caused by that
- in smarty_core_create_dir_structure().
-
-2003-07-23 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/core/core.display_debug_console.php
- libs/core/core.fetch_resource_info.php
- libs/core/core.get_php_resource.php
- libs/core/core.parse_resource_name.php
- libs/core/core.process_cached_inserts.php
- libs/core/core.read_cache_file.php
- libs/core/core.run_insert_handler.php
- libs/core/core.smarty_include.php
- libs/core/core.smarty_include_php.php
- libs/plugins/function.eval.php:
- moved _fetch_resource_info and _parse_resource_name back into
- Smarty.class.php
- renamed smarty_include and smarty_eval wrappers to _include and _eval
-
-2003-07-17 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/core/core.process_compiled_include.php
- libs/core/core.read_cache_file.php:
- improved checking of compiled_include against cached-template with
- non-cached-chunks
-
- * libs/core/core.write_compiled_include.php:
- fixed too short open-tag
-
- * libs/plugins/function.eval.php:
- fixed assign parameter for eval (must have gotton lost on its way to 2.5.0)
- cleaned up indentiation
-
-2003-07-03 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- resurrected $foo->$bar syntax
-
- * libs/Smarty_Compiler.class.php:
- i'm so stupid. kick me.
-
- * libs/Smarty_Compiler.class.php:
- fixed initialisation of $this->_plugins in compile_block_tag()
-
-2003-07-03 Monte Ohrt <monte@ispi.net>
-
- * libs/Config_File.class.php:
- add preg_quote delimiter
-
-2003-07-03 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- applied fix for {$var1->p1|modifier:$var2->p2}-syntax - thanks Dominik
-
-2003-07-02 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- fixed duplicate generation of arg-list in _compile_block_tag()
-
- * libs/Smarty_Compiler.class.php:
- fixed off-by-one-error in nocache-tag-handling
-
-2003-06-30 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- backed out errornously committed support for $foo->$bar
-
- * libs/core/core.write_file.php:
- fixed indentiation, silenced occasional warning
-
- * libs/plugins/function.html_image.php:
- match first character of file-attribute against "/" instead of
- DIRECTORY_SEPARATOR since it is a url-path and not a file-path.
-
- * libs/Smarty_Compiler.class.php
- libs/core/core.write_file.php
- libs/plugins/function.html_image.php:
- libs/plugins/function.html_image.php
-
- * libs/Smarty_Compiler.class.php:
- re-fixed cacheable_state-handling
-
- * libs/core/core.display_debug_console.php
- libs/core/core.process_cached_inserts.php
- libs/core/core.process_compiled_include.php
- libs/core/core.run_insert_handler.php:
- extincting $this out of smarty_core_*-functions
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- fixed handling of nocache-state
-
-2003-06-29 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/core/core.smarty_include.php
- libs/core/core.smarty_include_php.php
- libs/plugins/function.eval.php:
- removed $this from smarty_include and smarty_include_php
- added cleaner handling of $this to {eval}
-
- * libs/core/core.load_resource_plugin.php:
- fixed inlude_once-call
-
- * docs/de/designers.sgml
- docs/fr/designers.sgml:
- fixed examples of html_radios and html_checkboxes in german and french docs
-
-2003-06-25 Monte Ohrt <monte@ispi.net>
-
- * libs/core/core.assemble_auto_filename.php
- libs/core/core.write_cache_paths_file.php:
- fix typo, fix write_cache_paths logic
-
- * libs/Smarty.class.php
- libs/core/core.assemble_auto_filename.php:
- fix SMARTY_COMPILE_DIR_SEP problem, make local var
-
-2003-06-24 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty.class.php
- libs/core/core.assemble_auto_filename.php
- libs/core/core.write_cache_paths_file.php:
- fixed cache_paths bug, simplified filename assembly logic
-
-2003-06-24 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/plugins/function.html_image.php:
- added parsing of forgotton param "basedir"
-
- * libs/Smarty_Compiler.class.php:
- fixed $smarty.get-reference
-
- * libs/plugins/block.textformat.php:
- removed warning
-
- * libs/Smarty_Compiler.class.php:
- fixed value of _cacheable_state on compiler-startup
-
-2003-06-23 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.write_cache_paths_file.php:
- make cache_path per resource, fix a couple directory path issues
-
-2003-06-23 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- removed warning when compiling empty template
-
- * libs/core/core.write_compiled_include.php:
- fixed bug in write_compiled_include
-
- * libs/core/core.assemble_plugin_filepath.php:
- fixed warning
-
-2003-06-22 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/plugins/function.eval.php:
- fixed propagation of $this into evald code in smarty_function_eval()
-
- * libs/core/core.write_cache_paths_file.php
- libs/core/core.write_compiled_include.php:
- fix in compiled-include-handling
-
- * libs/core/core.assemble_auto_filename.php
- libs/core/core.assemble_plugin_filepath.php
- libs/core/core.assign_smarty_interface.php
- libs/core/core.create_dir_structure.php
- libs/core/core.fetch_resource_info.php
- libs/core/core.get_include_path.php
- libs/core/core.get_microtime.php
- libs/core/core.get_php_resource.php
- libs/core/core.is_secure.php
- libs/core/core.is_trusted.php
- libs/core/core.load_plugins.php
- libs/core/core.load_resource_plugin.php
- libs/core/core.parse_resource_name.php
- libs/core/core.read_cache_file.php
- libs/core/core.rm_auto.php
- libs/core/core.rmdir.php
- libs/core/core.write_cache_file.php
- libs/core/core.write_cache_paths_file.php
- libs/core/core.write_compiled_include.php
- libs/core/core.write_compiled_resource.php
- libs/core/core.write_file.php
- libs/plugins/modifier.date_format.php:
- started moving from $this to $smarty in core.*.php
-
-2003-06-21 Monte Ohrt <monte@ispi.net>
-
- * libs/core/core.create_dir_structure.php
- libs/core/core.write_file.php
- libs/plugins/function.config_load.php:
- fix more dir paths
-
- * NEWS
- libs/Smarty.class.php
- libs/core/core.assemble_auto_filename.php
- libs/core/core.assemble_plugin_filepath.php
- libs/core/core.fetch_resource_info.php
- libs/core/core.get_php_resource.php
- libs/core/core.parse_resource_name.php
- libs/core/core.process_cached_inserts.php
- libs/core/core.read_cache_file.php
- libs/core/core.rm_auto.php
- libs/core/core.rmdir.php
- libs/core/core.run_insert_handler.php
- libs/core/core.smarty_include.php
- libs/core/core.smarty_include_php.php
- libs/core/core.write_cache_file.php
- libs/core/core.write_cache_paths_file.php
- libs/core/core.write_compiled_include.php
- libs/core/core.write_compiled_resource.php
- libs/core/core.write_file.php
- libs/plugins/function.config_load.php
- libs/plugins/function.fetch.php
- libs/plugins/function.html_image.php:
- fix filepaths to core files to use DIRECTORY_SEPARATOR
-
-2003-06-21 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- fixed {plugin|modifier} syntax
-
- * libs/Smarty.class.php
- libs/core/core.write_compiled_include.php:
- fixed compiled include handling
-
-2003-06-21 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.assemble_auto_filename.php
- libs/core/core.assemble_plugin_filepath.php
- libs/core/core.write_cache_paths_file.php:
- added filepath caching
-
-2003-06-20 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty_Compiler.class.php:
- update more varnames
-
- * libs/Smarty.class.php
- libs/core/core.display_debug_console.php
- libs/core/core.fetch_file_info.php
- libs/core/core.fetch_resource_info.php
- libs/core/core.get_php_resource.php
- libs/core/core.parse_file_path.php
- libs/core/core.parse_resource_name.php
- libs/core/core.process_cached_inserts.php
- libs/core/core.read_cache_file.php
- libs/core/core.run_insert_handler.php
- libs/core/core.smarty_include.php
- libs/core/core.smarty_include_php.php
- libs/core/core.write_compiled_resource.php
- libs/core/core.write_compiled_template.php
- libs/plugins/function.config_load.php:
- refactored var naming to better reflect "resource" instead of "file" where
- appropriate
-
-2003-06-19 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- updated version-number to 2.5.0-cvs
-
- * libs/core/core.write_cache_file.php:
- omit is-cache_dir-writable-check if a cache_handler_function is in use
-
- * libs/core/core.smarty_include_php.php:
- fixed comments in smarty_include_php
-
-2003-06-19 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.display_debug_console.php
- libs/core/core.smarty_include.php
- libs/plugins/function.eval.php:
- split up _compile_template to _compile_file and _compile_source, fix eval
- function
- VS: ----------------------------------------------------------------------
-
- * libs/plugins/function.config_load.php:
- fix logic for _is_compiled()
-
-2003-06-19 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- added optional assign-attribute to {capture}-tag
-
- * NEWS
- libs/Smarty.class.php:
- added $cacheable-parameter to register_compiler_function()
-
-2003-06-18 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.load_plugins.php
- libs/core/core.process_compiled_include.php
- libs/core/core.read_cache_file.php
- libs/core/core.write_cache_file.php
- libs/core/core.write_compiled_include.php:
- added $cacheable-parameter to register_function() and register_block()
-
- * libs/Smarty.class.php:
- append '.php' to all compiled templates regardless of the settings of
- $use_sub_dirs
-
- * libs/Smarty.class.php
- libs/core/core.read_cache_file.php:
- fixed $file_path-parameters passed to smarty_core_fetch_file_info()
-
-2003-06-17 Monte Ohrt <monte@ispi.net>
-
- * NEWS:
- fix name
-
- * libs/Smarty_Compiler.class.php:
- change varnames to follow coding methods
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- add math patch to core
-
-2003-06-17 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/core/core.smarty_include.php:
- switched _process_template() to _is_compiled()-logic
-
-2003-06-17 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty.class.php:
- fix _is_compiled logic
-
- * NEWS:
- update news file
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- fix _run_mod_handler routine
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.display_debug_console.php
- libs/core/core.fetch_file_info.php
- libs/core/core.parse_file_path.php
- libs/core/core.write_compiled_template.php
- libs/plugins/function.config_load.php:
- fix path problems, rename some varibles from "template" to "file"
-
-2003-06-16 Monte Ohrt <monte@ispi.net>
-
- * libs/core/core.fetch_file_info.php
- libs/core/core.fetch_template_info.php:
- rename file, commit
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.parse_file_path.php
- libs/core/core.read_cache_file.php
- libs/plugins/block.strip.php
- libs/plugins/block.textformat.php
- libs/plugins/compiler.config_load.php
- libs/plugins/function.config_load.php
- libs/plugins/function.eval.php
- libs/plugins/function.fetch.php
- libs/plugins/function.html_image.php:
- fix config_load, compile fetched arrays to compile_dir, switch display
- back to runtime. clean up var names and function names, split up compile
- testing and compiling to separate funcs, rename some template_* functions
- to
- file_* functions and update logic so they can be used for file resources
- other than templates.
-
-2003-06-16 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- fixed little bug in _compile_custom_tag()
-
-2003-06-16 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/core/core.assign_smarty_interface.php
- libs/core/core.create_dir_structure.php
- libs/core/core.display_debug_console.php
- libs/core/core.fetch_template_info.php
- libs/core/core.get_include_path.php
- libs/core/core.get_microtime.php
- libs/core/core.get_php_resource.php
- libs/core/core.is_secure.php
- libs/core/core.is_trusted.php
- libs/core/core.load_plugins.php
- libs/core/core.load_resource_plugin.php
- libs/core/core.parse_file_path.php
- libs/core/core.process_cached_inserts.php
- libs/core/core.read_cache_file.php
- libs/core/core.rm_auto.php
- libs/core/core.rmdir.php
- libs/core/core.run_insert_handler.php
- libs/core/core.smarty_include.php
- libs/core/core.smarty_include_php.php
- libs/core/core.write_cache_file.php
- libs/core/core.write_compiled_template.php
- libs/core/core.write_file.php
- libs/plugins/core.assign_smarty_interface.php
- libs/plugins/core.create_dir_structure.php
- libs/plugins/core.display_debug_console.php
- libs/plugins/core.fetch_template_info.php
- libs/plugins/core.get_include_path.php
- libs/plugins/core.get_microtime.php
- libs/plugins/core.get_php_resource.php
- libs/plugins/core.is_secure.php
- libs/plugins/core.is_trusted.php
- libs/plugins/core.load_plugins.php
- libs/plugins/core.load_resource_plugin.php
- libs/plugins/core.parse_file_path.php
- libs/plugins/core.process_cached_inserts.php
- libs/plugins/core.read_cache_file.php
- libs/plugins/core.rm_auto.php
- libs/plugins/core.rmdir.php
- libs/plugins/core.run_insert_handler.php
- libs/plugins/core.smarty_include.php
- libs/plugins/core.smarty_include_php.php
- libs/plugins/core.write_cache_file.php
- libs/plugins/core.write_compiled_template.php
- libs/plugins/core.write_file.php:
- move core files into their own directory under SMARTY_DIR,
- remove abstraction function _execute_core_function
-
- * libs/Smarty_Compiler.class.php:
- fix newline handling for template for all template tags
-
-2003-06-11 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/compiler.config_load.php:
- add compiler function to cvs repository
-
-2003-06-11 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- added config-option "request_use_auto_globals" to make auto-globals be
- used as request vars instead of HTTP_*_VARS
-
-2003-06-11 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/plugins/function.config_load.php:
- make config vars compile statically
-
-2003-06-11 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- backed out newlines patch
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- removed newlines in compiled templates after closing tags
-
-2003-06-10 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/de/designers.sgml:
- fixed german note on html_image and disk-access
-
-2003-06-10 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/core.parse_file_path.php:
- fix bug with resource_type resolving
-
-2003-06-09 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml:
- replace example with more practical one
-
-2003-06-08 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- added block-methods for registered objects
-
-2003-06-07 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/programmers.sgml:
- fixed bug in documentation for $smarty->default_modifiers
-
-2003-06-06 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/core.parse_file_path.php:
- fix problem with new default_resource_type changes
-
- * NEWS:
- update NEWS file info
-
- * NEWS
- libs/Smarty.class.php
- libs/plugins/core.parse_file_path.php:
- add default_resource_type, ignore 1 char resource names
-
- * NEWS
- libs/Config_File.class.php:
- fix bug where config file starts with hidden section
-
-2003-06-04 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty.class.php:
- -** empty log message ***
-
-2003-06-03 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/function.html_image.php:
- fix example in code comments
-
-2003-06-03 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/function.counter.php:
- fixed behaviour of start=... for {counter}
-
-2003-06-02 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/function.counter.php:
- fixed assign for {counter}
-
-2003-05-30 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/core.write_cache_file.php
- libs/plugins/core.write_compiled_template.php:
- add discrete error checking pertaining to $cache_dir
- and $compile_dir, their existance and writability
-
-2003-05-28 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/function.html_table.php:
- added params vdir, hdir and inner to html_table to allow looping over
- the data in various directions
-
-2003-05-28 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/core.compile_template.php
- libs/plugins/core.display_debug_console.php:
- fix problem with security and debug.tpl file
-
-2003-05-23 Monte Ohrt <monte@ispi.net>
-
- * NEWS:
- upd NEWS file
-
- * libs/Smarty_Compiler.class.php:
- allow spaces in literal tags
-
-2003-05-22 Monte Ohrt <monte@ispi.net>
-
- * docs/fr/programmers.sgml:
- fix special chars
-
-2003-05-19 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- speed up compiled templates, hardcode plugin filepaths instead of
- recalculate at runtime
-
-2003-05-19 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml:
- fixed example of {html_image}
-
- * docs/designers.sgml:
- fixed typo
-
-2003-05-12 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/plugins/core.read_cache_file.php
- libs/plugins/core.smarty_include.php
- libs/plugins/function.config_load.php:
- fixed multiple redundant occurrences for 'config' and 'template' in
- $smarty->_cache_info
-
-2003-05-10 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/plugins/core.create_dir_structure.php:
- refurbished create_dir_structure to use '/' internally
-
- * libs/plugins/core.create_dir_structure.php:
- fixed windows absolute-paths in smarty_core_create_dir_structure()
-
- * libs/plugins/core.create_dir_structure.php:
- fixed error-message
-
-2003-05-09 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- fixed warning due to missing param to _execute_core_function()
-
- * libs/Smarty_Compiler.class.php:
- fixed quoting in _compile_include_php
-
- * libs/Smarty_Compiler.class.php:
- fixed quoting of "file"-parameter in _compile_include_tag()
-
-2003-05-08 Monte Ohrt <monte@ispi.net>
-
- * docs/programmers.sgml:
- fix typo
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/plugins/core.compile_template.php
- libs/plugins/core.create_dir_structure.php
- libs/plugins/core.fetch_template_info.php
- libs/plugins/core.get_include_path.php
- libs/plugins/core.get_microtime.php
- libs/plugins/core.get_php_resource.php
- libs/plugins/core.is_secure.php
- libs/plugins/core.is_trusted.php
- libs/plugins/core.load_plugins.php
- libs/plugins/core.load_resource_plugin.php
- libs/plugins/core.parse_file_path.php
- libs/plugins/core.process_cached_inserts.php
- libs/plugins/core.read_cache_file.php
- libs/plugins/core.rm_auto.php
- libs/plugins/core.rmdir.php
- libs/plugins/core.run_insert_handler.php
- libs/plugins/core.smarty_include.php
- libs/plugins/core.smarty_include_php.php
- libs/plugins/core.write_cache_file.php
- libs/plugins/core.write_compiled_template.php
- libs/plugins/core.write_file.php
- libs/plugins/function.config_load.php
- libs/plugins/function.fetch.php
- libs/plugins/function.html_image.php:
- abstract more private functions to plugin directory
-
- * libs/Config_File.class.php:
- only add DIRECTORY_SEPARATOR if it isn't already present
-
- * libs/Config_File.class.php:
- fix directory separator code, use DIRECTORY_SEPARATOR
-
-2003-05-08 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml:
- fixed example of html_checkboxes
-
- * NEWS
- libs/Smarty.class.php:
- fixed bug in _create_dir_structure() when used with
- open_basedir-restriction and relative paths
-
- * docs/designers.sgml:
- fixed example for html_radios
-
-2003-05-07 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php
- libs/plugins/core.assign_smarty_interface.php
- libs/plugins/core.display_debug_console.php
- libs/plugins/function.display_debug_console.php:
- abstracted display_debug_console and assign_smarty_interface to plugin dir
- as a test
-
- * libs/Smarty.class.php
- libs/plugins/function.display_debug_console.php:
- correct misc varnames, abstract debug console display to plugin function
-
- * libs/plugins/modifier.escape.php:
- fix typo
-
-2003-05-05 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty_Compiler.class.php:
- add % to math
-
- * libs/Smarty.class.php:
- clean up comments, formatting
-
- * NEWS
- libs/Smarty.class.php:
- keep DIR_SEP for 3rd party compatability
-
- * NEWS
- libs/Smarty.class.php:
- remove DIR_SEP, use DIRECTORY_SEPARATOR exclusively
-
- * libs/Smarty_Compiler.class.php:
- remove ++ and -- math operators on template vars
-
-2003-05-04 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty_Compiler.class.php:
- removed unused parameter $quote from Smarty_Compiler::_parse_attrs()
-
- * libs/plugins/function.html_image.php:
- fixed DIR_SEP in html_image-plugin
-
-2003-05-04 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty.class.php:
- rename DIR_SEP to SMARTY_DIR_SEP to avoid varname collisions
-
-2003-05-04 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/function.html_image.php:
- changed "link" to "href" in html_image. "link" is still working but
- deprecated
- html_image always renders an alt-tag now (default alt="")
- cleaned up indentiation of function.html_image.php
-
-2003-05-03 Monte Ohrt <monte@ispi.net>
-
- * libs/debug.tpl:
- fix typo
-
-2003-05-02 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/function.counter.php:
- fixed assign attribute for multiple counters
-
-2003-05-02 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty_Compiler.class.php:
- allow math on negative number
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- added simple math operators to variables
-
-2003-05-02 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml:
- fixed typos
-
-2003-04-30 Monte Ohrt <monte@ispi.net>
-
- * docs/fr/appendixes.sgml
- docs/fr/common.dsl
- docs/fr/designers.sgml
- docs/fr/getting-started.sgml
- docs/fr/html-common.dsl
- docs/fr/html.dsl
- docs/fr/manual.sgml
- docs/fr/php.dsl
- docs/fr/preface.sgml
- docs/fr/programmers.sgml:
- add frech docs to cvs repository
-
-2003-04-29 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- reverted patch for case-insensitive tag-names
-
-2003-04-28 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/programmers.sgml:
- reverted back to humerous redundancy in the docs :). although we all
- know we are here to generate template-based output, and not to have
- fun ;-)
-
- * docs/getting-started.sgml:
- fixed default user and group for max os x installation
-
- * libs/Smarty.class.php:
- made $function[2] and $function[3] options for register_resource
-
- * libs/Smarty.class.php:
- fixed issue with object-callback when fetching a php-resource
-
- * NEWS
- libs/Smarty.class.php:
- enabled array(&$obj. 'source', 'timestamp', 'secure', 'trusted') as
- callback for register_resource()
-
- enabled array(&$obj, 'method') as callback for
- $default_template_handler_func
-
-2003-04-27 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml
- docs/programmers.sgml:
- fixed some typos, thank to mehdi
-
- * libs/plugins/function.counter.php:
- prevent assign from overruling print-attribute in function.counter.php
-
- * libs/plugins/function.counter.php:
- fixed problem with counter and assign
-
- * libs/Smarty.class.php:
- fixed notice in _load_plugins()
-
- * NEWS
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- made plugin-names case-insensitive. this affects
- compiler/block/custom-functions and modifers.
-
-2003-04-26 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- remove unnecessary close/open tags from compiled templates
-
-2003-04-26 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml:
- added documentation for foreach.property.*
-
-2003-04-24 Messju Mohr <messju@lammfellpuschen.de>
-
- * docs/designers.sgml:
- fixed example table_attr and tr_attr in html_table-example
-
-2003-04-21 Greg Beaver <greg@chiaraquartet.net>
-
- * libs/Smarty.class.php:
- fixed small bug in doc comments
-
-2003-04-21 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/function.html_image.php:
- fixed errornous creation of '//' in image_path in html_image
-
-2003-04-21 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/modifier.debug_print_var.php:
- fix htmlspecialchars() conflict
-
- * NEWS
- libs/plugins/modifier.debug_print_var.php:
- fix escapement of special chars in key values of debug console
-
- * NEWS
- libs/plugins/function.config_load.php:
- fixed debug timing logic for config_load
-
- * docs/designers.sgml:
- fix example text
-
-
-2003-04-20 Greg Beaver <cellog@users.sourceforge.net>
- * plugins/*
- Smarty.class.php
- Smarty_Compiler.class.php
- Config_File.class.php:
- updated all doc comments to phpDocumentor format (whew!)
-
-2003-04-06 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/plugins/function.math.php:
- allowed "_" in the name of variable-parameters to {math}-function
-
-2003-04-04 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- docs/designers.sgml
- libs/Smarty_Compiler.class.php:
- change backtic syntax from $`foo` to `$foo`
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- recognize $foo[][] syntax in embedded quotes without backticks
-
-2003-04-03 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- name=123 is passed as an integer (not a string) to plugins now
-
-2003-04-01 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- added CVS $Id: ChangeLog,v 1.1 2005/10/17 18:37:38 jeichorn Exp $
-
-2003-03-31 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- added missing compile_id inside Smarty_Compiler
-
- * libs/Smarty_Compiler.class.php:
- fixed flaw when generating an error for missing postfilter
-
-2003-03-31 Monte Ohrt <monte@ispi.net>
-
- * docs/getting-started.sgml
- docs/programmers.sgml:
- fix typos
-
-2003-03-27 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/modifier.debug_print_var.php:
- $length is now propagated to sub-values in debug_print_var
-
-2003-03-26 Monte Ohrt <monte@ispi.net>
-
- * NEWS:
- update header
-
- * RELEASE_NOTES:
- commit changes to release notes
-
- * (Smarty_2_5_0_RC2)
- libs/Config_File.class.php
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- committing RC2
-
-2003-03-24 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php:
- made clear_cache() ignore compile_id when clearing cache_groups
-
- * libs/plugins/function.popup.php:
- made onmouseout XHTML-compatible in function.popup.php
-
-2003-03-21 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php:
- applied new var-names to fetch()
-
- * NEWS
- libs/Smarty.class.php:
- renamed $localvars to $_localvars in cache-file-handling-functions,
- added _get_auto_id()-function
-
-2003-03-21 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/function.mailto.php
- libs/plugins/function.popup.php:
- update functions for XHTML compatability
-
-2003-03-21 Messju Mohr <messju@lammfellpuschen.de>
-
- * libs/Smarty.class.php:
- fixed wrong $auto_id in _read_cache_file()
-
- * NEWS
- libs/Smarty.class.php:
- swapped compile_id and cache_id in read_cache_file and write_cache_file
-
- * libs/Smarty.class.php:
- reverted patch for ignoring compile-id back to -r1.364, due to problems
-
- * NEWS
- libs/plugins/function.html_checkboxes.php
- libs/plugins/function.html_radios.php:
- html_radios and html_checkboxes accept "selected" instead of "checked"
- optionally now
-
- * NEWS
- libs/Smarty.class.php:
- swapped compile_id and cache_id for cache-file-handling again
-
-2003-03-20 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty_Compiler.class.php:
- fix notice when no parameter is passed to default
-
-2003-03-20 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php:
- removed notice of undefined var in _rm_auto()
-
-2003-03-19 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/function.html_checkboxes.php
- libs/plugins/function.html_radios.php
- libs/plugins/function.html_table.php:
- fix a few error messages, follow consistancy format plugin_name: errormsg
-
- * libs/plugins/function.html_radios.php:
- update error messages
-
- * NEWS
- libs/plugins/function.html_radios.php:
- add a warning when an array is passed as the 'checked' value of html_radios
-
-2003-03-19 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- fixed errormessage in _compile_smarty_ref()
-
- * NEWS
- docs/designers.sgml:
- updated docs for html_image
-
-2003-03-18 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/Smarty.class.php:
- cleaned up calls to readdir()
-
- * libs/plugins/function.html_options.php:
- fixed label for optgroup in html_options
-
-2003-03-18 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- fix (newly introduced) bug with passing multiple modifiers to a parameter
-
-2003-03-18 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- docs/designers.sgml:
- updated docs for html_checkboxes, html_options and html_radios
-
- * libs/plugins/function.html_options.php:
- fixed wrong default-"name" in function.html_options.php
-
- * NEWS
- libs/plugins/function.html_checkboxes.php
- libs/plugins/function.html_radios.php:
- renamed "checkbox" and "radios" to "options" in {html_checkboxes} and
- {html_radios}
-
- * libs/plugins/outputfilter.trimwhitespace.php:
- tried to optimize re-replacement in outputfilter.trimwhitespace.php a
- little
-
- * libs/plugins/outputfilter.trimwhitespace.php:
- fixed greedy str_replace in outputfilter.trimwhitespace.php
-
- * NEWS
- libs/plugins/function.html_checkboxes.php
- libs/plugins/function.html_options.php
- libs/plugins/function.html_radios.php:
- html_options, html_checkboxes and html_radios now pass-thru all unknown
- paramters
-
-2003-03-17 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/function.html_options.php:
- html_options passthru all unknown paramters now
-
-2003-03-17 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/plugins/function.html_image.php:
- Fix link bug in html_image function, also make output XHTML compatible
-
- * libs/Smarty_Compiler.class.php:
- fix issue of embedded var and escaped double quotes
-
-2003-03-15 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- back out "@" logic, apply only to default modifier special case
-
- * libs/Smarty_Compiler.class.php:
- fix @ logic, only use upon an echo
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- append "@" to template var echoes to supress possible notices
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- append "@" to _run_mod_handler to supress warnings
-
-2003-03-14 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- fix problem with escaped double quotes
-
- * NEWS
- libs/plugins/function.html_radios.php:
- fixed html_options to not return an array
-
-2003-03-12 Messju Mohr <messju@lammfellpuschen.de>
-
- * NEWS
- libs/plugins/modifier.truncate.php:
- fixed length in modifier.truncate.php
-
- * NEWS
- libs/plugins/outputfilter.trimwhitespace.php:
- fixed handling of '$'-signs in trimwhitespace outputfilter (messju)
-
-2003-03-12 Monte Ohrt <monte@ispi.net>
-
- * docs/programmers.sgml:
- update technical explanation of assign_by_ref and append_by_ref
-
-2003-03-11 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/Smarty.class.php:
- fix config file recompiling code
-
-2003-03-07 Monte Ohrt <monte@ispi.net>
-
- * libs/plugins/function.html_image.php:
- change E_USER_ERROR to E_USER_NOTICE
-
- * libs/plugins/function.html_image.php:
- suppress warning in html_image
-
- * NEWS
- libs/plugins/function.html_image.php:
- update changes to html_image
-
-2003-03-06 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- docs/de/appendixes.sgml
- docs/de/common.dsl
- docs/de/designers.sgml
- docs/de/getting-started.sgml
- docs/de/html-common.dsl
- docs/de/html.dsl
- docs/de/manual.sgml
- docs/de/preface.sgml
- docs/de/programmers.sgml:
- add german docs to dist
-
- * NEWS:
- update news file
-
- * libs/plugins/function.html_image.php:
- fix width/height parameter index
-
- * NEWS
- libs/Smarty.class.php:
- get rid of unsetting name and script attributes to insert tags
-
-2003-03-05 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- RELEASE_NOTES:
- update NEWS file
-
- * libs/plugins/modifier.string_format.php:
- fix argument order, erroneously swapped a while back
-
- * (Smarty_2_5_0_RC1)
- NEWS
- README
- RELEASE_NOTES
- libs/Config_File.class.php
- libs/Smarty.class.php
- libs/Smarty_Compiler.class.php:
- commit final changes for 2.5.0-RC1
-
-2003-03-04 Monte Ohrt <monte@ispi.net>
-
- * docs/programmers.sgml:
- remove $show_info_header and $show_info_include property vars from docs
-
-2003-03-03 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/plugins/function.popup.php:
- fixed PHP notice
-
-2003-02-28 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty_Compiler.class.php:
- simplify smarty.const.foo and smarty.const.$foo logic
-
- * libs/Smarty_Compiler.class.php:
- only allow $foo syntax in embedded quotes, unless escaped with backticks
- then allow any dollar var
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- fix "once" var compiling to work with new attr compiling methods for
- include_php
-
- * FAQ
- NEWS
- README
- docs/designers.sgml
- docs/getting-started.sgml
- libs/Smarty_Compiler.class.php
- libs/plugins/function.html_checkboxes.php
- libs/plugins/function.html_image.php
- libs/plugins/function.html_options.php
- libs/plugins/function.html_radios.php
- libs/plugins/function.html_select_date.php
- libs/plugins/function.html_select_time.php
- libs/plugins/function.html_table.php:
- fix $smarty.const.foo compiling, clean up double quoted strings,
- allow full dollar var syntax in quotes again
-
-2003-02-27 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- docs/programmers.sgml
- libs/Smarty_Compiler.class.php:
- update docs, fix smarty var compiling, allow any $smarty.*.$foo syntax,
- add $`foobar` for embedded variables
-
- * libs/plugins/function.html_image.php:
- update functionality
-
-2003-02-26 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- libs/plugins/modifier.nl2br.php:
- add nl2br modifier
-
- * libs/plugins/function.html_image.php:
- add link parameter
-
-2003-02-24 Monte Ohrt <monte@ispi.net>
-
- * libs/Smarty.class.php
- libs/plugins/function.html_image.php:
- fix rename problem in windows, unlink first
-
- * libs/plugins/function.html_checkboxes.php
- libs/plugins/function.html_image.php
- libs/plugins/function.html_options.php
- libs/plugins/function.html_radios.php
- libs/plugins/shared.escape_special_chars.php:
- update functions with separate escape_special_chars routine
-
- * NEWS
- libs/plugins/function.html_checkboxes.php
- libs/plugins/function.html_radios.php:
- commit checkboxes, update radios
-
- * NEWS
- libs/Smarty.class.php
- libs/plugins/function.html_image.php:
- fix bug with get_registered_object
-
- * NEWS
- libs/plugins/modifier.cat.php:
- added cat modifier to distribution
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- added << >> <> support to IF statements
-
- * libs/plugins/function.html_radios.php:
- apply patch to initial html_radios function
-
- * NEWS
- libs/Smarty.class.php:
- fix _assign_smarty_interface to not overwrite keys other than 'request'
-
- * NEWS
- libs/plugins/function.html_radios.php:
- added html_radios to distribution
-
- * NEWS
- libs/plugins/modifier.string_format.php:
- fixed arg order of string_format
-
- * NEWS
- libs/Smarty.class.php:
- use tmp file for file writes, avoid race condition
-
- * NEWS
- libs/Smarty_Compiler.class.php:
- add $smarty.config.foo var, handle embedded smarty var correctly
-
- * NEWS
- libs/plugins/function.fetch.php:
- silence warnings in fetch plugin
-
-2003-02-21 Monte Ohrt <monte@ispi.net>
-
- * INSTALL:
- update wording
-
- * INSTALL:
- update install instructions
-
- * AUTHORS
- BUGS
- CREDITS
- QUICKSTART
- README
- RESOURCES
- TESTIMONIALS:
- remove some files already in docs or elsewhere
-
- * demo/index.php:
- add templates_c to repository
-
- * index.php:
- move demo files to demo directory
-
- * Config_File.class.php
- Smarty.class.php
- Smarty_Compiler.class.php
- debug.tpl:
- moved lib files under libs directory
-
-2003-02-20 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php:
- add get_config_vars() method, update get_template_vars() functionality
-
- * NEWS
- Smarty.class.php:
- fix minor logic in _fetch_template_info()
-
- * NEWS
- Smarty.class.php:
- support merging appended vars
-
- * NEWS
- Smarty.class.php:
- fix cache groups behavior with compile_id set
-
-2003-02-19 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- back out third parameter, extend functionality of append
-
- * NEWS
- Smarty_Compiler.class.php:
- update imbedded vars, allow special $smarty vars
-
- * plugins/function.html_table.php:
- add plugin html_table
-
- * NEWS
- Smarty.class.php:
- support appending key=>val pairs
-
- * NEWS
- Smarty_Compiler.class.php:
- change embedded variable logic to only recognize $foo and $foo[0][bar]
- syntax
-
- * NEWS
- Smarty_Compiler.class.php:
- allow null as function attribute value
-
-2003-02-18 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- support foo->bar[index] syntax
-
- * Smarty_Compiler.class.php:
- allow $foo->bar[0] syntax
-
-2003-02-17 Monte Ohrt <monte@ispi.net>
-
- * plugins/modifier.escape.php:
- fix syntax error from previous commit
-
- * NEWS
- Smarty.class.php:
- add error msgs to get_registered_object
-
- * Smarty.class.php:
- add function for getting reference to registered object
-
- * Smarty_Compiler.class.php:
- back out patches for object and objref calls on $smarty var
-
- * NEWS
- Smarty_Compiler.class.php:
- treat unrecognized param attribute syntax as a string
-
- * NEWS
- Smarty_Compiler.class.php:
- support $smarty.const.$foo syntax
-
- * NEWS
- debug.tpl
- plugins/modifier.count_words.php
- plugins/modifier.escape.php:
- fix E_NOTICE messages
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- add @ and === to if tokens, few param cleanups
-
-2003-02-16 Greg Beaver <greg@chiaraquartet.net>
-
- * ChangeLog
- Smarty.class.php
- Smarty_Compiler.class.php:
- many more phpdoc comment upgrades
-
-2003-02-15 Greg Beaver <cellog@sourceforge.net>
- * Smarty.class.php
- Smarty_Compiler.class.php
- continue cleaning of phpdoc comments. All that is needed is the
- addition of @return tags and perhaps a bit more verbose comments
- and they are finished.
-
-2003-02-14 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php:
- enable config_load error messages
-
- * NEWS
- plugins/function.html_options.php:
- fix html_options to not escape already escaped entities
-
- * NEWS
- Smarty.class.php:
- send Last-Modified header on cache creation, misc tab/spacing cleanup
-
-2003-02-13 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- docs/designers.sgml:
- allow dash in plain text
-
- * NEWS
- Smarty_Compiler.class.php:
- check strict syntax of function attributes
-
-2003-02-12 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty_Compiler.class.php:
- dropped support for modifiers on object parameters,
- added support for objects as modifier parameters
-
- * NEWS
- Smarty_Compiler.class.php
- docs/designers.sgml:
- fix bug with decimal numbers in if statements, misc doc updates
-
-2003-02-11 Monte Ohrt <monte@ispi.net>
-
- * (Smarty_2_4_2)
- Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php:
- update version numbers
-
-2003-02-10 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty_Compiler.class.php:
- add support for $foo->$bar syntax
-
- * NEWS:
- update NEWS file
-
- * NEWS
- Smarty_Compiler.class.php:
- support full var syntax in quoted text, fix problem with const var access,
- clean up some more regex code, fix object problem with no properties
-
-2003-02-06 Monte Ohrt <monte@ispi.net>
-
- * (Smarty_2_4_1)
- Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php:
- committed 2.4.1 changes
-
- * NEWS
- Smarty_Compiler.class.php:
- ignore case in IF statements
-
-2003-02-05 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty_Compiler.class.php:
- treat undefined constants as null
-
- * NEWS
- Smarty.class.php:
- fix problem with inserts and nested fetches
-
- * Smarty_Compiler.class.php:
- fix "if" regex for math tokens
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- docs/getting-started.sgml:
- added support for extracting params to include_php
-
-2003-02-04 Monte Ohrt <monte@ispi.net>
-
- * RELEASE_NOTES:
- reformat text
-
-2003-02-03 Monte Ohrt <monte@ispi.net>
-
- * NEWS:
- update news file
-
-2003-02-03 Greg Beaver <greg@chiaraquartet.net>
-
- * ChangeLog
- Smarty.class.php:
- begin fixing phpdoc comments in Smarty.class.php
-
- * ChangeLog
- Config_File.class.php:
- fixed phpdoc comments
-
-2003-02-03 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- allow $foo->bar[$x].foo syntax
-
- * Smarty_Compiler.class.php
- index.php
- configs/test.conf
- templates/index.tpl:
- fix accidental commit
-
- * index.php
- configs/test.conf
- templates/index.tpl:
- allow $foo->bar[$j].blah type of syntax
-
-2003-02-02 Greg Beaver <cellog@php.net>
-
- * Smarty.class.php
- begin fixing of phpdoc comments
-
- * Config_File.class.php
- fix phpdoc comments, add phpDocumentor docblock templates
-
-2003-02-02 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- docs/html.dsl
- docs/php.dsl:
- fix version number
-
- * (Smarty_2_4_0)
- Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php
- docs/appendixes.sgml
- docs/designers.sgml
- docs/programmers.sgml:
- update Smarty version numbers
-
-2003-01-30 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty_Compiler.class.php
- TODO:
- fix order of php tag comparisons
-
- * NEWS
- Smarty_Compiler.class.php:
- fix known php tag handling problems
-
-2003-01-29 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php:
- change comments to phpdoc style
-
-2003-01-28 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- docs/programmers.sgml:
- make separate var for compiler file
-
- * plugins/function.fetch.php:
- fix error call
-
-2003-01-25 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php:
- add support for restriction to registered methods
-
- * plugins/outputfilter.trimwhitespace.php:
- update with textarea support
-
-2003-01-24 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- fix compiling problem with {foreach} tags
-
- * Smarty.class.php
- Smarty_Compiler.class.php:
- put objects in own array, add object param format support, change
- object syntax from foo.bar to foo->bar
-
-2003-01-23 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- add support for object registration
-
-2003-01-22 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- add file & line number of calling error to error message
-
-2003-01-21 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- put php style object syntax back in
-
-2003-01-20 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- move security settings to fetch function for template_dir
-
- * NEWS
- Smarty.class.php:
- fix debug template and security, add template_dir to secure_dir at runtime
-
-2003-01-17 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- added new object support without new template syntax
-
-2003-01-15 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- fix if statement syntax for negative integers, fix issue with directories
- named '0'
-
-2003-01-08 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- plugins/function.counter.php
- plugins/function.cycle.php
- plugins/function.debug.php
- plugins/function.eval.php
- plugins/function.fetch.php
- plugins/function.html_options.php
- plugins/function.html_select_date.php
- plugins/function.html_select_time.php
- plugins/function.mailto.php
- plugins/function.math.php
- plugins/function.popup.php
- plugins/function.popup_init.php:
- update plugins to return values instead of echo, fix config file cache
- to include global config variables in cache file
-
- * Smarty_Compiler.class.php:
- fix bug with >= tests in if statements, comment out full object support
-
-2003-01-06 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- docs/html.dsl
- plugins/modifier.escape.php:
- add javascript escape parameter to escape modifier
-
-2003-01-02 Monte Ohrt <monte@ispi.net>
-
- * templates/header.tpl:
- move the title into head where it should be
-
-2002-12-24 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- added correct line numbers to smarty syntax error messages
-
- * docs/programmers.sgml:
- update append documentation, make more clear on its function
-
- * Smarty_Compiler.class.php:
- fix modifier matching regexp
-
-2002-12-23 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- support nested function calls in IF statements
-
-2002-12-20 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- few more fixes, spaces around function parameters
-
- * Smarty_Compiler.class.php:
- fix misc syntax issues with {if} tags
-
-2002-12-20 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- fix misc syntax issues with {if} tags
-
-2002-12-19 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- commit updates, passes all smoke tests
-
- * NEWS:
- update NEWS file
-
- * Smarty_Compiler.class.php:
- fixed literal string not in quotes as parameters
-
- * NEWS
- Smarty_Compiler.class.php:
- fix misc syntax issues, add ability to pass modifiers to functions
-
-2002-12-18 Monte Ohrt <monte@ispi.net>
-
- * NEWS:
- update NEWS
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- update compiler code, clean up regex, add new syntax features
-
-2002-12-16 Monte Ohrt <monte@ispi.net>
-
- * NEWS:
- update NEWS file
-
- * Smarty_Compiler.class.php:
- commit updates for objects
-
-2002-12-14 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php:
- fix bug with compiling config files with caching on
-
-2002-12-13 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- fix problem with matching single quoted strings
-
- * Smarty_Compiler.class.php:
- update embedded variable logic, get rid of ."" at end of output
-
- * NEWS
- docs/designers.sgml
- plugins/function.html_select_date.php:
- add day_value_format to html_select_date
-
-2002-12-12 Monte Ohrt <monte@ispi.net>
-
- * plugins/modifier.debug_print_var.php:
- fix bug, double escaped values in display
-
- * Smarty.class.php:
- move debug test back into fetch()
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- plugins/outputfilter.trimwhitespace.php:
- assigned vars are no longer in global name space, few debug cleanups
-
-2002-12-11 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.popup.php:
- fix error in newline code
-
- * plugins/function.popup.php:
- fix popup to allow newlines in text data
-
-2002-12-10 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- fix plugin error logic
-
- * docs/designers.sgml
- docs/programmers.sgml:
- edit examples, make more verbose
-
- * NEWS
- plugins/function.html_options.php:
- escape html entities in the option values and output
-
- * NEWS
- plugins/function.html_options.php:
- fixed bug with label of html_options
-
-2002-12-09 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- add support for var_export()
-
- * Config_File.class.php
- Smarty.class.php:
- clean up code, respect force_compile and compile_check flags
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- docs/designers.sgml
- plugins/function.mailto.php:
- add caching feature to config loading, document update, add mailto plugin
-
-2002-12-08 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.fetch.php:
- fix query part of URL
-
-2002-12-05 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml:
- fix typos
-
-2002-11-22 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php:
- patch for warning message
-
-2002-11-21 Monte Ohrt <monte@ispi.net>
-
- * RELEASE_NOTES
- Smarty.class.php:
- get rid of testing for a set value with assign function, just set to
- whatever is passed into the template
-
- * docs/programmers.sgml:
- fix typo
-
-2002-11-19 Monte Ohrt <monte@ispi.net>
-
- * Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php:
- commit changes, ready for 2.3.1 release
-
-2002-11-01 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.html_options.php:
- added label attribute to all option outputs, cover w3c spec.
-
- * NEWS: update NEWS file
-
- * docs/designers.sgml: update docs for optgroup output
-
- * plugins/function.html_options.php:
- make html_options work with optgroup, make func modular and recursive.
-
-2002-10-29 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php: set mtime on compile files so they match source files
-
-2002-10-18 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php: added proper support for open_basedir setting
-
- * docs/designers.sgml: clear up docs on index, iteration and rownum
-
-2002-10-16 Monte Ohrt <monte@ispi.net>
-
- * plugins/modifier.default.php: fix warning message in default modifier
-
-2002-09-25 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- plugins/modifier.strip.php
- NEWS: added strip variable modifier
-
-2002-09-24 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty_Compiler.class.php:
- Fix to be able to use $smarty.x variables as arrays.
-
-2002-09-23 Monte Ohrt <monte@ispi.net>
-
- * Config_File.class.php:
- add support for mac/dos formatted config files (fix newlines)
-
- * docs/programmers.sgml: add optional tags to clear_cache parameters
-
- * docs/designers.sgml:
- fix error with include_php description, add $this to description
-
-2002-09-20 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- docs/getting-started.sgml: fixed errors with example setup docs
-
-2002-09-16 Monte Ohrt <monte@ispi.net>
-
- * plugins/block.textformat.php
- docs/designers.sgml
- NEWS: add textformat block function
-
-2002-09-10 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml:
- add assign attribute to cycle function documentation
-
- * docs/designers.sgml
- docs/programmers.sgml: fix typos
-
-2002-09-09 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.debug.php
- templates/header.tpl:
- fix header in debug template, fix typo in header.tpl example
-
-2002-08-15 mohrt <mohrt@pb1.pair.com>
-
- * docs/programmers.sgml: fix typos
-
-2002-08-08 mohrt <mohrt@pb1.pair.com>
-
- * RELEASE_NOTES
- Smarty.class.php:
- supress warnings from unlink() and is_dir(), let error handler deal with it
-
-2002-08-07 mohrt <mohrt@pb1.pair.com>
-
- * docs/appendixes.sgml
- docs/designers.sgml
- docs/programmers.sgml
- Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php: update files with new version numbers
-
-2002-08-02 mohrt <mohrt@pb1.pair.com>
-
- * NEWS: update NEWS file with credits
-
- * NEWS
- Smarty.class.php: added assign_by_ref() and append_by_ref() functions
-
-2002-08-01 mohrt <mohrt@pb1.pair.com>
-
- * TODO
- NEWS
- Smarty.class.php:
- changed default warning type for plugin errors from E_USER_WARNING to E_USER_ERROR
-
-2002-07-29 mohrt <mohrt@pb1.pair.com>
-
- * plugins/function.html_select_time.php
- docs/designers.sgml
- NEWS: added paramters to html_select_time plugin
-
-2002-07-25 Andrei Zmievski <andrei@pb1.pair.com>
-
- * TODO: *** empty log message ***
-
-2002-07-24 mohrt <mohrt@pb1.pair.com>
-
- * QUICKSTART: update QUICKSTART guide
-
- * NEWS
- debug.tpl
- plugins/modifier.debug_print_var.php:
- update debug console to show objects, fix warning in debug.tpl
-
-2002-07-23 mohrt <mohrt@pb1.pair.com>
-
- * docs/programmers.sgml: fix load_filter examples
-
- * Config_File.class.php
- NEWS: fix error when there are no sections in config file
-
-2002-07-19 mohrt <mohrt@pb1.pair.com>
-
- * docs/getting-started.sgml: fix error in install guide
-
-2002-07-18 mohrt <mohrt@pb1.pair.com>
-
- * Smarty_Compiler.class.php:
- correct the expression match for smarty:nodefaults
-
-2002-07-17 mohrt <mohrt@pb1.pair.com>
-
- * Smarty_Compiler.class.php: fix default modifier to work with config vars
-
- * Smarty_Compiler.class.php: got args to strstr backwards...
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- change default modifiers to array instead of string
-
- * Smarty_Compiler.class.php
- docs/designers.sgml
- Smarty.class.php: add default modifier logic, minor doc updates
-
- * NEWS
- Smarty.class.php
- plugins/function.popup_init.php:
- make popup_init xhtml compliant, minor variable name changes for consistancy
-
-2002-07-16 mohrt <mohrt@pb1.pair.com>
-
- * NEWS: update NEWS file
-
- * plugins/function.debug.php
- Smarty.class.php
- debug.tpl
- NEWS:
- fix problem with filenames on windows, add ability to supply expire time in seconds when clearing cache or compiled files
-
-2002-07-15 mohrt <mohrt@pb1.pair.com>
-
- * Smarty.class.php:
- fixed problem with insert tags when loading function from script attribute
- and caching enabled (Monte)
-
-2002-07-14 mohrt <mohrt@pb1.pair.com>
-
- * NEWS
- Smarty.class.php: fix bug with debug_tpl file path for Windows
-
-2002-07-12 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: fix append function with array/string issue
-
-2002-07-11 Monte Ohrt <monte@ispi.net>
-
- * RELEASE_NOTES: update release notes
-
- * NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php
- Config_File.class.php: update files to 2.2.0 tags, get ready for release
-
-2002-07-09 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php: make debug.tpl work with any delimiter
-
- * NEWS
- Smarty.class.php:
- change tests in append and assign to != '' instead of empty(), which is more accurate
-
-2002-07-08 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml: minor doc update
-
- * Smarty.class.php:
- cast var as an array, simplify and get rid of PHP warning messages
-
-2002-07-03 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: one more N
-
- * Smarty.class.php:
- prepend "N" to filenames to avoid possible OS issues with dir names starting with "-"
-
- * Smarty.class.php: only set $debug_tpl in constructor if empty
-
- * Smarty.class.php
- docs/designers.sgml
- docs/getting-started.sgml
- docs/programmers.sgml:
- make use_sub_dirs go back to crc32 for subdir separation
-
-2002-06-29 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.eval.php: do nothing if $val is empty
-
- * TODO
- plugins/function.eval.php
- plugins/function.popup_init.php:
- add zindex to popup init, fix error message for eval.
-
-2002-06-27 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- only loop through relative paths for PHP include_path, remove $_relative variable
-
- * Smarty_Compiler.class.php: added {$smarty.version} variable
-
-2002-06-26 Monte Ohrt <monte@ispi.net>
-
- * docs/appendixes.sgml
- docs/designers.sgml
- docs/getting-started.sgml
- docs/programmers.sgml
- Smarty.class.php:
- update plugin loading logic, look in SMARTY_DIR, then cwd. If all fail, then retry all with include_path
-
- * templates/header.tpl
- Smarty.class.php: update get_include_path, get _path_array only once
-
- * Smarty.class.php: fix get_include_path function for windows
-
- * Smarty.class.php: update plugin search logic
-
- * Smarty.class.php: only search include_path if relative path
-
- * plugins/function.html_select_date.php
- plugins/function.html_select_time.php
- plugins/modifier.date_format.php
- Smarty_Compiler.class.php
- NEWS
- Smarty.class.php: allow plugins_dir to be an array of directories
-
-2002-06-25 Monte Ohrt <monte@ispi.net>
-
- * docs/programmers.sgml
- docs/getting-started.sgml: update installation docs
-
- * debug.tpl
- docs/getting-started.sgml
- templates/debug.tpl
- NEWS
- Smarty.class.php: move debug.tpl to SMARTY_DIR, add to constructor
-
-2002-06-24 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.assign_debug_info.php
- NEWS: fixed warning message in function.assign_debug_info
-
- * Smarty.class.php: update include_path fixes
-
- * NEWS:
- fixed $template_dir, $compile_dir, $cache_dir, $config_dir to respect include_path
-
-2002-06-23 Monte Ohrt <monte@ispi.net>
-
- * plugins/shared.make_timestamp.php:
- update timestamp plugin to work when passed a timestamp
-
-2002-06-19 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update NEWS file
-
- * plugins/modifier.date_format.php
- docs/designers.sgml:
- update date_format, allow optional 2nd paramater as default date if passed date is empty. update docs.
-
- * plugins/modifier.date_format.php:
- fix date_format modifier, return nothing if given empty string
-
-2002-06-18 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- plugins/function.cycle.php:
- gave $reset a default value in cycle function
-
- * plugins/function.html_select_date.php
- plugins/shared.make_timestamp.php
- NEWS:
- corrected warnings in html_select_time function, made make timestamp always return a timestamp
-
-2002-06-17 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: swapped around cache_id and compile_id order
-
-2002-06-14 Monte Ohrt <monte@ispi.net>
-
- * docs/programmers.sgml
- plugins/function.popup_init.php
- Smarty.class.php:
- change directory delimiter to "^" for cache and compile files
-
-2002-06-13 Andrei Zmievski <andrei@php.net>
-
- * TODO: done.
-
- * Smarty_Compiler.class.php:
- Optimize the calculation of section 'total' property.
-
-2002-06-11 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php:
- added support for subdir exclusion, deletion by full or partial cache_id and compile_id, change file format to urlencoded values instead of crc32
-
-2002-06-07 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: fix bug with last_modified_check code
-
- * NEWS
- Smarty.class.php:
- updated $GLOBALS refererence for HTTP_IF_MODIFIED_SINCE
-
-2002-06-06 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- overlib.js:
- remove overlib.js file from distribution, update plugin and docs
-
-2002-06-05 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- NEWS
- Smarty.class.php: fix 304 Not Modified, don't send content
-
-2002-06-03 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.cycle.php: update version number
-
- * plugins/function.cycle.php
- NEWS:
- fixed cycle function to respect delimiter setting after initial setting
-
- * Smarty.class.php
- NEWS:
- update $GLOBALS references to work properly with track_globals settings
-
- * plugins/function.math.php: fixed bug with call $assign
-
- * docs/appendixes.sgml
- docs/designers.sgml
- plugins/function.html_options.php
- plugins/function.html_select_time.php
- NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- optimized for loops with count() function calls
-
-2002-06-01 Andrei Zmievski <andrei@php.net>
-
- * TODO: *** empty log message ***
-
-2002-05-21 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update NEWS file
-
- * plugins/function.html_select_date.php
- RESOURCES
- docs/designers.sgml
- Config_File.class.php:
- update html_select_date with month_value_format attribute for controlling the format of the month values.
-
-2002-05-17 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty_Compiler.class.php:
- Made it possible to use simple variables inside [] for indexing.
-
-2002-05-16 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- docs/getting-started.sgml
- NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- TESTIMONIALS: add "once" attribute to php_include, update docs
-
-2002-05-09 Andrei Zmievski <andrei@ispi.net>
-
- * NEWS
- TODO: *** empty log message ***
-
-2002-05-07 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.cycle.php: remove \n from cycle function
-
- * docs/designers.sgml
- plugins/function.cycle.php
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php
- NEWS:
- update cycle function to handle array as input, update files to 2.1.1
-
-2002-05-06 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.fetch.php:
- update fetch function with more error checking
-
-2002-05-03 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- plugins/function.counter.php:
- update counter to use name instead of id (id still works though)
-
- * plugins/function.cycle.php
- docs/designers.sgml: rename id to name for cycle function
-
- * plugins/function.cycle.php:
- update cycle function to allow blank values parameter after initialized
-
- * plugins/function.cycle.php: fix syntax error
-
-2002-05-02 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.cycle.php: ugh, another typo
-
- * plugins/function.cycle.php: update comments
-
- * docs/designers.sgml
- plugins/function.cycle.php
- NEWS: added function cycle
-
- * FAQ
- Smarty.class.php: fix register_outputfilter function
-
-2002-05-01 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml
- NEWS
- Smarty.class.php: fixed bug with resource testing and include_path
-
-2002-04-30 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php: update files for 2.1.0 release
-
-2002-04-30 Andrei Zmievski <andrei@ispi.net>
-
- * plugins/function.fetch.php
- docs/programmers.sgml
- Smarty.class.php: Fix.
-
-2002-04-29 Andrei Zmievski <andrei@ispi.net>
-
- * docs/programmers.sgml
- docs/designers.sgml: A whole bunch of docs.
-
-2002-04-26 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- QUICKSTART
- docs/programmers.sgml: update FAQ, QUICKSTART, small doc syntax fix
-
-2002-04-24 Monte Ohrt <monte@ispi.net>
-
- * docs/programmers.sgml
- templates/debug.tpl
- Smarty.class.php: changed doc structure a bit
-
-2002-04-16 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Add register/unregister API for output filters.
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- TODO:
- Changed the way filters are loaded, which now has to be done explicitly,
- either through load_filter() API or by filling in $autoload_filters variable.
- Also renamed internal variable to avoid namespace pollution.
-
-2002-04-15 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php:
- Fixed _get_php_resource() to take include_path into account.
-
-2002-04-15 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml:
- update docs, get modifiers and functions into index for easy access
-
- * docs/programmers.sgml
- NEWS
- Smarty.class.php: update caching documentation
-
-2002-04-15 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty.class.php: Only turn down error notices if $debugging is false.
-
-2002-04-15 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update NEWS file
-
- * plugins/function.html_select_date.php:
- fixed logic so this works right when field_separator = "/"
-
- * plugins/function.html_select_date.php:
- fix regular expression for matching date
-
-2002-04-13 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml: updated html_select_date docs to reflect changes
-
- * NEWS
- plugins/function.html_select_date.php:
- added YYYY-MM-DD support to html_select_date
-
-2002-04-12 Andrei Zmievski <andrei@php.net>
-
- * TESTIMONIALS: New entry.
-
-2002-04-12 Monte Ohrt <monte@ispi.net>
-
- * plugins/modifier.strip_tags.php: back out changes to strip_tags
-
- * docs/programmers.sgml: update docs regarding cache_lifetime
-
- * plugins/modifier.strip_tags.php
- Smarty.class.php:
- update cache_lifetime logic: -1 = never expire, 0 = always expire
-
-2002-04-11 Andrei Zmievski <andrei@php.net>
-
- * BUGS
- FAQ
- INSTALL
- NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- docs/getting-started.sgml:
- Fixed directory separtor issue. Requiring PHP 4.0.6 now.
-
- * NEWS
- Smarty_Compiler.class.php:
- Added ability to use simple variables for array indices or object properties.
-
- * TESTIMONIALS: Another one.
-
- * TESTIMONIALS: Adding one from Mark P.
-
-2002-04-05 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php
- NEWS
- Smarty.class.php: Make it possible to unregister pre/postfilter plugins.
-
-2002-04-05 Monte Ohrt <monte@ispi.net>
-
- * INSTALL: Remove addons file from INSTALL instructions
-
-2002-04-04 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml: update doc error
-
- * docs/designers.sgml
- plugins/modifier.escape.php
- NEWS
- Smarty.class.php: added htmlall attribute to escape modifier
-
-2002-04-03 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Fixed undefined offset warning in {if} tag.
-
- * Smarty.class.php
- NEWS: Added template_exists() API.
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- NEWS:
- - Added $smarty.template variable.
- - Fixed {include_php} tag when dynamic values were used for 'file' attribute.
-
- * Config_File.class.php: Separator setting fix.
-
-2002-03-28 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- README: add digest address
-
- * FAQ
- README
- Smarty.class.php: update mailing list addresses
-
-2002-03-28 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * plugins/function.html_select_date.php
- plugins/function.html_select_time.php
- plugins/modifier.date_format.php:
- Fix for when plugins directory is not the default one.
-
-2002-03-28 Andrei Zmievski <andrei@ispi.net>
-
- * NEWS: *** empty log message ***
-
- * plugins/function.html_select_date.php
- plugins/function.html_select_time.php
- plugins/modifier.date_format.php:
- Fix for when plugins directory is not the default one.
-
-2002-03-27 Monte Ohrt <monte@ispi.net>
-
- * FAQ: update FAQ page
-
-2002-03-26 Andrei Zmievski <andrei@ispi.net>
-
- * CREDITS
- NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- TODO: Block functions changes.
-
- * Config_File.class.php: *** empty log message ***
-
-2002-03-25 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php: Initial implementation of block functions.
-
-2002-03-22 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml: fix documentation error in capture
-
-2002-03-22 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: *** empty log message ***
-
- * Smarty.class.php: Turn off notices.
-
-2002-03-21 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Make _current_file available to prefilters.
-
- * NEWS
- Smarty.class.php:
- Made is possible to assign variables in pre/postfilters.
-
-2002-03-20 Andrei Zmievski <andrei@php.net>
-
- * plugins/function.html_select_date.php: Fixed +/- functionality.
-
- * NEWS: *** empty log message ***
-
-2002-03-20 Monte Ohrt <monte@ispi.net>
-
- * Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.class.php
- Smarty_Compiler.class.php: update version numbers
-
- * plugins/function.html_select_date.php
- plugins/function.html_select_time.php
- plugins/modifier.date_format.php:
- move .make_timestamp.php to shared.make_timestamp.php
-
- * NEWS
- Smarty.class.php
- docs/designers.sgml
- plugins/function.fetch.php
- plugins/function.html_select_date.php:
- update file generation, replace crc32() '-' with 'N'
-
-2002-03-20 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: *** empty log message ***
-
-2002-03-19 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty.class.php
- Smarty_Compiler.class.php:
- Fix plugin behavior for inserts with script attribute.
-
- * NEWS: *** empty log message ***
-
- * Smarty_Compiler.class.php: Fix bug with $smarty.cookies.
-
- * TESTIMONIALS: *** empty log message ***
-
-2002-03-15 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- docs/designers.sgml: update Changelog
-
- * plugins/modifier.indent.php
- plugins/modifier.wordwrap.php: add wordwrap and indent to repository
-
-2002-03-14 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- remove show_info_include and show_info_header functions
-
-2002-03-13 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.fetch.php: update fetch function
-
- * plugins/function.fetch.php: update fetch function with new parameters
-
-2002-03-12 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml: update doc tables
-
- * docs/designers.sgml: update docs columns
-
- * docs/getting-started.sgml
- docs/appendixes.sgml: update docs
-
- * TESTIMONIALS
- docs/appendixes.sgml: update syntax error in docs, add to testimonials
-
-2002-03-04 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- README: update FAQ, README with digest mode info
-
-2002-03-02 Monte Ohrt <monte@ispi.net>
-
- * QUICKSTART: update quickstart
-
- * Smarty.class.php:
- change behavior so cache_lifetime = 0 never expires (instead of always regenerate)
-
-2002-03-01 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml: update doc example
-
-2002-03-01 Andrei Zmievski <andrei@php.net>
-
- * CREDITS
- RELEASE_NOTES
- TODO
- NEWS: *** empty log message ***
-
-2002-03-01 Monte Ohrt <monte@ispi.net>
-
- * docs/appendixes.sgml
- docs/designers.sgml
- docs/getting-started.sgml
- docs/programmers.sgml: update document id tags
-
- * docs.sgml: remove docs.sgml
-
- * RESOURCES
- Smarty.class.php: update resources
-
-2002-02-28 Andrei Zmievski <andrei@php.net>
-
- * TESTIMONIALS
- docs/appendixes.sgml
- docs/designers.sgml
- docs/programmers.sgml: *** empty log message ***
-
-2002-02-27 Andrei Zmievski <andrei@php.net>
-
- * plugins/function.eval.php
- docs/designers.sgml: *** empty log message ***
-
-2002-02-27 Monte Ohrt <monte@ispi.net>
-
- * plugins/function.eval.php: added eval function to plugin dir
-
-2002-02-27 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
-2002-02-27 Monte Ohrt <monte@ispi.net>
-
- * docs/designers.sgml: fix syntax error
-
- * docs/appendixes.sgml
- docs/designers.sgml
- docs/getting-started.sgml
- docs/programmers.sgml: convert technical notes to docbook format
-
- * NEWS
- docs/designers.sgml: added "eval" plugin docs
-
-2002-02-26 Andrei Zmievski <andrei@php.net>
-
- * docs/programmers.sgml
- docs/designers.sgml
- docs/appendixes.sgml
- docs/getting-started.sgml
- docs/html-common.dsl
- docs/.cvsignore: *** empty log message ***
-
- * docs/appendixes.sgml
- docs/common.dsl
- docs/designers.sgml
- docs/getting-started.sgml
- docs/html-common.dsl
- docs/html.dsl
- docs/manual.sgml
- docs/preface.sgml
- docs/programmers.sgml: Split up docs.
-
-2002-02-25 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml: *** empty log message ***
-
-2002-02-22 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: update docs
-
-2002-02-22 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml
- AUTHORS
- NEWS: *** empty log message ***
-
-2002-02-21 Monte Ohrt <monte@ispi.net>
-
- * Config_File.class.php
- NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml: update misc changes
-
-2002-02-21 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml: *** empty log message ***
-
-2002-02-20 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: misc updates
-
-2002-02-20 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml: *** empty log message ***
-
- * Smarty.class.php
- plugins/function.assign.php
- plugins/function.assign_debug_info.php
- plugins/function.counter.php
- plugins/function.fetch.php
- plugins/function.math.php
- plugins/function.popup.php
- plugins/function.popup_init.php
- plugins/modifier.escape.php: Fixup some naming.
-
-2002-02-20 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: update docs
-
-2002-02-20 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml: *** empty log message ***
-
-2002-02-20 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- docs.sgml
- plugins/modifier.escape.php:
- removed global vars from fetch function, added attrs to escape modifier
-
- * docs.sgml: add plugin chapter outline
-
-2002-02-19 Monte Ohrt <monte@ispi.net>
-
- * README
- RELEASE_NOTES
- RESOURCES
- Smarty.class.php
- docs.sgml
- BUGS
- FAQ
- INSTALL
- QUICKSTART: update docs
-
-2002-02-19 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml: Updated resources docs.
-
- * README: *** empty log message ***
-
- * docs.sgml: Updated description of {$smarty} variable.
-
- * BUGS
- FAQ
- INSTALL
- QUICKSTART
- RELEASE_NOTES
- docs.sgml: Remove PEAR notes.
-
-2002-02-18 Andrei Zmievski <andrei@php.net>
-
- * Config_File.class.php
- NEWS: Removed dependency on PEAR.
-
-2002-02-18 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- docs.sgml
- plugins/function.popup_init.php: add src attribute to popup_init
-
-2002-02-15 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php
- plugins/modifier.debug_print_var.php
- NEWS
- Smarty.class.php: Performance enhancements.
-
-2002-02-06 Andrei Zmievski <andrei@php.net>
-
- * plugins/function.html_options.php:
- Fix html_options output to be XHTML compatible.
-
-2002-02-05 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php: Fix up plugin inclusion.
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- TODO
- plugins/function.html_select_date.php
- plugins/function.html_select_time.php
- plugins/modifier.date_format.php: Fix plugin directory access.
-
-2002-02-04 Andrei Zmievski <andrei@php.net>
-
- * .cvsignore
- Smarty_Compiler.class.php: *** empty log message ***
-
-2002-01-31 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php
- TODO
- plugins/function.assign.php
- plugins/function.assign_debug_info.php
- plugins/function.counter.php
- plugins/function.fetch.php
- plugins/function.html_options.php
- plugins/function.html_select_date.php
- plugins/function.html_select_time.php
- plugins/function.math.php
- plugins/function.popup.php
- plugins/function.popup_init.php
- plugins/modifier.capitalize.php
- plugins/modifier.count_characters.php
- plugins/modifier.count_paragraphs.php
- plugins/modifier.count_sentences.php
- plugins/modifier.count_words.php
- plugins/modifier.date_format.php
- plugins/modifier.debug_print_var.php
- plugins/modifier.default.php
- plugins/modifier.escape.php
- plugins/modifier.lower.php
- plugins/modifier.regex_replace.php
- plugins/modifier.replace.php
- plugins/modifier.spacify.php
- plugins/modifier.string_format.php
- plugins/modifier.strip_tags.php
- plugins/modifier.truncate.php
- plugins/modifier.upper.php
- plugins/shared.make_timestamp.php
- templates/index.tpl
- AUTHORS
- CREDITS
- Config_File.class.php
- README: Implemented plugin architecture.
-
- * NEWS: *** empty log message ***
-
-2002-01-30 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- docs.sgml: added modifiers wordwrap and indent
-
-2002-01-28 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- docs.sgml:
- add support for is-modified-since headers, adjust a doc example
-
-2002-01-24 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: cleanup formatting
-
- * NEWS
- Smarty.class.php
- docs.sgml: update ChangeLog, remove insert_tag_check parameter
-
-2002-01-24 Andrei Zmievski <andrei@php.net>
-
- * plugins/standard.plugin.php: *** empty log message ***
-
-2002-01-24 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: fix syntax error
-
- * Smarty.class.php: removed unneccesary test from fetch()
-
-2002-01-23 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php: update overlib fixes
-
- * NEWS: update changelog
-
- * FAQ
- NEWS
- RESOURCES
- Smarty.addons.php: updated overlib fixes
-
-2001-12-31 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: Fixed compile_id problem.
-
-2001-12-28 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- fixed problem with using assigned var with include_php filepath
-
-2001-12-21 Monte Ohrt <monte@ispi.net>
-
- * RESOURCES: update RESOURCES
-
-2001-12-20 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- README: update FAQ
-
-2001-12-18 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- docs.sgml
- Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php: update version numbers
-
-2001-12-18 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: Fixed clear_cache().
-
-2001-12-14 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.addons.php:
- fixed bug in smarty_make_timestamp introduced in PHP 4.1.0
-
-2001-12-13 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php
- docs.sgml: update default function args, fix cached insert debug timing
-
-2001-12-12 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: fix syntax error in documentation
-
- * Smarty.class.php: update default template handling functionality
-
-2001-12-11 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php: update file fetching logic
-
-2001-12-11 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: Added 'script' attribute to {insert..}.
-
-2001-12-10 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php: added default template function handler
-
- * Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php: update version numbers in files to 1.5.1
-
-2001-12-10 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: Removed error message from the _read_file() method.
-
- * Smarty.class.php: Fix check for compile and cache IDs.
-
-2001-12-06 Monte Ohrt <monte@ispi.net>
-
- * QUICKSTART: fix spelling error in QUICKSTART
-
- * docs.sgml: fixed spelling errors in documenation
-
- * Smarty_Compiler.class.php
- docs.sgml
- Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php: commit 1.5.0 release
-
- * RESOURCES
- docs.sgml: added RESOURCES file
-
-2001-12-05 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Refactor.
-
-2001-12-05 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty_Compiler.class.php
- docs.sgml: added assign to include and php_include
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml: *** empty log message ***
-
-2001-12-04 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty_Compiler.class.php: Formatting.
-
-2001-12-04 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- NEWS
- Smarty.class.php: update ChangeLog
-
-2001-12-04 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: Formatting.
-
-2001-12-04 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: removed SMARTY_DIR setting in constructor
-
- * Smarty.class.php: fix Smarty.class.php indention error
-
- * Smarty.class.php: update trusted logic
-
-2001-12-03 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php:
- fix up is_secure, is_trusted, make _parse_tpl_path function
-
- * Smarty.class.php: fix problem with testing SMARTY_DIR as empty
-
- * NEWS
- docs.sgml: update documentation, change log
-
- * Smarty.class.php:
- update constructor to check for SMARTY_DIR before assigning
-
-2001-12-03 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: *** empty log message ***
-
-2001-12-03 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- INSTALL
- RELEASE_NOTES: update a few files
-
- * NEWS
- QUICKSTART
- Smarty.class.php
- docs.sgml: added trusted_dir functionality, cleaned up secure_dir logic
-
-2001-12-03 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * NEWS
- Smarty.class.php: - Introduced $compile_id class variable.
- - Fixed a situation where if $cache_id and $compile_id were both null
- they were passed to auto functions as empty string instead of null.
-
-2001-11-30 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php:
- change variable names in fetch() fuction to smarty_* to avoid namespace conflicts
-
- * NEWS
- Smarty.class.php: fixed bug in _rm_auto with catenated null values
-
-2001-11-29 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty_Compiler.class.php: Added $smarty.section.* syntax.
-
- * Smarty_Compiler.class.php: Made 'name' attribute optional for {foreach}.
-
-2001-11-29 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- index.php: remove assign "now" in index.tpl
-
-2001-11-29 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php: Fix formatting.
-
-2001-11-28 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.class.php
- docs.sgml:
- removed return statements from _read_cache_file (how did they get in there?)
-
-2001-11-27 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml
- NEWS
- Smarty.addons.php
- Smarty.class.php:
- fixed bugs and added assign attribute to several functions
-
-2001-11-27 Andrei Zmievski <andrei@php.net>
-
- * NEWS: Some rewording.
-
- * Smarty_Compiler.class.php: Fix $smarty.capture access.
-
- * TODO: *** empty log message ***
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- Made {config_load ..} merge globals from each config file only once per scope.
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php: - Added {foreach ...}.
- - Made certain $smarty.* references handled at compilation time.
-
-2001-11-26 Monte Ohrt <monte@ispi.net>
-
- * Config_File.class.php
- NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml: commit cache handler functionality
-
-2001-11-20 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.addons.php
- Smarty_Compiler.class.php: Various fixes and additions.
-
- * NEWS
- index.php: *** empty log message ***
-
-2001-11-05 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: changed _read_file parameter from $end to $lines
-
- * NEWS
- Smarty.class.php: fixed is_cache, make cache reading more efficient
-
-2001-11-02 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- NEWS: update FAQ with mailing list Reply-To header FAQ
-
- * NEWS
- Smarty.class.php
- index.php: supress fopen errors, return false if cache file won't load
-
-2001-11-01 Monte Ohrt <monte@ispi.net>
-
- * QUICKSTART
- docs.sgml
- index.php: update QUICKSTART guide with index key example
-
- * Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml: commit all updates for 1.4.6
-
-2001-11-01 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
-2001-10-30 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php: fix assign function problem with empty value passed
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php
- templates/debug.tpl:
- fixed bug in assign function when passing an empty value
-
-2001-10-26 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php
- Smarty.class.php
- index.php: fix minor typo in debug code
-
-2001-10-26 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Typo.
-
-2001-10-26 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php:
- update debug console output, handle html encoding correctly
-
-2001-10-26 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- templates/debug.tpl: Debug formatting.
-
- * Smarty.class.php: Disable rmdir warning.
-
-2001-10-26 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php
- Smarty.class.php
- templates/debug.tpl: update debugging to expand array variables
-
- * Smarty.class.php
- docs.sgml:
- update docs for fetching only timestamp with custom template source functions
-
- * Smarty.addons.php: fix debug console error
-
-2001-10-26 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml: Typos.
-
- * Smarty.addons.php: Cleanup whitespace.
-
- * Smarty_Compiler.class.php: Clean up whitespace.
-
- * Smarty.class.php: Cleaning up code, formatting mostly.
-
- * NEWS: *** empty log message ***
-
-2001-10-25 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- docs.sgml: update documentation to current version
-
- * NEWS
- Smarty.addons.php:
- updated fetch to give proper warning when fetching unreadable or nonexistant files
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- fixed problem with newline at the end of compiled templates
-
- * NEWS
- Smarty.class.php: recompile cache if config file gets modified too.
-
- * NEWS
- Smarty.class.php:
- added feature to regenerate cache if compile_check is enabled and an
- involved template is modified
-
-2001-10-23 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: fix indent for insert tags in debug console
-
- * templates/debug.tpl: update debug.tpl file format
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- templates/debug.tpl:
- update execution time debugging, move into include list
-
-2001-10-10 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php:
- fixed up execution time output in debug console
-
-2001-10-09 Andrei Zmievski <andrei@php.net>
-
- * Config_File.class.php
- NEWS
- Smarty.class.php
- TODO: Added support for hidden config vars.
-
-2001-10-04 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- templates/debug.tpl: added execution times to debug console
-
-2001-10-02 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Add space.
-
-2001-10-01 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Fix reference to compile_id.
-
-2001-09-28 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php: Added postfilter functions.
-
-2001-09-26 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- docs.sgml: Rename to clear_compiled_tpl().
-
-2001-09-25 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty_Compiler.class.php:
- Fixed line number reporting when removing comments.
-
-2001-09-20 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- RELEASE_NOTES
- Smarty.addons.php: made html_options output xhtml compatible
-
-2001-09-19 Monte Ohrt <monte@ispi.net>
-
- * Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php
- templates/debug.tpl: updated version numbers
-
-2001-09-16 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- NEWS
- docs.sgml: fix doc error with insert function
-
-2001-09-06 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
-2001-08-31 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update ChangeLog
-
- * overlib.js
- Smarty.addons.php
- Smarty.class.php
- docs.sgml:
- update overlib to 3.50, adjust addon code so that the overlib.js file isn't modified
-
-2001-08-31 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: - compile_id changes
-
- * NEWS
- Smarty.addons.php: - compile_id support
- - new options for html_select_date
-
-2001-08-23 Andrei Zmievski <andrei@php.net>
-
- * TODO: *** empty log message ***
-
-2001-08-10 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php:
- Modified to pass Smarty object as second parameter to insert functions.
- Also moved _smarty_mod_handler() and _smarty_insert_handler() into the class.
-
- * NEWS
- Smarty_Compiler.class.php:
- Passing Smarty as second parameter to prefilter functions.
-
-2001-08-09 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
-2001-08-09 Monte Ohrt <monte@ispi.net>
-
- * templates/index.tpl
- Smarty.class.php: add smarty.now variable to template
-
-2001-08-06 Monte Ohrt <monte@ispi.net>
-
- * templates/index.tpl: change config_load section back to setup
-
-2001-08-06 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php: Optimize a bit.
-
-2001-08-04 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: update capture documentation
-
-2001-08-03 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- NEWS
- Smarty.class.php:
- fix bug with URL controlled debugging, works now (Monte)
-
-2001-08-01 Andrei Zmievski <andrei@php.net>
-
- * Config_File.class.php: *** empty log message ***
-
- * Smarty_Compiler.class.php
- Smarty.class.php: - Fixed some E_NOTICE stuff in compiler.
- - Generalized assign_smarty_interface() a bit.
-
-2001-07-24 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty_Compiler.class.php
- TODO: See ChangeLog for details.
-
-2001-07-20 Andrei Zmievski <andrei@php.net>
-
- * Config_File.class.php: Booleanize case-insensitively.
-
-2001-07-17 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update ChangeLog
-
- * Smarty.class.php
- docs.sgml: put SMARTY_DIR on Config_File require
-
-2001-07-11 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml
- FAQ
- NEWS
- Smarty.class.php:
- updated security to not include insecure docs, only warning
-
-2001-07-10 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Adding 'sizeof' as an allowed {if} function.
-
-2001-07-06 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
-2001-07-06 Monte Ohrt <monte@ispi.net>
-
- * Config_File.class.php
- NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php: update version number to 1.4.4
-
- * NEWS
- Smarty.addons.php
- Smarty_Compiler.class.php
- docs.sgml
- templates/header.tpl
- templates/index.tpl: update documenatation, template examples
-
-2001-07-03 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: Implemented access to request vars via $smarty var.
-
- * NEWS
- Smarty_Compiler.class.php:
- Fixed a bug with parsing function arguments in {if} tags.
-
-2001-06-30 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update ChangeLog
-
-2001-06-29 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php
- Smarty.class.php
- docs.sgml
- overlib.js:
- moved overlib to separate file, added SMARTY_DIR, documented. added much documentation
-
-2001-06-29 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- RELEASE_NOTES
- TODO: *** empty log message ***
-
-2001-06-29 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- docs.sgml
- index.php
- templates/debug.tpl
- templates/header.tpl
- templates/index.tpl: update release notes
-
-2001-06-27 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: *** empty log message ***
-
- * NEWS
- Smarty_Compiler.class.php: Implemented 'step' section attribute.
-
- * Smarty_Compiler.class.php: Negative values of 'max' will mean no max.
-
- * AUTHORS
- NEWS: *** empty log message ***
-
-2001-06-26 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- index.php: Added 'max' and 'start' section attributes.
- Added 'total' and 'iteration' section properties.
-
-2001-06-25 Andrei Zmievski <andrei@php.net>
-
- * Config_File.class.php
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php: Update version numbers.
-
-2001-06-23 Andrei Zmievski <andrei@php.net>
-
- * TODO: *** empty log message ***
-
-2001-06-21 Andrei Zmievski <andrei@php.net>
-
- * Config_File.class.php
- NEWS: Fixed booleanization bug.
-
-2001-06-20 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml:
- update documents to reflect changes to cached content & debugging
-
-2001-06-20 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- Smarty.class.php: Remove debug output for cached and fetched cases.
-
-2001-06-20 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: update include_info to false
-
- * Smarty.class.php
- docs.sgml
- index.php
- templates/footer.tpl:
- moved debug logic into Smarty completely, created flags for it
-
-2001-06-19 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- Smarty.class.php
- templates/debug.tpl: *** empty log message ***
-
- * NEWS
- Smarty.class.php: Remove unneeded debug functions.
-
-2001-06-19 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- docs.sgml
- templates/debug.tpl
- templates/footer.tpl: commit updates, add debug template
-
-2001-06-19 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- TODO:
- Moved config loading code inside main class, the compiled template now
- simply calls that method.
-
-2001-06-15 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- templates/index.tpl: * moved config array into class itself
- * added 'scope' attribute for config_load
-
- * Smarty_Compiler.class.php
- Smarty.addons.php
- Smarty.class.php: Finishing up secure mode.
-
-2001-06-15 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update ChangeLog
-
- * Smarty_Compiler.class.php: cleaned up logic of if statement security
-
- * Smarty_Compiler.class.php: update if logic to cover more situations
-
- * Smarty_Compiler.class.php
- docs.sgml: update if statement security feature
-
-2001-06-14 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- Smarty.class.php: *** empty log message ***
-
- * NEWS
- Smarty_Compiler.class.php:
- Fixed a bug with quoted strings inside if statements.
-
-2001-06-13 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php
- Smarty.class.php: added secure_dir array for multiple secure directories
-
- * Smarty.addons.php: update fetch funtion to respect security setting
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- docs.sgml: update documentation, changelog
-
- * Smarty.addons.php
- Smarty.class.php: moved _extract setting to assign functions
-
- * Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php:
- added assign/unassign custom functions, ability to re-extract tpl_vars
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml
- index.php: commit security features
-
-2001-06-11 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Version variable typo.
-
-2001-06-05 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php:
- Create config object in fetch() or just set the config path if it already
- exists.
-
-2001-06-04 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: *** empty log message ***
-
- * NEWS
- Smarty_Compiler.class.php:
- Fixed a problem with $<number> inside strip tags.
-
-2001-05-31 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Config_File.class.php: Allow empty config_path.
-
-2001-05-29 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- docs.sgml
- NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php: update version numbers
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml: moved version variable to internal variable
-
-2001-05-22 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php:
- Moved $_smarty_sections and $_smarty_conf_obj into Smarty class.
-
-2001-05-18 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update ChangeLog
-
- * FAQ
- QUICKSTART: update FAQ, QUICKSTART for windows include_path setup
-
- * configs/test.conf: added configs directory to cvs
-
-2001-05-18 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Use compiler_class for including the file.
-
-2001-05-18 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: fix typo
-
-2001-05-16 Monte Ohrt <monte@ispi.net>
-
- * README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php: update files to version 1.4.1
-
- * NEWS: update ChangeLog
-
-2001-05-15 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * index.php: forget that!
-
- * NEWS
- Smarty_Compiler.class.php
- index.php: Fixed a few E_NOTICE warnings.
-
-2001-05-09 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- docs.sgml: update dates versions
-
-2001-05-09 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty.class.php:
- Use absolute paths when requiring/including Smart components.
-
- * NEWS: *** empty log message ***
-
- * Smarty.class.php: Use write mode instead of append.
-
-2001-05-02 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty_Compiler.class.php: Fix indexing by section properties.
-
-2001-05-02 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update changelog
-
- * Smarty.class.php: remove period from syntax error
-
-2001-05-02 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Double-quote the attribute values by default.
-
-2001-04-30 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- NEWS: added simple {capture} logic
-
-2001-04-30 Andrei Zmievski <andrei@php.net>
-
- * TODO: *** empty log message ***
-
- * Smarty_Compiler.class.php
- Smarty.class.php: Fix passing config vars to included files.
-
- * Smarty.class.php
- Smarty_Compiler.class.php: Fix inclusion again.
-
-2001-04-30 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- RELEASE_NOTES
- Smarty.class.php
- misc/fix_vars.php
- NEWS: update paths for windows (c:)
-
-2001-04-28 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php: Fix passing variables to included files.
-
- * templates/index.tpl: *** empty log message ***
-
-2001-04-27 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Fix includes.
-
-2001-04-26 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php
- docs.sgml
- Smarty.class.php: Formatting mostly.
-
- * Smarty_Compiler.class.php
- Config_File.class.php: *** empty log message ***
-
-2001-04-26 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- docs.sgml
- FAQ
- NEWS
- QUICKSTART
- RELEASE_NOTES
- Smarty.class.php: update docs with new changes
-
-2001-04-26 Andrei Zmievski <andrei@php.net>
-
- * RELEASE_NOTES: *** empty log message ***
-
- * docs.sgml
- templates/index.tpl
- NEWS
- Smarty_Compiler.class.php: Added ability to reference object properties.
-
-2001-04-25 Andrei Zmievski <andrei@php.net>
-
- * README
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml
- AUTHORS
- Config_File.class.php
- CREDITS
- RELEASE_NOTES
- NEWS: *** empty log message ***
-
- * docs.sgml: Docs on new parameter to custom functions.
-
- * NEWS: *** empty log message ***
-
- * Smarty_Compiler.class.php:
- Changing the way tpl vars are referenced and passing smarty object
- to custom functions.
-
- * RELEASE_NOTES
- docs.sgml: Fixing docs a bit.
-
-2001-04-24 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml: Docs for $compiler_class and compiler functions.
-
- * templates/index.tpl: *** empty log message ***
-
- * Smarty_Compiler.class.php: Remove debugging.
-
-2001-04-24 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: update compiler function docs
-
-2001-04-24 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- templates/index.tpl: Added compiler function support.
-
-2001-04-24 Monte Ohrt <monte@ispi.net>
-
- * RELEASE_NOTES
- Smarty.class.php:
- update notes, change show_info_header to false by default
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml
- CREDITS
- FAQ
- NEWS
- README
- RELEASE_NOTES: update documenation, bug fixes
-
-2001-04-24 Andrei Zmievski <andrei@php.net>
-
- * misc/fix_vars.php: Hopefully fix for sure.
-
-2001-04-23 Monte Ohrt <monte@ispi.net>
-
- * misc/fix_vars.php: uncomment copy/unlink
-
-2001-04-23 Andrei Zmievski <andrei@php.net>
-
- * misc/fix_vars.php: Do it more thoroughly.
-
- * misc/fix_vars.php: check for }
-
-2001-04-22 Andrei Zmievski <andrei@php.net>
-
- * misc/fix_vars.php: Fix variable parsing.
-
-2001-04-20 Monte Ohrt <monte@ispi.net>
-
- * misc/fix_vars.php: fix problem with 4.0.5-dev and preg_replace_callback
-
-2001-04-19 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- docs.sgml
- misc/fix_vars.php
- NEWS
- RELEASE_NOTES
- Smarty.class.php: update notes/documentation
-
- * NEWS
- README
- RELEASE_NOTES
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml: update files for 1.4.0 release
-
-2001-04-16 Andrei Zmievski <andrei@php.net>
-
- * misc/fix_vars.php: Added fix_vars.php script.
-
-2001-04-16 Monte Ohrt <monte@ispi.net>
-
- * QUICKSTART
- RELEASE_NOTES
- docs.sgml
- templates/index.tpl:
- update RELEASE_NOTES & scripts with new section var syntax
-
-2001-04-13 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: * Implement new variable format parser.
- * Optimizing config load a bit.
-
-2001-04-13 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- NEWS
- RELEASE_NOTES
- Smarty.class.php:
- added $check_cached_insert_tags to speed up cached pages if
- {insert ...} is not used (Monte)
-
-2001-04-12 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- RELEASE_NOTES: *** empty log message ***
-
- * Smarty_Compiler.class.php: Remove redundant functions.
-
- * Smarty.class.php: Formatting.
-
-2001-04-12 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: update file: parsing
-
- * Smarty.class.php
- docs.sgml: update documentation
-
-2001-04-12 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- TODO: *** empty log message ***
-
-2001-04-11 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- QUICKSTART
- RELEASE_NOTES: added RELEASE_NOTES file to cvs
-
- * NEWS
- docs.sgml: update ChangeLog, update documentation
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- templates/index.tpl:
- update Smarty to compile at run-time. added ability to get files from
- absolute paths, added work around for LOCK_EX and windows, changed a few
- file permissions to be more secure.
-
-2001-03-29 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.addons.php:
- allow arbitrary date strings instead of just timestamps
-
-2001-03-28 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- docs.sgml
- FAQ
- NEWS
- README
- Smarty.addons.php:
- update version in class, update docs for count_ and new vars
-
- * templates/index.tpl
- docs.sgml: update docs, example template
-
-2001-03-28 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Some variable renaming.
-
-2001-03-23 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php
- NEWS: Fixed nested include infinite repeat bug.
-
-2001-03-23 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: fix version number
-
- * Smarty.class.php
- NEWS: added optional HTML header to output
-
-2001-03-22 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Fixed inclusion of dynamic files.
-
-2001-03-16 Andrei Zmievski <andrei@php.net>
-
- * Smarty_Compiler.class.php: Fixing the config_load scoping.
-
- * Smarty_Compiler.class.php: making config variables global for now.
-
-2001-03-15 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty_Compiler.class.php:
- * Includes are now always done via generated function call to protect
- namespace.
- * config_load now always uses global config object to improve
- performance.
-
-2001-03-13 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: update math documentation with format attribute
-
-2001-03-11 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml
- NEWS
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php: update math function with format attribute
-
-2001-03-10 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php: *** empty log message ***
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php: Added html_select_time custom function.
-
-2001-03-08 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php
- NEWS
- README
- Smarty.addons.php: rename 1.3.1b to 1.3.1pl1
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php: update version numbers, changelog
-
- * Smarty.class.php
- Smarty_Compiler.class.php:
- moved _syntax_error to Smarty_Compiler.class.php
-
- * Smarty.class.php
- docs.sgml:
- missing _syntax_error function recovered. fixed minor syntax in docs
-
-2001-03-07 Monte Ohrt <monte@ispi.net>
-
- * QUICKSTART
- README
- Smarty.addons.php
- Smarty.class.php
- Smarty_Compiler.class.php
- BUGS
- INSTALL
- NEWS: update everything to 1.3.1
-
-2001-03-03 Monte Ohrt <monte@ispi.net>
-
- * Smarty_Compiler.class.php
- Smarty.class.php: fixed bug with cached insert tags
-
-2001-03-02 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- Smarty_Compiler.class.php:
- fix cache fuctions with separated compiled class
-
- * FAQ
- NEWS
- docs.sgml: update changelog
-
-2001-03-02 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty_Compiler.class.php: Added 'first' and 'last' section properties.
-
-2001-03-02 Monte Ohrt <monte@ispi.net>
-
- * TODO: remove compiling separation TODO
-
- * Smarty_Compiler.class.php
- Smarty.addons.php
- Smarty.class.php: update function headers
-
- * templates/index.tpl
- NEWS
- Smarty.class.php
- Smarty_Compiler.class.php
- index.php: split out compiling code for faster execution
-
- * Smarty.class.php: fixed a few warning messages
-
- * Smarty.addons.php
- Smarty.class.php
- docs.sgml
- NEWS: added fetch, unregister mod/fun, updated docs
-
-2001-03-01 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php: added "int" to available list
-
- * docs.sgml
- FAQ
- Smarty.class.php: update FAQ, add math functions & update documetation
-
- * index.php
- Smarty.addons.php
- Smarty.class.php
- docs.sgml: fixed literal tags and other optional delimiters
-
-2001-02-26 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php:
- Added index_prev, index_next section properties and ability to
- index by them.
-
- * NEWS
- Smarty.addons.php
- Smarty.class.php: Reverting the plugins patch - needs more thought.
-
- * Smarty.class.php: Fixing plugin loading.
-
-2001-02-23 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- Smarty.class.php
- plugins/standard.plugin.php
- NEWS: Added plugin functionality.
-
-2001-02-22 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml
- templates/index.tpl
- NEWS
- README
- Smarty.class.php: fixed issue with php tags executed in literal blocks
-
-2001-02-21 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update changelog for LGPL change
-
- * Smarty.class.php
- docs.sgml
- README
- Smarty.addons.php: updated version numbers to 1.3.0
-
- * NEWS
- templates/index.tpl: update changelog, rearrange index.tpl file
-
-2001-02-21 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: *** empty log message ***
-
-2001-02-21 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: update parameters for is_cached and fetch
-
-2001-02-21 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: *** empty log message ***
-
-2001-02-21 Monte Ohrt <monte@ispi.net>
-
- * NEWS
- Smarty.addons.php
- docs.sgml: update docs, remove header function from addons
-
-2001-02-20 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- NEWS: update changelog
-
- * TODO: update todo
-
- * TODO: update todo list
-
- * Smarty.class.php: update php tag handling logic
-
-2001-02-19 Monte Ohrt <monte@ispi.net>
-
- * index.php
- Config_File.class.php
- FAQ
- Smarty.class.php
- docs.sgml: fixed <?php tag at beginning of files, updated docs
-
-2001-02-19 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php: *** empty log message ***
-
-2001-02-13 Andrei Zmievski <andrei@php.net>
-
- * TODO: *** empty log message ***
-
-2001-02-12 Andrei Zmievski <andrei@php.net>
-
- * templates/index.tpl
- Smarty.class.php: *** empty log message ***
-
-2001-02-10 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: remove unneeded preg_match
-
- * Smarty.class.php: remove comment
-
- * Smarty.class.php: updated php escape to handle <script language="php">
-
- * NEWS
- Smarty.class.php: fix php tag escapement logic
-
- * NEWS: commit changelog
-
- * docs.sgml: update header docs
-
- * docs.sgml
- Smarty.addons.php
- Smarty.class.php: added header custom function
-
-2001-02-09 Monte Ohrt <monte@ispi.net>
-
- * index.php
- templates/header.tpl
- templates/index.tpl
- INSTALL
- QUICKSTART
- docs.sgml: update documentation, add examples to test script.
-
-2001-02-08 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: *** empty log message ***
-
-2001-02-08 Monte Ohrt <monte@ispi.net>
-
- * COPYING.lib: added COPYING.lib
-
- * COPYING
- Config_File.class.php
- Smarty.addons.php
- Smarty.class.php
- docs.sgml: changed license to LGPL for commercial use
-
- * docs.sgml
- Smarty.class.php: fix clear_assign syntax error
-
-2001-02-07 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: added ability to pass array to clear_assign
-
- * index.php
- templates/index.tpl
- docs.sgml:
- update documentation, remove tests from index file and template
-
-2001-02-07 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php: Adding file locking.
-
- * templates/index.tpl
- Smarty.addons.php
- Smarty.class.php
- index.php: More cache work.
-
-2001-02-06 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml
- Smarty.class.php:
- change register_ function names, update documents with tables
-
-2001-02-06 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- templates/index.tpl: Reworking and optimizing the cache system.
-
- * Smarty.class.php: Restoring ?> in patterns.
-
-2001-02-05 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- docs.sgml: update cache directory creation logic
-
-2001-02-05 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Removing once-only subpattern for now..
-
- * Smarty.class.php: Fix modifier arg parsing.
-
-2001-02-02 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- Smarty.class.php
- templates/index.tpl: See changelog.
-
-2001-02-01 Andrei Zmievski <andrei@php.net>
-
- * README: *** empty log message ***
-
- * Smarty.class.php: Use 'echo' instead of 'print'.
-
- * Smarty.addons.php: *** empty log message ***
-
-2001-02-01 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: rearranged variables at top of script
-
-2001-02-01 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Retabbing.
-
- * templates/index.tpl
- Smarty.class.php
- index.php: *** empty log message ***
-
-2001-02-01 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: update caching logic
-
- * Smarty.class.php: fixed clear_all_cache bugs
-
- * Smarty.class.php: fix .cache check
-
- * docs.sgml
- FAQ
- Smarty.class.php: update .che to .cache
-
- * FAQ
- Smarty.class.php
- docs.sgml: updated docs for caching, added clear_all_cache() directive
-
-2001-01-31 Monte Ohrt <monte@ispi.net>
-
- * index.php
- templates/index.tpl
- docs.sgml: upated docs for date_format and html_options
-
-2001-01-31 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty.addons.php
- index.php: Added ability to pass 'options' attribute to html_options.
-
- * Smarty.addons.php
- Smarty.class.php
- docs.sgml
- index.php
- templates/index.tpl
- Config_File.class.php
- NEWS
- README: Reworking, simplifying, and speeding up cache implementation.
- Fixing the infelicity where you couldn't have '|' and ':' inside
- quoted modifier arguments.
-
-2001-01-31 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php
- index.php
- templates/index.tpl: removed DEBUG lines
-
-2001-01-30 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: changed default expire to 3600
-
- * Config_File.class.php
- NEWS
- README
- Smarty.addons.php
- Smarty.class.php: updated version numbers
-
- * docs.sgml
- NEWS
- Smarty.class.php:
- added caching, force compile, force cache, misc performance updates
-
-2001-01-30 Andrei Zmievski <andrei@php.net>
-
- * NEWS: *** empty log message ***
-
- * Smarty.class.php
- templates/index.tpl: Remove debug message.
-
- * Smarty.class.php
- templates/index.tpl: Fixing the compile directory mayhem...
-
- * Smarty.class.php:
- Fix problem with {strip} around {section} and {include}
-
- * Smarty.addons.php: *** empty log message ***
-
-2001-01-29 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- NEWS
- README
- Smarty.class.php: fixed PHP_VERSION check, misc doc updates
-
- * index.php
- Config_File.class.php
- NEWS
- QUICKSTART
- README
- Smarty.addons.php
- Smarty.class.php
- docs.sgml: updated for 1.2.1 compile_dir changes, misc doc updates
-
-2001-01-26 Monte Ohrt <monte@ispi.net>
-
- * BUGS
- README: update BUGS and README files
-
- * FAQ: updated FAQ
-
- * Config_File.class.php
- FAQ
- NEWS
- README
- Smarty.addons.php
- docs.sgml
- templates/index.tpl
- AUTHORS: update again
-
-2001-01-26 Andrei Zmievski <andrei@php.net>
-
- * docs.sgml
- NEWS
- README
- Smarty.class.php
- templates/index.tpl: *** empty log message ***
-
- * Smarty.class.php
- index.php
- templates/index.tpl: Added ability to index by key.
-
-2001-01-25 Monte Ohrt <monte@ispi.net>
-
- * NEWS: update changelog
-
- * README
- Smarty.addons.php
- Smarty.class.php
- docs.sgml
- AUTHORS: updated versions to 1.1.0
-
- * docs.sgml
- templates/index.tpl
- Config_File.class.php
- Smarty.addons.php
- Smarty.class.php: update copyright notice
-
- * Config_File.class.php
- Smarty.addons.php
- Smarty.class.php
- docs.sgml: added misc info
-
-2001-01-24 Monte Ohrt <monte@ispi.net>
-
- * Smarty.addons.php
- index.php
- templates/index.tpl
- Config_File.class.php: initial commit
-
-2001-01-23 Monte Ohrt <monte@ispi.net>
-
- * docs.sgml: fix typo
-
-2001-01-22 Monte Ohrt <monte@ispi.net>
-
- * doc.sgm
- docs.sgml: updated docs, renamed file
-
- * FAQ: updated FAQ
-
- * NEWS
- README: updated Changelog and Readme
-
- * doc.sgm: updated doc.sgm error
-
- * AUTHORS
- COPYING
- INSTALL
- NEWS
- QUICKSTART: misc doc changes, added AUTHORS, COPYING
-
-2001-01-22 Andrei Zmievski <andrei@php.net>
-
- * NEWS
- templates/index.tpl: *** empty log message ***
-
- * Smarty.class.php
- templates/index.tpl:
- Fixed bug that wouldn't let you do specify non-array values for 'loop'
- attribute.
-
-2001-01-22 Monte Ohrt <monte@ispi.net>
-
- * QUICKSTART: updated QUICKSTART
-
- * BUGS
- FAQ
- INSTALL
- README
- doc.sgm: added BUGS and INSTALL, updated docs, FAQ, README
-
-2001-01-21 Monte Ohrt <monte@ispi.net>
-
- * FAQ
- doc.sgm: updates to FAQ and docs
-
-2001-01-19 Monte Ohrt <monte@ispi.net>
-
- * FAQ: initial commit of FAQ
-
- * QUICKSTART
- README
- doc.sgm
- index.php:
- updated README, doc.sgm with preg_replace() parameter issue. also removed "./" from index.php file
-
- * NEWS: initial commit of changelog
-
- * doc.sgm
- QUICKSTART: update quickstart text
-
-2001-01-19 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Fix the compiled template check.
-
-2001-01-18 Andrei Zmievski <andrei@php.net>
-
- * doc.sgm: *** empty log message ***
-
-2001-01-18 Monte Ohrt <monte@ispi.net>
-
- * index.php
- templates/index.tpl
- QUICKSTART
- Smarty.addons.php
- Smarty.class.php
- doc.sgm: update changes
-
-2001-01-18 Andrei Zmievski <andrei@php.net>
-
- * QUICKSTART
- Smarty.addons.php: *** empty log message ***
-
-2001-01-18 Monte Ohrt <monte@ispi.net>
-
- * QUICKSTART
- doc.sgm: add QUICKSTART, update docs for default modifier
-
- * Smarty.addons.php
- Smarty.class.php: added default modifier
-
- * README
- Smarty.addons.php
- Smarty.class.php
- doc.sgm
- templates/index.tpl: added dislaimers
-
-2001-01-18 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: *** empty log message ***
-
-2001-01-16 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- templates/index.tpl: Implement 'div by'.
-
-2001-01-12 Monte Ohrt <monte@ispi.net>
-
- * doc.sgm: update docs
-
- * doc.sgm: doc changes
-
- * doc.sgm: update docs
-
-2001-01-12 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- doc.sgm: *** empty log message ***
-
- * Smarty.class.php: Fix template traversal.
-
-2001-01-11 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: *** empty log message ***
-
-2001-01-09 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- Smarty.class.php: *** empty log message ***
-
-2001-01-09 Monte Ohrt <monte@ispi.net>
-
- * doc.sgm: update manual
-
-2001-01-05 Monte Ohrt <monte@ispi.net>
-
- * doc.sgm
- Smarty.addons.php: commit changes
-
-2001-01-04 Monte Ohrt <monte@ispi.net>
-
- * doc.sgm
- templates/index.tpl
- Smarty.class.php: update changes
-
- * index.php
- Smarty.addons.php
- doc.sgm: add documentation
-
-2001-01-02 Monte Ohrt <monte@ispi.net>
-
- * index.php
- templates/index.tpl
- Smarty.addons.php
- Smarty.class.php: prepend insert_ to insert tag functions
-
- * Smarty.class.php
- index.php
- templates/index.tpl: remove caching logic
-
- * README
- Smarty.class.php
- index.php
- templates/index.tpl: update changes
-
-2000-12-27 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- templates/header.tpl
- templates/index.tpl
- Smarty.addons.php: *** empty log message ***
-
-2000-12-21 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php: Fix access to template variables.
-
- * Smarty.class.php
- templates/header.tpl:
- Added support for passing variables to included files.
-
-2000-12-20 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php:
- Added support for inserting results of function processing a template.
-
-2000-12-18 Monte Ohrt <monte@ispi.net>
-
- * Smarty.class.php: added string_format function
-
- * Smarty.addons.php: update format to string_format
-
- * README
- Smarty.addons.php
- Smarty.class.php: added format addon function
-
-2000-12-13 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- Smarty.class.php: Fix sectionelse.
-
-2000-12-07 Andrei Zmievski <andrei@php.net>
-
- * Smarty.addons.php
- Smarty.class.php
- templates/index.tpl: *** empty log message ***
-
-2000-12-04 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- templates/index.tpl
- Smarty.addons.php: *** empty log message ***
-
-2000-11-27 Andrei Zmievski <andrei@php.net>
-
- * templates/index.tpl
- Smarty.class.php: *** empty log message ***
-
-2000-11-22 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- templates/index.tpl: *** empty log message ***
-
-2000-11-21 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- templates/index.tpl
- Smarty.addons.php: *** empty log message ***
-
-2000-11-20 Andrei Zmievski <andrei@php.net>
-
- * templates/index.tpl
- Smarty.class.php
- Smarty.addons.php
- index.php: *** empty log message ***
-
- * Smarty.class.php
- index.php
- templates/index.tpl: Made sections work mostly.
-
-2000-11-19 Andrei Zmievski <andrei@php.net>
-
- * index.php
- templates/index.tpl: *** empty log message ***
-
-2000-11-17 Andrei Zmievski <andrei@php.net>
-
- * Smarty.class.php
- Smarty.addons.php: *** empty log message ***
-
-2000-11-15 Monte Ohrt <monte@ispi.net>
-
- * index.php
- templates/footer.tpl
- templates/header.tpl
- templates/index.tpl: added template files to cvs dir
-
- * README
- Smarty.class.php: commit changes
-
-2000-08-08 Monte Ohrt <monte@ispi.net>
-
- * README
- Smarty.class.php: update include path bug
-
- * README: add README file
-
- * Smarty.class.php: New file.
-
- * Smarty.class.php: initial import
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/FAQ b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/FAQ
deleted file mode 100644
index b82d39cf..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/FAQ
+++ /dev/null
@@ -1,284 +0,0 @@
-QUESTION INDEX
---------------
-
-GENERAL
-
-Q: What is Smarty?
-Q: What's the difference between Smarty and other template engines?
-Q: What do you mean "Compiled PHP Scripts" ?
-Q: Why can't I just use PHPA (http://php-accelerator.co.uk) or Zend Cache?
-Q: Why does smarty have a built in cache? Wouldn't it be better to handle this
- in a separate class?
-Q: Is Smarty faster than <insert other PHP template engine>?
-Q: How can I be sure to get the best performance from Smarty?
-Q: Do you have a mailing list?
-Q: Can you change the mailing list so reply-to sends to the list and not the
- user?
-
-TROUBLESHOOTING
-
-Q: Smarty doesn't work.
-Q: I get the following error when running Smarty:
- Warning: Smarty error: problem creating directory "templates_c/239/239105369"
- in /path/to/Smarty.class.php on line 542
-Q: I get the following error when running Smarty:
- Warning: Wrong parameter count for preg_replace() in
- Smarty.class.php on line 371
-Q: I get this error when passing variables to {include}:
- Fatal error: Call to undefined function: get_defined_vars() in
- /path/to/Smarty/templates_c/index.tpl.php on line 8
-Q: I get PHP errors in my {if} tag logic.
-Q: I'm changing my php code and/or templates, and my results are not getting
- updated.
-Q: I'm running Windows 2000 and I get blank content. My compiled PHP files are
- also zero length.
-Q: The template goes into an infinite loop when I include included templates
- that pass local variables
-Q: Javascript is causing Smarty errors in my templates.
-Q: I get "SAFE MODE Restriction in effect. ..."-errors when running smarty.
-
-MISC
-
-Q: Can I use Macromedia's Dreamweaver to edit my templates?
-Q: Dreamweaver is urlencoding the template delimiters when they are in a SRC or
- HREF link. How do I get around this?
-
-HOWTO
-
-Q: How do I generate different cache files per template based on arguments
- passed to the page?
-Q: How do I pass a template variable as a parameter? {function param={$varname}}
- does not work.
-Q: How do I include cached template(s) within a non-cached template?
-
-
-GENERAL
--------
-
-Q: What is Smarty?
-A: Smarty is a template engine for PHP... but be aware this isn't just another
- PHP template engine. It's much more than that.
-
-Q: What's the difference between Smarty and other template engines?
-A: Most other template engines for PHP provide basic variable substitution and
- dynamic block functionality. Smarty takes a step further to be a "smart"
- template engine, adding features such as configuration files, template
- functions, variable modifiers (see the docs!) and making all of this
- functionality as easy as possible to use for both programmers and template
- designers. Smarty also compiles the templates into PHP scripts, eliminating
- the need to parse the templates on every invocation, making Smarty extremely
- scalable and manageable for large application needs.
-
-Q: What do you mean "Compiled PHP Scripts" ?
-A: Smarty reads the template files and creates PHP scripts from them. Once
- these PHP scripts are created, Smarty executes these, never having to parse
- the template files again. If you change a template file, Smarty will
- recreate the PHP script for it. All this is done automatically by Smarty.
- Template designers never need to mess with the generated PHP scripts or even
- know of their existance. (NOTE: you can turn off this compile checking step
- in Smarty for increased performance.)
-
-Q: Why can't I just use PHPA (http://php-accelerator.co.uk) or Zend Cache?
-A: You certainly can, and we highly recommend it! What PHPA does is caches
- compiled bytecode of your PHP scripts in shared memory or in a file. This
- speeds up server response and saves the compilation step. Smarty creates PHP
- scripts, which PHPA will cache nicely. Now, Smarty's built-in cache is
- something completely different. It caches the _output_ of the template
- contents. For example, if you have a template that requires several database
- queries, Smarty can cache this output, saving the need to call the database
- every time. Smarty and PHPA (or Zend Cache) complement each other nicely. If
- performance is of the utmost importance, we would recommend using one of
- these with any PHP application, using Smarty or not. As you can see in the
- benchmarks, Smartys performance _really_ excels in combination with a PHP
- accelerator.
-
-Q: Why does Smarty have a built in cache? Wouldn't it be better to handle this
- in a separate class?
-A: Smarty's caching functionality is tightly integrated with the template
- engine, making it quite a bit more flexible than a simple caching wrapper.
- For instance, you can cache select portions of a template page. Let's say
- you have a polling box on your site. With Smarty, you can leave the poll
- dynamic and cache the rest of the page. You can also pass templates
- multiple cache ids, meaning that a template can have several caches
- depending on URL, cookies, etc.
-
-Q: Is Smarty faster than <insert other PHP template engine>?
-A: See the benchmark page for some performance comparisons. Smarty's approach
- to templates is a bit different from some languages: it compiles templates
- into PHP scripts instead of parsing them on each invocation. This usually
- results in great performance gains, especially with complex templates.
- Coupled with the built-in caching of Smarty templates, the performance is
- outstanding.
-
-Q: How can I be sure to get the best performance from Smarty?
-A: Be sure you set $compile_check=false once your templates are initially
- compiled. This will skip the unneeded step of testing if the template has
- changed since it was last compiled. If you have complex pages that don't
- change too often, turn on the caching engine and adjust your application so
- it doesn't do unnecessary work (like db calls) if a cached page is
- available. See the documentation for examples.
-
-Q: Do you have a mailing list?
-A: We have a few mailing lists. "general" for you to share your ideas or ask
- questions, "dev" for those interested in the development efforts of Smarty,
- and "cvs" for those that would like to track the updates made in the cvs
- repository.
-
- send a blank e-mail message to:
- smarty-general-subscribe@lists.php.net (subscribe to the general list)
- smarty-general-unsubscribe@lists.php.net (unsubscribe from the general list)
- smarty-general-digest-subscribe@lists.php.net (subscribe to digest)
- smarty-general-digest-unsubscribe@lists.php.net (unsubscribe from digest)
- smarty-dev-subscribe@lists.php.net (subscribe to the dev list)
- smarty-dev-unsubscribe@lists.php.net (unsubscribe from the dev list)
- smarty-cvs-subscribe@lists.php.net (subscribe to the cvs list)
- smarty-cvs-unsubscribe@lists.php.net (unsubscribe from the cvs list)
- You can also browse the mailing list archives at
- http://marc.theaimsgroup.com/?l=smarty&r=1&w=2
-
-
-
-Q: Can you change the mailing list so Reply-To sends to the list and not the
- user?
-A: Yes we could, but no we won't. Use "Reply-All" in your e-mail client to send
- to the list. http://www.unicom.com/pw/reply-to-harmful.html
-
-TROUBLESHOOTING
----------------
-
-Q: Smarty doesn't work.
-A: You must be using PHP 4.0.6 or later if you use any version of Smarty
- past 2.0.1. Read the BUGS file for more info.
-
-Q: I get the following error when running Smarty:
- Warning: Smarty error: problem creating directory "templates_c/239/239105369"
- in /path/to/Smarty.class.php on line 542
-A: Your web server user does not have permission to write to the templates_c
- directory, or is unable to create the templates_c directory. Be sure the
- templates_c directory exists in the location defined in Smarty.class.php,
- and the web server user can write to it. If you do not know the web server
- user, chmod 777 the templates_c directory, reload the page, then check the
- file ownership of the files created in templates_c. Or, you can check the
- httpd.conf (usually in /usr/local/apache/conf) file for this setting:
- User nobody
- Group nobody
-
-Q: I get the following error when running Smarty: Warning: Wrong parameter
- count for preg_replace() in Smarty.class.php on line 371
-A: preg_replace had a parameter added in PHP 4.0.2 that Smarty
- requires. Upgrade to at least 4.0.6 to fix all known PHP issues with
- Smarty.
-
-Q: I get this error when passing variables to {include}:
- Fatal error: Call to undefined function: get_defined_vars() in
- /path/to/Smarty/templates_c/index.tpl.php on line 8
-A: get_defined_vars() was added to PHP 4.0.4. If you plan on passing
- variables to included templates, you will need PHP 4.0.6 or later.
-
-Q: I get PHP errors in my {if} tag logic.
-A: All conditional qualifiers must be separated by spaces. This syntax will not
- work: {if $name=="Wilma"} You must instead do this: {if $name == "Wilma"}.
- The reason for this is syntax ambiguity. Both "==" and "eq" are equivalent
- in the template parser, so something like {if $nameeq"Wilma"} wouldn't be
- parsable by the tokenizer.
-
-Q: I'm changing my php code and/or templates, and my results are not getting
- updated.
-A: This may be the result of your compile or cache settings. If you are
- changing your php code, your templates will not necessarily get recompiled
- to reflect the changes. Use $force_compile during develpment to avoid these
- situations. Also turn off caching during development when you aren't
- specifically testing it. You can also remove everything from your
- compile_dir and cache_dir and reload the page to be sure everything gets
- regenerated.
-
-Q: I'm running Windows 2000 and I get blank content. My compiled PHP files are
- also zero length.
-A: There seems to be a problem with some W2k machines and exclusive file
- locking. Comment out the flock() call in _write_file to get around this,
- although be aware this could possibly cause a problem with simultaneous
- writes to a file, especially with caching turned on. NOTE: As of Smarty
- 1.4.0, a workaround was put in place that should solve this.
-
-Q: The template goes into an infinite loop when I include included templates
- that pass local variables
-A: This was fixed in 1.3.2 (new global attribute)
-
-Q: Javascript is causing Smarty errors in my templates.
-A: Surround your javascript with {literal}{/literal} tags. See the docs.
-
-Q: I get "SAFE MODE Restriction in effect. ..."-errors when running smarty.
-A: Use $smarty->use_sub_dirs = false when running php in safe mode.
-
-MISC
-----
-
-Q: Can I use Macromedia's Dreamweaver to edit my templates?
-A: Certainly. You might want to change your tag delimiters from {} to something
- that resembles valid HTML, like <!--{ }--> or <{ }> or something similar.
- This way the editor won't view the template tags as errors.
-
-Q: Dreamweaver is urlencoding the template delimiters when they are in a SRC or
- HREF link. How do I get around this?
-A: In Edit - Properties - Rewrite HTML you can specify if Dreamweaver should
- change special letters to %-equivalent or not. The default is on which
- produces this error.
-
-HOWTO
------
-
-Q: How do I generate different cache files per template based on arguments
- passed to the page?
-A: Use your $REQUEST_URI as the cache_id when fetching the page:
-
- global $REQUEST_URI; // if not already present
- $smarty->display('index.tpl',$REQUEST_URI);
-
- This will create a separate cache file for each unique URL when you call
- index.tpl. See the documentation for display() and fetch()
-
-Q: How do I pass a template variable as a parameter? {function param={$varname}}
- does not work.
-A: {function param=$varname} (You cannot nest template delimiters.)
-
-Q: How do I include cached template(s) within a non-cached template?
-A: One way to do it:
-
- $smarty->caching = true;
- $tpl1 = $smarty->fetch("internal1.tpl");
- $tpl2 = $smarty->fetch("internal2.tpl");
- $tpl3 = $smarty->fetch("internal3.tpl");
-
- $smarty->assign("tpl1_contents",$tpl1);
- $smarty->assign("tpl2_contents",$tpl2);
- $smarty->assign("tpl3_contents",$tpl3);
-
- $smarty->caching = false;
- $smarty->display('index.tpl');
-
- index.tpl
- ---------
-
- <table>
- <tr>
- <td>{$tpl1_contents}</td>
- <td>{$tpl2_contents}</td>
- <td>{$tpl3_contents}</td>
- </tr>
- </table>
-
-
-
-
- Another approach:
-
- You could write a custom insert function to fetch your internal
- templates:
-
- <table>
- <tr>
- <td>{insert name=fetch_tpl tpl="internal1.tpl"}</td>
- <td>{insert name=fetch_tpl tpl="internal2.tpl"}</td>
- <td>{insert name=fetch_tpl tpl="internal3.tpl"}</td>
- </tr>
- </table>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/INSTALL b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/INSTALL
deleted file mode 100644
index 0df4341b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/INSTALL
+++ /dev/null
@@ -1,29 +0,0 @@
-REQUIREMENTS:
-
-Smarty requires PHP 4.0.6 or later.
-See the on-line documentation for complete install instructions.
-
-INSTALLATION (quick):
-
-* copy the files under the libs/ directory to a directory that is in your PHP
- include_path, or set the SMARTY_DIR constant and put them in this directory.
- (if you upgrade from versions before 2.5.0 be aware that up to Smarty 2.4.2
- all necessary files where in the distribution's root directory, but are now
- in libs/.)
-
-* for each application using Smarty, create a "templates", "configs", and a
- "templates_c" directory, be sure to set the appropriate directory settings in
- Smarty for them. If they are located in the same directory as your
- application, they shouldn't need to be modified. Be sure the "templates_c"
- directory is writable by your web server user (usually nobody). chown
- nobody:nobody templates_c; chmod 700 templates_c You can also chmod 777 this
- directory, but be aware of security issues for multi-user systems. If you are
- using Smarty's built-in caching, create a "cache" directory and also chown
- nobody:nobody.
-
-* setup your php and template files. A good working example is in the on-line
- documentation.
-
-* TECHNICAL NOTE: If you do not have access to the php.ini file, you can change
- non-server settings (such as your include_path) with the ini_set() command.
- example: ini_set("include_path",".:/usr/local/lib/php");
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/NEWS b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/NEWS
deleted file mode 100644
index 76302980..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/NEWS
+++ /dev/null
@@ -1,733 +0,0 @@
-Version 2.6.0 (Nov 19, 2003)
-----------------------------
-
- - move Smarty::quote_replace() to Smarty_Compiler::_quote_replace() (messju)
- - remove import of of attributes of {include_php} to php's namespace.
- use $params[name] instead (messju)
-
-Version 2.6.0-RC3 (Nov 13, 2003)
---------------------------------
-
- - fix handling of $var.key inside [] (messju)
- - fix handling of assign inside {insert}-tags (messju)
- - fix handling if [...] inside triple-quotes in config-files (messju)
- - fix handling of simple-math-operators inside modifiers (Dominik, messju)
- - fix handling of trailing-slashes in open_basedir in
- smarty_core_create_dir_structure() (packman, messju)
-
-Version 2.6.0-RC2 (Oct 8, 2003)
--------------------------------
-
- - apply modifiers only once to section-loop and foreach-from attrs (messju)
- - remove use of _smarty_cached_paths-files (messju)
- - remove Smarty::_plugin_implementation_exists() - use is_callable() (messju)
- - ignore {strip}/{/strip) inside {strip}-blocks (messju)
- - fixed removal of leading/trailing newlines in {strip}-blocks (messju)
- - fixed proper escaping of " and ' with escape:javascript (messju)
- - fixed bug in traversal of $smarty->plugins_dir-array. now the
- first matching plugin is taken (messju)
- - moved {strip} back into the compiler (messju)
- - fixed config_load: handling of section-attribute and use of
- multiple config-files in one template (atu, messju)
-
-Version 2.6.0-RC1 (August 11, 2003)
------------------------------------
-
- - fixed status-header for cache_modified_check under cgi-sapi (messju)
- - added optional parameter $cache_attrs to register_function() and
- register_block(). $cache_attrs is an array containing attribute-
- names that should be cached on calls to functions that have
- $cacheable set to false. (messju)
- - enabled registration of class-methods as callbacks for the register_*-
- functions (use: array('classname', 'method_name')) as callback) (messju)
- - added filepath caching (Monte)
- - added optional assign-attribute to {capture}-tag (messju)
- - added $cacheable-parameter to register_compiler_function() (messju)
- - added $cacheable-parameter with default=true to register_function()
- and register_block() (messju)
- - add math speedup to core (Dominik, Monte)
- - fix newlines for tags without template output (Monte)
- - added config-option "request_use_auto_globals" to make auto-globals be
- used as request vars instead of HTTP_*_VARS (messju)
- - speed up config_load, simplify compiling (Monte)
- - added block-methods for registered objects (Bharat Mediratta, messju)
- - ignore one char resource names like c:foo.tpl (Monte)
- - added default_resource_type feature (Monte)
- - fix bug where config file starts with hidden section (boots, Monte)
- - add discrete error checking pertaining to $cache_dir
- and $compile_dir, their existance and writability (Monte)
- - fixed behaviour of start=... for {counter} (messju)
- - fixed assign for {counter} (messju)
- - added params vdir, hdir and inner to html_table to allow looping
- over the data in various directions (messju)
- - allow spaces in literal tags (Paul Lockaby, Monte)
- - speed up compiled templates, hardcode plugin filepaths
- instead of dynamically calculate at runtime. (Monte)
- - abstract many core components from Smarty.class.php,
- speeding up core class instantiation (Monte)
- - fixed bug in _create_dir_structure() when used with open_basedir-
- restriction and relative paths (messju)
- - use DIRECTORY_SEPARATOR exclusively, keep DIR_SEP for BC (Monte)
- - changed "link" to "href" in html_image. "link" is still working
- but deprecated (messju)
- - html_image always renders an alt-tag now (default alt="") (messju)
- - fixed assign attribute for multiple counters (messju)
- - added simple math operators to variables (Monte)
- - enabled array(&$obj. 'source', 'timestamp', 'secure', 'trusted')
- as callback for register_resource() (messju);
- - enabled array(&$obj, 'method') as callback for
- $default_template_handler_func (messju)
- - remove unnecessary close/open tags from compiled templates
- (Monte)
- - fixed errornous creation of '//' in image_path in html_image (messju)
- - fix escapement of special chars for key vals in debug
- console (Monte)
- - fixed debug timing logic for config_load (Tom Sommer, Monte)
- - all in-code doc comments converted to phpDocumentor format (Greg)
- - moved strip from smarty core to plugin (Monte)
- - moved config_load from smarty core to plugin (Monte)
- - added &$repeat-parameter to block-functions (messju)
- - enabled hex-constants in function.math.php (messju)
- - enabled hex-constants (0x...) as function-attributes, inside if-statements
- and as modifier-parameters (messju)
- - fixed bug with passing $smarty as reference in Smarty.compiler.class
- (messju)
- - corrected output with {strip} and PHP tag newlines (Monte)
- - added possibility to register function-callbacks as "array(&$obj, 'method)"
- this affects register_function(), -block, -compiler_function, -modifier,
- -prefilter, -postfilter, -outputfilter-functions() and $cache_handler_func
- (messju)
- - added <labels> to html_checkboxes and html_radios (Philippe, messju)
- - added "labels"-options to turn off labels in html_checkboxes and _radios
- (messju)
-
-Version 2.5.0 (April 11, 2003)
-------------------------------
-
- - fixed bug with default modifier when passing integer 0
- (Monte)
- - change backtic syntax from $`foo` to `$foo` (Monte)
- - recognize $foo[][] syntax inside embedded quotes without
- backtics (Monte)
- - name=123 is passed as an integer (not a string) to plugins now (messju)
- - $length is now propagated to sub-values in debug_print_var (messju)
-
-Version 2.5.0-RC2 (March 26, 2003)
-----------------------------------
-
- - made clear_cache() ignore compile_id, when clearing cache-groups (this
- is when no $tpl_file is supplied) (messju)
- - made onmouseout XHTML-compliant in function.popup.php (messju)
- - applied local-var-naming-scheme to fetch() (messju)
- - renamed $localvars to $_localvars in cache-file-handling-functions,
- added _get_auto_id()-function (messju)
- - swapped compile_id and cache_id in read_cache_file and write_cache_file
- (messju)
- - reverted patch for cache-file-handling (messju)
- - made html_radios and html_checkboxes accept "selected" instead
- of "checked" optionally. (messju)
- - made compile_id ignored in clear_cache, made order of
- auto_file_name $cache_id.$compile_id again, applied the the new
- variable-naming-scheme for cache_file_handing functions (messju)
- - removed notice of undefined var in _rm_auto() (messju)
- - added warning message when an array is passed as
- the "checked" value of html_radios (Monte)
- - fixed errormessage in _compile_smarty_ref() (messju)
- - updated docs for html_image "name" -> "file" (messju)
- - fixed bug with html_options-optgroups (Nichlas Löfdahl, messju)
- - cleaned up calls to readdir() (messju)
- - fixed bug with passing multiple modifiers to a parameter
- (Monte)
- - updated docs for html_checkboxes, html_options and html_radios (messju)
- - fixed wrong default "name" attribute for html_options (messju)
- - html_checkboxes now expect the options as attribute "options" instead
- of "checkboxes. html_radios expect "options" instead of "radios".
- cleaned up indentiation (messju)
- - fixed too greedy str_replace in trimwhitespace outputfilter (messju)
- - html_checkboxes and html_radios passthru all unknown paramters now
- additionally their output is now XHTML compliant (messju)
- - html_options passthru all unknown paramters now (messju)
- - fix link functionality of html_image, also make
- output XHTML compatible (Hinrich Donner, Monte)
- - append "@" to default modifier vars/args
- supress possible warnings (Monte)
- - fix problem with escaped double quotes (Monte)
- - fix html_radios to not return an array (Monte)
- - fixed length in modifier.truncate.php (messju)
- - fixed handling of '$'-signs in trimwhitespace outputfilter (messju)
- - fix bug that makes config files recompile every time
- (Nagger, Monte)
- - add dpi functionality to html_image, change "name"
- parameter to "file" (Thomas Shulz, Monte)
- - fix height/width parameter index in html_image (Gerard,
- Monte)
- - get rid of unsetting name and script attributes
- to insert tag (Thomas Schulz, Monte)
- - changed argument order of string_format modifier back,
- was right in the first place (Monte)
-
-Version 2.5.0-RC1 (March 5, 2003)
----------------------------------
-
- - fixed notice in popup function (Nagger, Monte)
- - fix "once" var compiling for include_php (Monte)
- - added nl2br modifier to distribution (Monte)
- - added html_image to distribution (Monte)
- - added cat modifier to distribution (Monte)
- - added html_table to distribution (Monte)
- - added << >> <> support to if statments (SMK, Monte)
- - fix _assign_smarty_interface to not overwrite keys
- other than 'request' (Jerome Poudevigne, Monte)
- - added html_checkboxes to distribution (Christopher Kvarme, Monte)
- - added html_radios to distribution (Christopher Kvarme, Monte)
- - fixed string_format modifier args (wrong order) (Paul
- Lockaby, Monte)
- - use tmp file for file writes, avoid file lock race (Monte)
- - support syntax "$`smarty.config.foo`.tpl" for embedded
- vars in quotes, and allow full dollar var syntax (Monte)
- - add $smarty.config.varname variable for accessing config vars (Paul
- Lockaby, Monte)
- - silence PHP warnings in function.fetch.php (Eduardo,
- Monte)
- - added get_config_vars(), same basic functionality as
- get_template_vars() (Monte)
- - update get_template_vars() to be able to get
- individual vars (Monte)
- - fix minor logic in _fetch_template_info (Dennis Gearon,
- Monte)
- - fix cache groups with compile_id set (Monte)
- - add support for merging appended vars (messju, Monte)
- - allow null as function attribute value
- (André Rabold, Monte)
- - support $foo->bar[index] syntax (Monte)
- - add get_registered_object function (messju, Monte)
- - treat unrecognized param attribute syntax as string (Monte)
- - support $smarty.const.$foo syntax (messju, Monte)
- - remove E_NOTICE warnings from debug.tpl,
- escape modifier (Kanstantin, Monte)
- - don't count non-ascii chars in count_words modifier
- (Kanstantin, Monte)
- - clean up param calls to _parse_var and _parse_attrs (Monte)
- - define $template_source var, elude possible warning
- (Monte)
- - fix syntax problem with evaluating PHP constants (Monte)
- - add @ and === as valid if statement tokens (Monte)
- - enable error messages for config_load errors,
- use $this->config_class for loading class name (Monte)
- - fix html_options to not escape already escaped entities (Monte)
- - send Last-Modified header on cache creation (Monte)
- - check strict syntax of function attributes (Monte)
- - dropped support for modifers on object parameters,
- added support for objects as modifier parameters (Monte)
- - fixed bug with decimal numbers in if statements (Monte)
-
-Version 2.4.2 (Feb 11, 2003)
-----------------------------
- - support embedded variables in objects (Monte)
- - fix bug with objects with no properties (M Mohr, Monte)
- - support full dollar var syntax in quoted text (Monte)
- - fixed bug in $smarty.const.FOO introduced in 2.4.1 (M
- Mohr, Monte)
-
-Version 2.4.1 (Feb 6, 2003)
----------------------------
-
- - ignore case in IF statements (Rainer Collet, Monte)
- - treat undefined constants as null (Ferdinand Beyer, Monte)
- - fix problem with inserts and nested fetches
- (Rainer Collet, Monte)
- - added support for passing params to include_php
- (Tim Riley, Monte)
- - added support for math operators in if statements (Monte)
- - added support for $foo->bar[$x].blah syntax (Monte)
-
-Version 2.4.0 (Feb 2, 2003)
----------------------------
-
- - fix known problems with php tag handling in templates
- (recursion, echoing xml tags) (Monte)
- - add support for object registration (Monte)
- - add debug template to secure_dir, add template_dir
- to secure_dir by default (Ferdinand Beyer, Monte)
- - added support for assigned object access (Monte)
- - fixed bug with directories named '0' (Frank Bauer, Monte)
- - add javascript parameter to escape modifier (Monte)
- - added calling function line numbers to syntax error
- messages in compiler (Monte)
- - added support for modifiers to function calls (Monte)
- - support return value for custom functions
- instead of echoing (but echo still works) (Monte)
- - added direct access to constants
- via $smarty.const.FOO (Monte)
- - added support for passing modifiers
- to static values (Monte)
- - fix up regex code in compiler, more accurate and
- maintainable (Monte)
- - added day_value_format to html_select_date (Marcus
- Bointon, Monte)
- - assigned variables are no longer in global
- namespace, saving extract() calls and speeding
- up fetch() and display() linearly with no. of
- assigned variables (Monte)
- - added trimwhitespace output filter to dist. (Monte)
- - fix popup function to allow newlines in text (Monte)
- - escape html entities in html_options (Monte)
- - fixed bug with label for html_options (Monte)
- - added config_load API function (Monte)
- - added caching to config file loading (Monte)
- - added "extra" parameter to mailto function (Monte,
- Massimiliano Perantoni)
- - added mailto plugin to dist. (Monte)
-
-Version 2.3.1 (Nov 19, 2002)
-----------------------------
-
- - added optgroup support to html_options (Monte, Robert
- Amos)
- - set mtime on compile files so they match source
- files (Monte, Peter Bowen)
- - added proper support for open_basedir setting
- (Monte, Alessandro Astarita)
- - added strip variable modifier, updated docs (Monte)
- - fixed access to $smarty.x variables as arrays. (Andrei)
- - fixed errors with example setup docs (Monte, Matthew
- Hagerty)
- - added textformat block function (Monte)
-
-Version 2.3.0 (Aug 7, 2002)
----------------------------
-
- - added assign_by_ref() and append_by_ref() functions
- (Bob Silva, Monte)
- - changed default warning type for plugin errors from
- E_USER_WARNING to E_USER_ERROR (Monte)
- - added $all_extra, $hour_extra, $minute_extra,
- $second_extra and $meridian_extra parameters to
- html_select_time function (Rainer Collet, Monte)
- - update debug console to print objects (Simon Willison,
- Monte)
- - fix Config_File class to not error when there are no
- sections (Peter Kmet, Monte)
- - add default modifier logic (Monte)
- - updated popup_init to be xhtml compliant (Tom Oram, Monte)
- - fix filename bug with windows (Gary Loescher, Monte)
- - add ability to supply expire time in seconds when clearing
- cache or compile files (Monte)
- - add {debug} plugin to distribution (Monte)
- - fixed bug with insert tags, loading from "script" attribute
- when caching is enabled (Monte)
- - fix bug with debug_tpl file path with Windows (.SMK., Monte)
- - fix append() function with string/array problem (Monte)
-
-Version 2.2.0 (July 11, 2002)
------------------------------
-
- - make debug.tpl work with any delimiter (Monte)
- - change logic in assign() and append() to test var names
- against != '' instead of empty() (Monte)
- - fix PHP notice in append() function (Monte)
- - allow $plugins_dir to be an array of directories
- (Andreas Kossmeier, Monte)
- - move debug.tpl to SMARTY_DIR, add to constructor (Monte)
- - fixed warning message in function.assign_debug_info (Monte)
- - fixed $template_dir, $compile_dir, $cache_dir, $config_dir,
- $plugin_dir to respect include_path (Monte)
- - fixed warning message with output filter array (Monte)
- - add optional 2nd parameter to date_format, used as
- the default date if the passed date is empty (Monte)
- - gave $reset a default value in cycle plugin (Monte)
- - fixed warnings with html_select_date and timestamp
- functions (Monte)
- - added support for sub directory exlusion format (Monte)
- - added support for grouping by cache_id, compile_id
- and segments thereof (Monte)
- - changed cache and compile files to human readable
- format (Monte)
- - remove overlib.js file from distribution (Monte)
- - fixed bug with 304 Not Modified response sending
- content (Monte)
- - fixed cycle function to respect delimiter after
- initial setting (Monte)
- - update $GLOBALS references to work properly with
- track_globals settings (Michal Prinke, Monte)
- - fixed bug in math function with call to assign
- (Grigory V. Kareev, Monte)
- - optimized for loops with count() function calls (Monte)
- - add month_value_format attribute to html_select_date
- plugin (Gary Loescher, Monte)
- - made it possible to use simple variables inside [] for
- indexing. (Andrei)
- - added "once" attribute to {include_php}. (Monte)
-
-Version 2.1.1
--------------
- - added cycle function. (Monte)
- - fixed bug with resource testing, and include_path. (Monte)
- - fixed a bug with register_outputfilter function. (Monte)
-
-Version 2.1.0
--------------
-
- - introduced output filters. (Andrei)
- - changed the way filters are loaded, added load_filter()
- API function and $autoload_filters variable. (Andrei)
- - added caching logic for expire times per cache file
- (Norbert Rocher, Monte)
- - fixed html_select_date when field separator is "/"
- (Roberto Berto, Monte)
- - added YYYY-MM-DD format support to html_select_date
- (Jan Rosier, Monte)
- - fixed cache_lifetime logic bug, also made -1 = never
- expire (Monte)
- - fixed directory separator issue for Windows. (Andrei)
- - added ability to use simple variables as array indices or
- object properties. (Andrei)
- - added ability to unregister pre/postfilters plugins at
- runtime. (Andrei)
- - added 'htmlall' attribute to escape modifier. (Monte)
- - added template_exists() API function. (Andrei)
- - fixed a problem with using dynamic values for 'file'
- attribute of {include_php} tag. (Andrei)
- - added $smarty.template variable. (Andrei)
- - fixed several plugins that would not work if the plugin
- directory was not the default one. (Andrei)
- - implemented support for block functions. (Andrei)
- - made it possible to assign variables in pre/postfilter
- plugins. (Andrei)
-
-Version 2.0.1
--------------
- - rename plugin .make_timestamp.php to shared.make_timestamp.php.
- (Monte)
- - changed crc32() generated values, replace '-' with 'N'. (Monte)
- - added support for +/- N syntax in html_select_date year values.
- (Monte)
- - fixed behavior of inserts with script attribute. (Andrei)
- - fixed bug with $smarty.cookies and $smarty.server. (Andrei)
- - wordwrap and indent are missing from 2.0 release, now fixed.
- (Monte)
- - removed show_info_header and show_info_include variables. (Monte)
-
-Version 2.0.0
--------------
- - added "eval" function plugin for evaluating variables as
- templates. (Monte)
- - removed $tpl_file_ext class variable, no longer used. (Monte)
- - added "hex" and "hexentity" escape types to escape modifier.
- (Monte)
- - removed dependency on PEAR. (Andrei)
- - update popup_init to accept src attribute. (Monte, Duncan Forrest)
- - implemented several optimizations, speeding up Smarty
- significantly in most cases. (Andrei,Monte)
- - implemented plugin architecture. (Andrei)
- - added wordwrap and indent modifiers. (Monte)
- - added support for 'If-Modified-Since' headers for cached content.
- (Monte)
- - removed insert_tag_check class variable, no longer needed. (Monte)
- - optimized cache fetches by scanning for insert tags only if they
- exist. (Monte)
- - fixed bugs in overlib. (Monte, Duncan Forrest)
- - fixed a problem with compile_id usage. (Andrei)
- - fixed problem with using assigned vars with {include_php ...}
- filepath. (Monte)
-
-Version 1.5.2
--------------
- - added Smarty object as fifth argument for template resource functions.
- (Monte)
- - fixed a bug with incorrectly combined cache and compile id in
- clear_cache(). (Andrei)
- - fixed bug in smarty_make_timestamp introduced in PHP 4.1.0. (Monte)
- - fixed bug with cached insert debug timing. (Monte)
- - added 'script' attribute to {insert..} which specifies the script that
- the insert function can be found in. (Andrei)
- - added default template function handler. (Monte)
-
-Version 1.5.1
--------------
- - removed error message from the generic _read_file() method, the caller
- should take care of that. (Andrei)
- - fixed a bug with incorrectly combined cache and compile id. (Andrei)
-
-Version 1.5.0
--------------
- - added include_php built-in function, documented. (Monte)
- - added trusted_dir functionality, documented. (Monte)
- - consolidated secure_dir tests to one function. (Monte)
- - prepended _smarty_ to variable names in fetch() class function to avoid
- namespace conflicts. (Monte)
- - introduced $compile_id class variable that can be used to set persistent
- compile identifier across multiple display calls, documented. (Andrei)
- - fixed bug with concatenated null cache and compile identifiers. (Andrei)
- - added $smarty.section.* syntax for accessing section properties,
- documented. (Andrei)
- - added custom cache handling function ability, documented. (Monte)
- - added assign attribute to include, include_php, insert, fetch, math, and
- counter functions, documented. (Monte)
- - fixed bug with fetch testing for local file when http address. (Monte)
- - fixed bug with counter and skipval setting. (Monte)
- - made {config_load ...} merge globals from each config file only once per
- scope, thus avoiding several problems. (Andrei)
- - added {foreach ...} tag that can be used to iterate through
- non-sequential and associative arrays, documented. (Andrei)
- - speeded up section property access a bit. (Andrei)
- - removed $smarty variable from storage used by normal template variables,
- to prevent any problems. (Andrei)
- - fixed a bug that could cause parse error with quotes inside literal
- blocks. (Andrei, Alexander Belonosov)
- - added 'field_array' attribute to html_select_time function, documented.
- (Andrei, Michael Caplan)
- - documented {section} "max" attribute. (Monte)
- - fixed notice message in Smarty_Compiler.class.php. (Monte)
- - fixed bug with clear_cache introduced in 1.4.6, third parameter should
- default to null. (Monte)
- - updated Config_File class to support '\' path separator in OS/2. (Monte,
- Francesco Cipriani)
- - removed secure_ext setting (not used). (Monte)
- - made cache reading process more efficient. (Monte)
- - fixed bug, is_cached() now supports new 1.4.6 caching behavior. (Monte)
- - update FAQ with mailing list Reply-To header FAQ. (Monte)
- - supress error messages for fopen(), fix cache to regenerate if cache
- file is not available (i.e. cluster race condition). (Monte)
- - added index key example to QUICKSTART guide. (Monte)
-
-Version 1.4.6
--------------
- - fixed bug with {assign ...} when passing an empty value. (Monte)
- - add more warning message fixes. (Monte, Tara Johnson)
- - documentation updates. (Monte)
- - update fetch function to give proper warning when fetching a non-readable
- or non-existant file. (Monte)
- - fixed problem with newline at the end of included templates (Monte, Andrei)
- - added feature to regenerate cache if compile_check is enabled and an
- involved template or config file gets modified. (Monte)
- - added DEBUG execution times to included files: REQUIRES updated debug.tpl
- file! (Monte)
- - added support for hidden config variables that cannot be read by
- templates. (Andrei)
- - added execution time to DEBUG console, total and inserts. (Monte)
- - fixed bug where DEBUG console would not appear with cached content. (Monte)
- - added support for postfilter functions that are applied to compiled
- template right after compilation. (Andrei)
- - fixed the name of clear_compile_tpl() API function to clear_compiled_tpl.
- (Andrei)
- - added fix for removing comments so that the line numbers are reported
- correctly in case of errors. (patch from Anders Janson)
- - made html_options output xhtml compatible code. (Monte, Arnaud Limbourg)
-
-Version 1.4.5
--------------
- - update FAQ with index of questions at the top
- - update overlib to 3.50, adjust addon code so that the overlib.js
- file isn't modified, and not using the mini one. (Monte)
- - added many more options to html_select_date. (Alexander Skwar, Andrei)
- - added support for generating different compiled templates from the same
- source template. (Hans-Peter Oeri, Andrei)
- - modified Smarty to pass itself to insert functions as the second
- parameter. (Andrei)
- - modified Smarty to pass itself to prefilter functions as the second
- parameter. (Andrei)
- - fixed syntax error when including a non-existant template with security
- enabled. (Monte)
- - fixed comments handling to allow commenting out template blocks. (Andrei)
- - implemented named capture buffers, with results accessible via
- $smarty.capture.<name>. (Andrei)
- - added ability to index arrays directly by numbers. (Andrei)
- - fixed bug with SMARTY_DIR not prepended to Config_File include. (Monte)
-
-Version 1.4.4
--------------
- - fixed problem with including insecure templates with security enabled.
- (Monte)
- - numerous documentation updates. (Monte)
- - added ENT_QUOTES to escapement of html. (Monte, Sam Beckwith)
- - implemented access to request variables via auto-assigned $smarty
- template variable. (Andrei)
- - fixed a bug with parsing function arguments inside {if} tags if a comma
- was present. (Andrei)
- - updated debug console with config file vars. (Monte)
- - added SMARTY_DIR constant as an alternative to relying on include_path.
- (Monte)
- - added popup_init and popup functions (requires overlib.js). (Monte)
- - updated debug console with config file vars. (Monte)
- - added debugging url control. (Monte)
- - added 'quotes' type to escape modifier. (Monte, Mike Krus)
- - added 'total' and 'iteration' section properties. (Andrei)
- - added 'start', 'max', and 'step' section attributes/properties. (Andrei)
- - fixed a bug with security checking of functions inside {if} tags.
- (Andrei)
- - fixed a bug in Config_File that would incorrectly booleanize values that
- weren't really booleans. (Andrei)
-
-Version 1.4.3
--------------
- - added regex_replace modifier, documented. (Monte)
- - added debugging console feature and custom function assign_debug_info,
- documented. (Monte)
- - added 'scope' attribute for {config_load}, 'global' is now deprecated but
- is still supported. (Andrei)
- - reduced template symbol table pollution by moving config array into the
- class itself. (Andrei)
- - fixed a bug with passing quoted arguments to modifiers inside {if}
- statements. (Andrei, Sam Beckwith)
- - added security features for third party template editing, documented
- (Monte)
- - added assign custom function, documented. (Monte)
- - fixed bug with template header using version instead of _version. (Monte)
- - fixed a problem with putting $ followed by numbers inside {strip} and
- {/strip} tags. (Andrei)
- - fixed Config_File class to allow empty config paths (defaults to current
- directory). (Andrei)
-
-Version 1.4.2
--------------
- - move $version to internal variable, remove from docs. (Monte)
- - cleaned up compiled templates global scope by moving some variables into
- the class itself. (Andrei)
- - fixed a bug that would not allow referring to a section in the including
- file from the included file. (Andrei)
- - configs directory missing from 1.4.1 release, added back in. (Monte)
- - added windows include_path setup instructions to FAQ & QUICKSTART.
- (Monte)
-
-Version 1.4.1
--------------
- - fix LOCK_EX logic for all windows platforms (Monte)
- - fixed indexing by section properties with the new syntax. (Andrei)
- - updated Smarty to use absolute paths when requiring/including Smarty
- components. (Andrei, John Lim)
-
-Version 1.4.0
--------------
- - added {capture}{/capture} function, documented (Monte)
- - added {counter} function, documented (Monte)
-
-Version 1.4.0b2
----------------
- - fixed issue in Config_File.class with referencing blank sections (Andrei)
- - fixed problem with passing variables to included files (Andrei)
- - fixed resource path recognition for windows (Monte)
-
-Version 1.4.0b1
----------------
- - added "componentized templates" tip into documentation (Monte)
- - added {php}{/php} tags for embedding php code into templates (Monte)
- - changed default value of $show_info_header to false (Monte)
- - implemented '->' syntax for accessing properties of objects passed to the
- template. (Andrei)
- - allowed custom functions to receive Smarty object as the second
- parameter; this can be used to dynamically change template variables, for
- example. (Andrei)
- - added custom compiler functions support, register_compiler_function() and
- unregister_compiler_function() API functions. (Andrei, Ivo Jansch).
- - updated GLOBAL_ASSIGN to take SCRIPT_NAME from HTTP_SERVER_VARS
- instead of global variable. You can also assign several variables
- in one shot with an array. (Monte, Roman Neuhauser)
- - added template prefilters, register_prefilter() and
- unregister_prefilter() API functions. (Monte)
- - added RELEASE_NOTES file to distribution. (Monte)
- - moved CREDITS out of manual into its own file. (Monte)
- - added register_resource() and unregister_resource() API functions. (Monte)
- - changed the syntax of indexing template variables, thus supporting
- structures of arbitrary complexity; supplied fix_vars.php script to fix
- old syntax. (Andrei)
- - added $insert_tag_check to speed up cached pages if {insert ...} is not
- used. (Monte)
- - added $compiler_class variable to allow specifying a different compiler
- class. (Andrei)
- - changed Smarty to compile templates at runtime, allowing for arbitrary
- template resources. (Monte)
- - added fix for LOCK_EX under Windows and changed a couple of file
- permissions for security. (Monte, Fernando Nunes)
- - allow arbitrary date strings to date_format, html_select_date and
- html_select_time (Monte)
-
-Version 1.3.2
--------------
- - fixed a bug that caused some nested includes to loop infinitely. (Andrei)
- - added optional HTML header to output. (Monte)
- - significantly improved config_load performance. (Andrei)
- - added format attribute to math function. (Monte)
- - added html_select_time custom function. (Andrei)
- - fixed minor PHP warning when attempting to unset an unset variable
- (Monte)
- - added count_characters, count_words, count_sentences, count_paragraphs
- modifiers (Monte)
-
-Version 1.3.1pl1
---------------
- - bug fix, recovered missing _syntax_error function (Monte)
-
-Version 1.3.1
--------------
- - document first, last, index_prev, index_next (Monte)
- - added 'first' and 'last' section properties. (Andrei)
- - split out compiling code to separate class for faster template execution
- time (Monte)
- - fixed a couple of minor PHP warnings (Monte)
- - added and documented unregister_modifier() and unregister_function() API
- calls. (Monte)
- - added and documented 'fetch' and 'math' functions. (Monte)
- - added ability to index looped variables by section properties, e.g.
- $foo.index_prev/bar. (Andrei)
- - added index_prev and index_next section properties. (Andrei)
- - fixed issue with php executing in literal blocks. (Monte)
-
-Version 1.3.0
--------------
- - moved license from GPL to LGPL (Monte)
- - implemented workaround for PHP "feature" that eats carriage returns
- if the PHP tag is at the end of the line. (Andrei)
- - removed $allow_php, added $php_handling logic (Monte)
- - added file locking to prevent reader/writer problem. (Andrei)
- - made Smarty catch unimplemented modifiers and custom functions and output
- error messages during compilation instead of failing during run time.
- (Andrei)
- - removed short-tags at the top of the smarty scripts (Monte)
- - added register_function() and register_modifier() API calls to make
- registering stuff easier. (Andrei)
- - added template results caching capability. (Monte, Andrei)
- - added optional 'options' attribute to html_options custom function
- that allows passing associative arrays for values/output. (Andrei)
- - modifier arguments can now contain '|' and ':' characters inside quoted
- strings. (Andrei)
-
-Version 1.2.2
--------------
- - fixed bug that would not respect nested template directories and would
- put all compiled files into top-level one. (Andrei)
- - fixed bug using $PHP_VERSION instead of environment var PHP_VERSION.
- (Monte)
- - a couple small warning fixes. (Monte)
-
-Version 1.2.1
--------------
- - added $compile_dir, removed $compile_dir_ext, simplified usage. (Monte)
- - added tips & tricks chapter to documentation. (Monte)
- - misc documentation updates. (Monte)
-
-Version 1.2.0
--------------
- - updated documentation (Monte)
- - added file and line number information to syntax error messages. (Andrei)
- - added ability to index template vars by a key. (Andrei)
-
-Version 1.1.0
--------------
- - misc documentation changes, official stable release
-
-Version 1.0b
-------------
- - fixed the bug that prevented using non-array values for 'loop' attribute.
- (Andrei)
- - many misc documentation changes & additions (Monte)
-
-Version 1.0a
-------------
- - fixed bug that caused templates to recompile every time (Monte)
-
-Version 1.0
-------------
- - initial release
-
-/* vim: set et tw=64 ft=changelog: */
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/README b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/README
deleted file mode 100644
index db3cf4e5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/README
+++ /dev/null
@@ -1,80 +0,0 @@
-NAME:
-
- Smarty - the PHP compiling template engine
-
-VERSION: 2.5.0
-
-AUTHORS:
-
- Monte Ohrt <monte@ispi.net>
- Andrei Zmievski <andrei@php.net>
-
-MAILING LISTS:
-
- We have a few mailing lists. "general" for you to share your ideas or ask
- questions, "dev" for those interested in the development efforts of Smarty,
- and "cvs" for those that would like to track the updates made in the cvs
- repository.
-
- send a blank e-mail message to:
- smarty-general-subscribe@lists.php.net (subscribe to the general list)
- smarty-general-unsubscribe@lists.php.net (unsubscribe from the general list)
- smarty-general-digest-subscribe@lists.php.net (subscribe to digest)
- smarty-general-digest-unsubscribe@lists.php.net (unsubscribe from digest)
- smarty-dev-subscribe@lists.php.net (subscribe to the dev list)
- smarty-dev-unsubscribe@lists.php.net (unsubscribe from the dev list)
- smarty-cvs-subscribe@lists.php.net (subscribe to the cvs list)
- smarty-cvs-unsubscribe@lists.php.net (unsubscribe from the cvs list)
- You can also browse the mailing list archives at
- http://marc.theaimsgroup.com/?l=smarty&r=1&w=2
-
-SYNOPSIS:
-
- require("Smarty.class.php");
-
- $smarty = new Smarty;
-
- $smarty->assign("Title","My Homepage");
- $smarty->assign("Names",array("John","Gary","Gregg","James"));
-
- $smarty->display("index.tpl");
-
-
-DESCRIPTION:
-
- What is Smarty?
-
- Smarty is a template engine for PHP. Many other template engines for PHP
- provide basic variable substitution and dynamic block functionality.
- Smarty takes a step further to be a "smart" template engine, adding
- features such as configuration files, template functions, and variable
- modifiers, and making all of this functionality as easy as possible to
- use for both programmers and template designers. Smarty also converts
- the templates into PHP scripts, eliminating the need to parse the
- templates on every invocation. This makes Smarty extremely scalable and
- manageable for large application needs.
-
- Some of Smarty's features:
-
- * it is extremely fast
- * no template parsing overhead, only compiles once.
- * it is smart about recompiling only the template files that have
- changed.
- * the template language is remarkably extensible via the plugin
- architecture.
- * configurable template delimiter tag syntax, so you can use
- {}, {{}}, <!--{}-->, or whatever you like.
- * built-in caching of template output.
- * arbitrary template sources (filesystem, databases, etc.)
- * template if/elseif/else/endif constructs are passed to the PHP parser,
- so the if syntax can be as simple or as complex as you like.
- * unlimited nesting of sections, conditionals, etc. allowed
- * it is possible to embed PHP code right in your template files,
- although not recommended and doubtfully needed since the engine
- is so customizable.
- * and many more.
-
-COPYRIGHT:
- Copyright (c) 2001,2002 ispi of Lincoln, Inc. All rights reserved.
- This software is released under the GNU Lesser General Public License.
- Please read the disclaimer at the top of the Smarty.class.php file.
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/RELEASE_NOTES b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/RELEASE_NOTES
deleted file mode 100644
index 7fa1b4b1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/RELEASE_NOTES
+++ /dev/null
@@ -1,423 +0,0 @@
-2.5.0
------
-
-Very minor adjustments since RC2, see the NEWS file for details.
-
-2.5.0-RC2
----------
-
-Many fixes since the RC1 release. This one is as close to production quality as
-they come, so this will be the last release before 2.5.0. The SGML documentation
-files have also been removed from the tarball. If you want them, get them from
-the CVS repository.
-
-2.5.0-RC1
----------
-
-Release Candidate 1. All $smarty vars can now be dynamic, such as
-$smarty.get.$foo. A new class function get_function_object() gets you a
-reference to an assigned object, useful within your own custom functions.
-append() can now merge as well as append with a third optional attribute. A new
-class function get_config_vars() was added, and get_template_vars() can now be
-used to get individual vars. Full variable syntax is now supported within
-double quotes via a backtick (`) syntax. Files created by smarty are now
-written to a tmp file then renamed to avoid file lock retention. html_radios,
-html_checkboxes, html_table, html_image, nl2br functions added, see the NEWS
-file for full details.
-
-2.4.2
------
-Another point release. Added support for dynamic object reference syntax
-($foo->$bar), support for full variable syntax within quotes ("$foo[0].bar"),
-and other minor fixes. See the NEWS file for full details.
-
-2.4.1
------
-
-This is basically a point release, cleaning up a few things caught
-in the 2.4.0 release. See the NEWS file for full details.
-
-2.4.0
------
-
-Smarty now supports the ability to access objects within the templates. Two
-methods are available, one which closely follows Smartys conventions, and
-another that follows more traditional object syntax for those familiar with
-PHP.
-
-The internal compiling engine has also undergone some major work. The regex
-parsing was rewritten to be much more strict, more secure and more
-maintainable. Config files are now compiled, which can speed up pages quite a
-bit that use config files extensively. Assigned variables are no longer
-extracted to PHP namespace, saving an extract call for every template. There is
-now support for applying modifiers to static values and functions. You can now
-access constants with $smarty.const.VAR. See the NEWS file for complete
-changes.
-
-2.3.1
------
-
-The mtime on compiled files will now match the source files, in the case where
-the source file may not get the current timestamp, recompiling will still work
-as expected. Proper support for open_basedir has been added, so Smarty should
-work correctly in safe mode. Added a few new features such as textformat block
-function, strip variable modifier and optgroup support for html_options. Also
-other minor bug fixes, see the Change Log.
-
-2.3.0
------
-
-Smarty now has a {debug} template function that brings up the debugging console
-right where {debug} is called, regardless of $debugging settings. This works a
-little different than turning on $debugging in the sense that it shows all the
-template variables available at the time {debug} is called, including local
-scope vars. It does not show the templates names however, since this
-executed during runtime of the template.
-
-You can now supply an expire time when clearing cache or compile files. This is
-mostly useful for removing stale files via the API.
-
-Plugins now stop execution upon error, instead of outputting a warning and
-continuing.
-
-Two new API functions, assign_by_ref() and append_by_ref() were added. They
-allow assigning template variables by reference. This can make a significant
-performance gain, especially if you are assigning large arrays of data. PHP 5.0
-will do this implicitly, so these functions are basically workarounds.
-
-Several misc bug fixes, see the Change Log for information.
-
-
-2.2.0
------
-
-Smarty now allows an array of paths for the $plugin_dir class variable. The
-directories will be searched in the order they are given, so for efficiency keep
-the most-used plugins at the top. Also, absolute paths to the plugin directories are
-more efficient than relying on the PHP include_path.
-
-Cache files can now be grouped with the cache_id. See the documentation under
-the new "Caching" section for details. compile_id also respects the same
-grouping syntax. The cache/compile file structure changed, so be sure to clear
-out all your cache and compile files when upgrading Smarty. Also if you are
-using PHP-accelerator, restart apache. I've seen some quirky things happen if
-the phpa files do not get cleared (known issue with phpa and parent
-class-member changes, so just clear 'em.)
-
-Smarty now correctly respects the PHP include_path for $template_dir, $compile_dir,
-$cache_dir, $config_dir and $plugin_dir. Be aware that relying on the
-include_path is an overhead, try to use absolute pathnames when possible
-(or relative to working directory.)
-
-Documentation has been updated and rearranged a bit. Most notably, the
-installation instructions are completely revamped, and a new Caching section
-explains Smarty's caching in detail along with the new grouping functionality.
-
-Many misc. bug fixes and enhancements, see the full ChangeLog (NEWS file) for
-details.
-
-2.1.1
------
-
-There was a bug with template paths and the include_path, this has been fixed.
-Also register_outputfilter() did not work, this is fixed. A new template
-function named "cycle" has been added to the distribution, nice for cycling
-through a list (or array) of values.
-
-2.1.0
------
-
-This release has quite a few new features and fixes. Most notable are the
-introduction of block functions, so you can write plugins that work on a block
-of text with {func}{/func} notation. Also output filters were added, so you can
-apply a function against the output of your templates. This differs from the
-postfilter function, which works on the compiled template at compile time, and
-output filters work on the template output at runtime.
-
-Many other features and bug fixes are noted in the NEWS file.
-
-
-2.0.1
------
-
-This is a point release, fixing a few bugs and cleaning things up. A plugin
-was renamed, the dash "-" was removed from compiled template and cached file
-names. If you're upgrading, you might want to clear them out first. See the
-ChangeLog for details.
-
-2.0.0
------
-
-This release is a huge milestone for Smarty. Most notable new things are a
-plugin architecture, removal of PEAR dependency, and optimizations that
-drastically improve the performance of Smarty in most cases.
-
-The plugin architecture allows modifiers, custom functions, compiler functions,
-prefilters, postfilters, resources, and insert functions to be added by
-simply dropping a file into the plugins directory. Once dropped in, they are
-automatically registered by the template engine. This makes user-contributed
-plugins easy to manage, as well as the internal workings of Smarty easy to
-control and customize. This new architecture depends on the __FILE__ constant,
-which contains the full path to the executing script. Some older versions of
-PHP incorrectly gave the script name and not the full filesystem path. Be sure
-your version of PHP populates __FILE__ correctly. If you use custom template
-resource functions, the format of these changed with the plugin architecture.
-Be sure to update your functions accordingly. See the template resource section
-of the documentation.
-
-The PEAR dependancy was removed from Smarty. The Config_File class that comes
-with Smarty was actually what needed PEAR for error handling which Smarty didn't
-use, but now everything is self-contained.
-
-Performance improvements are graphed on the benchmark page, you will see that
-overall performance has been sped up by as much as 80% in some cases.
-
-Smarty-cached pages now support If-Modified-Since headers, meaning that if a
-cached template page has not changed since the last request, a "304 Not
-Modified" header will be sent instead of resending the same page. This is
-disabled by default, change the setting of $cache_modified_check.
-
-
-1.5.2
------
-
-Mostly bug fixes, added a default template resource handler.
-
-
-1.5.1
------
-
-Critical bug fix release. If you use caching, you'll need to upgrade.
-
-
-1.5.0
------
-
-Several feature enhancements were made to this version, most notably the
-{foreach ...} command which is an alternative to {section ...} with an easier
-syntax for looping through a single array of values. Several functions were
-enhanced so that the output can be automatically assigned to a template
-variable instead of displayed (assign attribute). Cache files can now be
-controlled with a custom function as an alternative to the built-in file based
-method. Many code cleanups and bug fixed went into this release as well.
-
-
-1.4.6
------
-
-The behavior with caching and compile_check has been slightly enhanced. If
-caching is enabled AND compile_check is enabled, the cache will immediately get
-regenerated if _any_ involved template or config file is updated. This imposes
-a slight performance hit because it must check all the files for changes, so be
-sure to run live sites with caching enabled and compile_check disabled for best
-performance. If you update a template or config file, simply turn on
-compile_check, load the page, then turn it back off. This will update the cache
-file with the new content. This is accomplished by maintaining a list of
-included/loaded templates and config files at the beginning of the cache file.
-Therefore it is advisable to remove all cache files after upgrading to 1.4.6
-(although not absolutely necessary, old cache files will regenerate)
-
-The debug console now has script timing and array values printed. You MUST
-update your debug.tpl file with this version of Smarty. Also, the new debug.tpl
-will not work with older versions of Smarty.
-
-
-1.4.5
------
-
-Mostly bug fixes and minor improvements. Added compile id for separate compiled
-versions of the same script. The directory format and filename convention for
-the files in templates_c has changed, so you may want to remove all of the
-existing ones before you upgrade.
-
-
-1.4.4
------
-
-A few bug fixes, new section looping attributes and properties, debugging
-console function for control via URL, and overLib integration and access
-to request variables from within the template.
-
-
-1.4.3
------
-
-This release has a few bug fixes and several enhancements. Smarty now supports
-template security for third-party template editing. These features disallow the
-ability for someone to execute commands or PHP code from the template language.
-Smarty also now has a built-in debugging console, which is a javascript pop-up
-window that displays all the included template names and assigned variables.
-
-
-1.4.2
------
-
-This was mostly one bug fix with variable scoping within included templates
-and a few documentation changes and updates. See the ChangeLog file for full
-details.
-
-
-1.4.1
------
-
-It seems that the EX_LOCK logic from the previous release didn't fix all the
-problems with windows platforms. Hopefully this one does. It basically
-disables file locking on windows, so there is a potential that two programs
-could write over the same file at the same time, fyi.
-
-The reset is minor bug fixes, please refer to the ChangeLog file.
-
-
-1.4.0
------
-
-IMPORTANT NOTICE
-
-Smarty now has a new syntax for accessing elements within section loops. The
-new syntax is easier to use and nicely handles data structures of any
-complexity. Consequently, this breaks the old syntax.
-
-Here is an example of the syntax change:
-
-old syntax:
-{$sec1/sec2/sec3/customer.phone}
-
-new syntax:
-{$customer[$sec1][$sec2][$sec3].phone}
-
-The section names used to come first, followed by the variable name. Now the
-variable name always comes first, followed by the section names in brackets.
-You can access variable indexes anywhere, depending on how you passed the
-variables in.
-
-To fix your current templates, we have provided a script that will adjust the
-syntax for you. Located in misc/fix_vars.php, run this script from the the
-command line, giving each template as an argument. Be sure to use absolute
-pathnames, or pathnames relative to the executing script. Probably the easiest
-way to do this is to copy the fix_vars.php script into your template directory
-and run 'php -q fix_vars.php *.tpl' Be sure you have proper write permission,
-and backup your scripts first to be safe! The examples in the 1.4.0
-documentation have been updated to reflect the changes.
-
-cd /path/to/templates
-cp /path/to/fix_vars.php .
-find . -name "*.tpl" -exec php -q ./fix_vars.php {} \;
-
-NEW AND IMPROVED COMPILATION PROCESS
-
-Smarty 1.4.0 also has a new compilation process. Instead of compiling all the
-templates up front, it now compiles them at runtime. This has several
-advantages. First of all, there is no longer a need to have a single template
-directory. You can now have arbitrary template sources, such as multiple
-directories or even database calls. This also speeds the performance of Smarty
-when $compile_check is enabled, since it is only checking the template that is
-being executed instead of everything found in the template directory. The
-$tpl_file_ext is no longer needed, but kept for backward compatability.
-Templates can now be named anything you like with any extension.
-
-MINOR FIXES
-
-A workaround for LOCK_EX on Windows systems was added, and changed a couple of
-file permissions for better security on public servers.
-
-$show_info_header is now defaulted to false instead of true. This header causes
-problems when displaying content other than HTML, so now you must explicitly
-set this flag to true to show the header information (or change the default in
-your copy of Smarty.)
-
-Documentation is written in docbook format. I updated the docbook -> HTML
-generating software & style-sheets, and consequently the examples are no longer
-in a different background color. If anyone wants to contribute a better
-stylesheet or help with documentation, drop me a line. <monte@ispi.net>
-
-CHANGES/ENHANCEMENTS/UPDATES
-
-date_format, html_select_date and html_select_time used to require a unix
-timestamp as the format of the date passed into the template. Smarty is now a
-bit smarter at this. It will take a unix timestamp, a mysql timestamp, or any
-date string that is parsable by strtotime, such as 10/01/2001 or 2001-10-01,
-etc. Just give some formats a try and see what works.
-
-Smarty now has template prefilters, meaning that you can run your templates
-through custom functions before they are compiled. This is good for things like
-removing unwanted comments, keeping an eye on words or functionality people are
-putting in templates, translating XML -> HTML, etc. See the register_prefilter
-documentation for more info.
-
-Another addition are the so-called compiler functions. These are custom
-functions registered by the user that are executed at compilation time of the
-template. They can be used to inject PHP code or time-sensitive static content
-into the compiled template.
-
-The run-time custom functions are now passed the Smarty object as the second
-parameter. This can be used, for example, to assign or clear template variables
-from inside the custom function.
-
-clear_compile_dir() was added for clearing out compiled versions of your
-templates. Not something normally needed, but you may have a need for this if
-you have $compile_check set to false and you periodically update templates via
-some automated process. As of 1.4.0, uncompiled templates _always_ get
-compiled regardless of $compile_check setting, although they won't be checked
-for recompile if $compile_check is set to false.
-
-You can now refer to properties of objects assigned from PHP by using the '->'
-symbol and specifying the property name after it, e.g. $foo->bar.
-
-{php}{/php} tags were added to embed php into the templates. Not normally
-needed, but some circumstances may call for it. Check out the "componentized
-templates" tip in the documentation for an example.
-
-{capture}{/capture} and {counter} functions were added. See the documentation
-for a complete description and examples.
-
-UPGRADE NOTES
-
-The format of the files created in the $compile_dir are now a bit different.
-The compiled template filename is the template resource name url-encoded.
-Therefore, all compiled files are now in the top directory of $compile_dir.
-This was done to make way for arbitrary template resources. Each compiled
-template also has a header that states what template resource was used to
-create it. From a unix command prompt, you can use "head -2 *" to see the first
-two lines of each file.
-
-When upgrading to 1.4.0, you will want to clear out all your old files in the
-$compile_dir. If you have $compile_check set to false and the compiled template
-does not yet exist, it will compile it regardless of this setting. This way you
-can clear out the $compile_dir and not worry about setting $compile_check to
-true to get the inital compilation under way.
-
-
-1.3.2
------
-
-Smarty now has (an optional) header prepended to the output of the Smarty
-templates. This displays the Smarty version and the date/time when the page was
-generated. This is useful for debugging your cache routines, and purely
-informational so there is evidence that the page was generated by Smarty. Set
-$show_info_header to false to disable it.
-
-{config_load ...} performance was tuned by placing the loaded variables into a
-global array, so basically a config file is read from the file system and
-placed into a php array structure only once, no matter how many times it is
-called in any of the templates. The scope of the loaded variables has changed a
-bit as well. Variables loaded by config_load used to be treated as global
-variables, meaning that parent templates (templates that included the current
-template) could see them. Now the default behavior is such that loaded
-variables are only visible by the current template and child templates (all
-templates included after the {config_load ...} is called.) To mimic the
-original behavior, provide the attribute "global=yes" like so: {config_load
-file="mystuff.conf" global=yes}. Now when you load in mystuff.conf, the
-variables will be visible to parent templates (merged with any existing config
-variables.)
-
-A formatting attribute was added to the {math ...} function, adding the ability
-to control the format of the output. Use the same formatting syntax as the PHP
-function sprintf().
-
-{html_select_time ...} was added, a custom function that works much like
-{html_select_date ...} except it displays time elements instead of dates.
-
-A few custom modifiers were added: count_characters, count_words,
-count_sentences, count_paragraphs. All pretty self-explanatory.
-
-/* vim: set et: */
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/TODO b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/TODO
deleted file mode 100644
index 183dd7ae..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/TODO
+++ /dev/null
@@ -1,12 +0,0 @@
-* handle asp style tags in $php_handler
-* support implementations of prefiltes, mods, and others as class methods.
-* ability to concatenate values/strings together
-* fix all E_NOTICE warnings
-* make simple math easier
-* caching all but parts of the template
-* change plugins so $smarty variable always comes first
-* get cache ttl with function call
-FIX: make inserts use normal functions before plugins
-UPD: change it so that if template comes from some resource,
- that resource stays as the default, no need to specify it
- in includes.
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Config_File.class.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Config_File.class.php
deleted file mode 100644
index 2b99af21..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Config_File.class.php
+++ /dev/null
@@ -1,365 +0,0 @@
-<?php
-
-/**
- * Config_File class.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * You may contact the author of Config_File by e-mail at:
- * {@link andrei@php.net}
- *
- * The latest version of Config_File can be obtained from:
- * http://smarty.php.net/
- *
- * @link http://smarty.php.net/
- * @version 2.6.0
- * @copyright Copyright: 2001-2003 ispi of Lincoln, Inc.
- * @author Andrei Zmievski <andrei@php.net>
- * @access public
- * @package Smarty
- */
-
-/* $Id: Config_File.class.php,v 1.1 2005/10/17 18:37:39 jeichorn Exp $ */
-/**
- * Config file reading class
- * @package Smarty
- */
-class Config_File {
- /**#@+
- * Options
- * @var boolean
- */
- /**
- * Controls whether variables with the same name overwrite each other.
- */
- var $overwrite = true;
-
- /**
- * Controls whether config values of on/true/yes and off/false/no get
- * converted to boolean values automatically.
- */
- var $booleanize = true;
-
- /**
- * Controls whether hidden config sections/vars are read from the file.
- */
- var $read_hidden = true;
-
- /**
- * Controls whether or not to fix mac or dos formatted newlines.
- * If set to true, \r or \r\n will be changed to \n.
- */
- var $fix_newlines = true;
- /**#@-*/
-
- /** @access private */
- var $_config_path = "";
- var $_config_data = array();
- /**#@-*/
-
- /**
- * Constructs a new config file class.
- *
- * @param string $config_path (optional) path to the config files
- */
- function Config_File($config_path = NULL)
- {
- if (isset($config_path))
- $this->set_path($config_path);
- }
-
-
- /**
- * Set the path where configuration files can be found.
- *
- * @param string $config_path path to the config files
- */
- function set_path($config_path)
- {
- if (!empty($config_path)) {
- if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) {
- $this->_trigger_error_msg("Bad config file path '$config_path'");
- return;
- }
- if(substr($config_path, -1) != DIRECTORY_SEPARATOR) {
- $config_path .= DIRECTORY_SEPARATOR;
- }
-
- $this->_config_path = $config_path;
- }
- }
-
-
- /**
- * Retrieves config info based on the file, section, and variable name.
- *
- * @param string $file_name config file to get info for
- * @param string $section_name (optional) section to get info for
- * @param string $var_name (optional) variable to get info for
- * @return string|array a value or array of values
- */
- function &get($file_name, $section_name = NULL, $var_name = NULL)
- {
- if (empty($file_name)) {
- $this->_trigger_error_msg('Empty config file name');
- return;
- } else {
- $file_name = $this->_config_path . $file_name;
- if (!isset($this->_config_data[$file_name]))
- $this->load_file($file_name, false);
- }
-
- if (!empty($var_name)) {
- if (empty($section_name)) {
- return $this->_config_data[$file_name]["vars"][$var_name];
- } else {
- if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]))
- return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name];
- else
- return array();
- }
- } else {
- if (empty($section_name)) {
- return (array)$this->_config_data[$file_name]["vars"];
- } else {
- if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"]))
- return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"];
- else
- return array();
- }
- }
- }
-
-
- /**
- * Retrieves config info based on the key.
- *
- * @param $file_name string config key (filename/section/var)
- * @return string|array same as get()
- * @uses get() retrieves information from config file and returns it
- */
- function &get_key($config_key)
- {
- list($file_name, $section_name, $var_name) = explode('/', $config_key, 3);
- $result = &$this->get($file_name, $section_name, $var_name);
- return $result;
- }
-
- /**
- * Get all loaded config file names.
- *
- * @return array an array of loaded config file names
- */
- function get_file_names()
- {
- return array_keys($this->_config_data);
- }
-
-
- /**
- * Get all section names from a loaded file.
- *
- * @param string $file_name config file to get section names from
- * @return array an array of section names from the specified file
- */
- function get_section_names($file_name)
- {
- $file_name = $this->_config_path . $file_name;
- if (!isset($this->_config_data[$file_name])) {
- $this->_trigger_error_msg("Unknown config file '$file_name'");
- return;
- }
-
- return array_keys($this->_config_data[$file_name]["sections"]);
- }
-
-
- /**
- * Get all global or section variable names.
- *
- * @param string $file_name config file to get info for
- * @param string $section_name (optional) section to get info for
- * @return array an array of variables names from the specified file/section
- */
- function get_var_names($file_name, $section = NULL)
- {
- if (empty($file_name)) {
- $this->_trigger_error_msg('Empty config file name');
- return;
- } else if (!isset($this->_config_data[$file_name])) {
- $this->_trigger_error_msg("Unknown config file '$file_name'");
- return;
- }
-
- if (empty($section))
- return array_keys($this->_config_data[$file_name]["vars"]);
- else
- return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]);
- }
-
-
- /**
- * Clear loaded config data for a certain file or all files.
- *
- * @param string $file_name file to clear config data for
- */
- function clear($file_name = NULL)
- {
- if ($file_name === NULL)
- $this->_config_data = array();
- else if (isset($this->_config_data[$file_name]))
- $this->_config_data[$file_name] = array();
- }
-
-
- /**
- * Load a configuration file manually.
- *
- * @param string $file_name file name to load
- * @param boolean $prepend_path whether current config path should be
- * prepended to the filename
- */
- function load_file($file_name, $prepend_path = true)
- {
- if ($prepend_path && $this->_config_path != "")
- $config_file = $this->_config_path . $file_name;
- else
- $config_file = $file_name;
-
- ini_set('track_errors', true);
- $fp = @fopen($config_file, "r");
- if (!is_resource($fp)) {
- $this->_trigger_error_msg("Could not open config file '$config_file'");
- return false;
- }
-
- $contents = fread($fp, filesize($config_file));
- fclose($fp);
-
- if($this->fix_newlines) {
- // fix mac/dos formatted newlines
- $contents = preg_replace('!\r\n?!',"\n",$contents);
- }
-
- $config_data = array();
-
- /* replace all multi-line values by placeholders */
- if (preg_match_all('/"""(.*)"""/Us', $contents, $match)) {
- $_triple_quotes = $match[1];
- $_i = 0;
- $contents = preg_replace('/""".*"""/Use', '"\x1b\x1b\x1b".$_i++."\x1b\x1b\x1b"', $contents);
- } else {
- $_triple_quotes = null;
- }
-
- /* Get global variables first. */
- if ($contents{0} != '[' && preg_match("/^(.*?)(\n\[|\Z)/s", $contents, $match))
- $config_data["vars"] = $this->_parse_config_block($match[1], $_triple_quotes);
-
- /* Get section variables. */
- $config_data["sections"] = array();
- preg_match_all("/^\[(.*?)\]/m", $contents, $match);
- foreach ($match[1] as $section) {
- if ($section{0} == '.' && !$this->read_hidden)
- continue;
- if (preg_match("/\[".preg_quote($section, '/')."\](.*?)(\n\[|\Z)/s", $contents, $match))
- if ($section{0} == '.')
- $section = substr($section, 1);
- $config_data["sections"][$section]["vars"] = $this->_parse_config_block($match[1], $_triple_quotes);
- }
-
- $this->_config_data[$config_file] = $config_data;
-
- return true;
- }
-
- /**#@+ @access private */
- /**
- * @var string $config_block
- */
- function _parse_config_block($config_block, $triple_quotes)
- {
- $vars = array();
-
- /* First we grab the multi-line values. */
- if (preg_match_all("/^([^=\n]+)=\s*\x1b\x1b\x1b(\d+)\x1b\x1b\x1b\s*$/ms", $config_block, $match, PREG_SET_ORDER)) {
- for ($i = 0; $i < count($match); $i++) {
- $this->_set_config_var($vars, trim($match[$i][1]), $triple_quotes[$match[$i][2]], false);
- }
- $config_block = preg_replace("/^[^=\n]+=\s*\x1b\x1b\x1b\d+\x1b\x1b\x1b\s*$/ms", "", $config_block);
- }
-
-
- $config_lines = preg_split("/\n+/", $config_block);
-
- foreach ($config_lines as $line) {
- if (preg_match("/^\s*(\.?\w+)\s*=(.*)/", $line, $match)) {
- $var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', trim($match[2]));
- $this->_set_config_var($vars, trim($match[1]), $var_value, $this->booleanize);
- }
- }
-
- return $vars;
- }
-
- /**
- * @param array &$container
- * @param string $var_name
- * @param mixed $var_value
- * @param boolean $booleanize determines whether $var_value is converted to
- * to true/false
- */
- function _set_config_var(&$container, $var_name, $var_value, $booleanize)
- {
- if ($var_name{0} == '.') {
- if (!$this->read_hidden)
- return;
- else
- $var_name = substr($var_name, 1);
- }
-
- if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) {
- $this->_trigger_error_msg("Bad variable name '$var_name'");
- return;
- }
-
- if ($booleanize) {
- if (preg_match("/^(on|true|yes)$/i", $var_value))
- $var_value = true;
- else if (preg_match("/^(off|false|no)$/i", $var_value))
- $var_value = false;
- }
-
- if (!isset($container[$var_name]) || $this->overwrite)
- $container[$var_name] = $var_value;
- else {
- settype($container[$var_name], 'array');
- $container[$var_name][] = $var_value;
- }
- }
-
- /**
- * @uses trigger_error() creates a PHP warning/error
- * @param string $error_msg
- * @param integer $error_type one of
- */
- function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING)
- {
- trigger_error("Config_File error: $error_msg", $error_type);
- }
- /**#@-*/
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty.class.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty.class.php
deleted file mode 100644
index 1909acab..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty.class.php
+++ /dev/null
@@ -1,2010 +0,0 @@
-<?php
-
-/**
- * Project: Smarty: the PHP compiling template engine
- * File: Smarty.class.php
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * For questions, help, comments, discussion, etc., please join the
- * Smarty mailing list. Send a blank e-mail to
- * smarty-general-subscribe@lists.php.net
- *
- * You may contact the authors of Smarty by e-mail at:
- * monte@ispi.net
- * andrei@php.net
- *
- * Or, write to:
- * Monte Ohrt
- * Director of Technology, ispi
- * 237 S. 70th suite 220
- * Lincoln, NE 68510
- *
- * The latest version of Smarty can be obtained from:
- * http://smarty.php.net/
- *
- * @link http://smarty.php.net/
- * @copyright 2001-2003 ispi of Lincoln, Inc.
- * @author Monte Ohrt <monte@ispi.net>
- * @author Andrei Zmievski <andrei@php.net>
- * @package Smarty
- * @version 2.6.0
- */
-
-/* $Id: Smarty.class.php,v 1.1 2005/10/17 18:37:39 jeichorn Exp $ */
-
-/**
- * DIR_SEP isn't used anymore, but third party apps might
- */
-if(!defined('DIR_SEP')) {
- define('DIR_SEP', DIRECTORY_SEPARATOR);
-}
-
-/**
- * set SMARTY_DIR to absolute path to Smarty library files.
- * if not defined, include_path will be used. Sets SMARTY_DIR only if user
- * application has not already defined it.
- */
-
-if (!defined('SMARTY_DIR')) {
- define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
-}
-
-define('SMARTY_PHP_PASSTHRU', 0);
-define('SMARTY_PHP_QUOTE', 1);
-define('SMARTY_PHP_REMOVE', 2);
-define('SMARTY_PHP_ALLOW', 3);
-
-/**
- * @package Smarty
- */
-class Smarty
-{
- /**#@+
- * Smarty Configuration Section
- */
-
- /**
- * The name of the directory where templates are located.
- *
- * @var string
- */
- var $template_dir = 'templates';
-
- /**
- * The directory where compiled templates are located.
- *
- * @var string
- */
- var $compile_dir = 'templates_c';
-
- /**
- * The directory where config files are located.
- *
- * @var string
- */
- var $config_dir = 'configs';
-
- /**
- * An array of directories searched for plugins.
- *
- * @var array
- */
- var $plugins_dir = array('plugins');
-
- /**
- * If debugging is enabled, a debug console window will display
- * when the page loads (make sure your browser allows unrequested
- * popup windows)
- *
- * @var boolean
- */
- var $debugging = false;
-
- /**
- * This is the path to the debug console template. If not set,
- * the default one will be used.
- *
- * @var string
- */
- var $debug_tpl = '';
-
- /**
- * This determines if debugging is enable-able from the browser.
- * <ul>
- * <li>NONE => no debugging control allowed</li>
- * <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
- * </ul>
- * @link http://www.foo.dom/index.php?SMARTY_DEBUG
- * @var string
- */
- var $debugging_ctrl = 'NONE';
-
- /**
- * This tells Smarty whether to check for recompiling or not. Recompiling
- * does not need to happen unless a template or config file is changed.
- * Typically you enable this during development, and disable for
- * production.
- *
- * @var boolean
- */
- var $compile_check = true;
-
- /**
- * This forces templates to compile every time. Useful for development
- * or debugging.
- *
- * @var boolean
- */
- var $force_compile = false;
-
- /**
- * This enables template caching.
- * <ul>
- * <li>0 = no caching</li>
- * <li>1 = use class cache_lifetime value</li>
- * <li>2 = use cache_lifetime in cache file</li>
- * </ul>
- * @var integer
- */
- var $caching = 0;
-
- /**
- * The name of the directory for cache files.
- *
- * @var string
- */
- var $cache_dir = 'cache';
-
- /**
- * This is the number of seconds cached content will persist.
- * <ul>
- * <li>0 = always regenerate cache</li>
- * <li>-1 = never expires</li>
- * </ul>
- *
- * @var integer
- */
- var $cache_lifetime = 3600;
-
- /**
- * Only used when $caching is enabled. If true, then If-Modified-Since headers
- * are respected with cached content, and appropriate HTTP headers are sent.
- * This way repeated hits to a cached page do not send the entire page to the
- * client every time.
- *
- * @var boolean
- */
- var $cache_modified_check = false;
-
- /**
- * This determines how Smarty handles "<?php ... ?>" tags in templates.
- * possible values:
- * <ul>
- * <li>SMARTY_PHP_PASSTHRU -> print tags as plain text</li>
- * <li>SMARTY_PHP_QUOTE -> escape tags as entities</li>
- * <li>SMARTY_PHP_REMOVE -> remove php tags</li>
- * <li>SMARTY_PHP_ALLOW -> execute php tags</li>
- * </ul>
- *
- * @var integer
- */
- var $php_handling = SMARTY_PHP_PASSTHRU;
-
- /**
- * This enables template security. When enabled, many things are restricted
- * in the templates that normally would go unchecked. This is useful when
- * untrusted parties are editing templates and you want a reasonable level
- * of security. (no direct execution of PHP in templates for example)
- *
- * @var boolean
- */
- var $security = false;
-
- /**
- * This is the list of template directories that are considered secure. This
- * is used only if {@link $security} is enabled. One directory per array
- * element. {@link $template_dir} is in this list implicitly.
- *
- * @var array
- */
- var $secure_dir = array();
-
- /**
- * These are the security settings for Smarty. They are used only when
- * {@link $security} is enabled.
- *
- * @var array
- */
- var $security_settings = array(
- 'PHP_HANDLING' => false,
- 'IF_FUNCS' => array('array', 'list',
- 'isset', 'empty',
- 'count', 'sizeof',
- 'in_array', 'is_array',
- 'true','false'),
- 'INCLUDE_ANY' => false,
- 'PHP_TAGS' => false,
- 'MODIFIER_FUNCS' => array('count'),
- 'ALLOW_CONSTANTS' => false
- );
-
- /**
- * This is an array of directories where trusted php scripts reside.
- * {@link $security} is disabled during their inclusion/execution.
- *
- * @var array
- */
- var $trusted_dir = array();
-
- /**
- * The left delimiter used for the template tags.
- *
- * @var string
- */
- var $left_delimiter = '{';
-
- /**
- * The right delimiter used for the template tags.
- *
- * @var string
- */
- var $right_delimiter = '}';
-
- /**
- * The order in which request variables are registered, similar to
- * variables_order in php.ini E = Environment, G = GET, P = POST,
- * C = Cookies, S = Server
- *
- * @var string
- */
- var $request_vars_order = "EGPCS";
-
- /**
- * Indicates wether $HTTP_*_VARS[] (request_use_auto_globals=false)
- * are uses as request-vars or $_*[]-vars. note: if
- * request_use_auto_globals is true, then $request_vars_order has
- * no effect, but the php-ini-value "gpc_order"
- *
- * @var boolean
- */
- var $request_use_auto_globals = false;
-
- /**
- * Set this if you want different sets of compiled files for the same
- * templates. This is useful for things like different languages.
- * Instead of creating separate sets of templates per language, you
- * set different compile_ids like 'en' and 'de'.
- *
- * @var string
- */
- var $compile_id = null;
-
- /**
- * This tells Smarty whether or not to use sub dirs in the cache/ and
- * templates_c/ directories. sub directories better organized, but
- * may not work well with PHP safe mode enabled.
- *
- * @var boolean
- *
- */
- var $use_sub_dirs = true;
-
- /**
- * This is a list of the modifiers to apply to all template variables.
- * Put each modifier in a separate array element in the order you want
- * them applied. example: <code>array('escape:"htmlall"');</code>
- *
- * @var array
- */
- var $default_modifiers = array();
-
- /**
- * This is the resource type to be used when not specified
- * at the beginning of the resource path. examples:
- * $smarty->display('file:index.tpl');
- * $smarty->display('db:index.tpl');
- * $smarty->display('index.tpl'); // will use default resource type
- * {include file="file:index.tpl"}
- * {include file="db:index.tpl"}
- * {include file="index.tpl"} {* will use default resource type *}
- *
- * @var array
- */
- var $default_resource_type = 'file';
-
- /**
- * The function used for cache file handling. If not set, built-in caching is used.
- *
- * @var null|string function name
- */
- var $cache_handler_func = null;
-
- /**
- * These are the variables from the globals array that are
- * assigned to all templates automatically. This isn't really
- * necessary any more, you can use the $smarty var to access them
- * directly.
- *
- * @var array
- */
- var $global_assign = array('HTTP_SERVER_VARS' => array('SCRIPT_NAME'));
-
- /**
- * The value of "undefined". Leave it alone :-)
- *
- * @var null
- */
- var $undefined = null;
-
- /**
- * This indicates which filters are automatically loaded into Smarty.
- *
- * @var array array of filter names
- */
- var $autoload_filters = array();
-
- /**#@+
- * @var boolean
- */
- /**
- * This tells if config file vars of the same name overwrite each other or not.
- * if disabled, same name variables are accumulated in an array.
- */
- var $config_overwrite = true;
-
- /**
- * This tells whether or not to automatically booleanize config file variables.
- * If enabled, then the strings "on", "true", and "yes" are treated as boolean
- * true, and "off", "false" and "no" are treated as boolean false.
- */
- var $config_booleanize = true;
-
- /**
- * This tells whether hidden sections [.foobar] are readable from the
- * tempalates or not. Normally you would never allow this since that is
- * the point behind hidden sections: the application can access them, but
- * the templates cannot.
- */
- var $config_read_hidden = false;
-
- /**
- * This tells whether or not automatically fix newlines in config files.
- * It basically converts \r (mac) or \r\n (dos) to \n
- */
- var $config_fix_newlines = true;
- /**#@-*/
-
- /**
- * If a template cannot be found, this PHP function will be executed.
- * Useful for creating templates on-the-fly or other special action.
- *
- * @var string function name
- */
- var $default_template_handler_func = '';
-
- /**
- * The file that contains the compiler class. This can a full
- * pathname, or relative to the php_include path.
- *
- * @var string
- */
- var $compiler_file = 'Smarty_Compiler.class.php';
-
- /**
- * The class used for compiling templates.
- *
- * @var string
- */
- var $compiler_class = 'Smarty_Compiler';
-
- /**
- * The class used to load config vars.
- *
- * @var string
- */
- var $config_class = 'Config_File';
-
-/**#@+
- * END Smarty Configuration Section
- * There should be no need to touch anything below this line.
- * @access private
- */
- /**
- * error messages. true/false
- *
- * @var boolean
- */
- var $_error_msg = false;
-
- /**
- * where assigned template vars are kept
- *
- * @var array
- */
- var $_tpl_vars = array();
-
- /**
- * stores run-time $smarty.* vars
- *
- * @var null|array
- */
- var $_smarty_vars = null;
-
- /**
- * keeps track of sections
- *
- * @var array
- */
- var $_sections = array();
-
- /**
- * keeps track of foreach blocks
- *
- * @var array
- */
- var $_foreach = array();
-
- /**
- * keeps track of tag hierarchy
- *
- * @var array
- */
- var $_tag_stack = array();
-
- /**
- * configuration object
- *
- * @var Config_file
- */
- var $_conf_obj = null;
-
- /**
- * loaded configuration settings
- *
- * @var array
- */
- var $_config = array(array('vars' => array(), 'files' => array()));
-
- /**
- * md5 checksum of the string 'Smarty'
- *
- * @var string
- */
- var $_smarty_md5 = 'f8d698aea36fcbead2b9d5359ffca76f';
-
- /**
- * Smarty version number
- *
- * @var string
- */
- var $_version = '2.6.0';
-
- /**
- * current template inclusion depth
- *
- * @var integer
- */
- var $_inclusion_depth = 0;
-
- /**
- * for different compiled templates
- *
- * @var string
- */
- var $_compile_id = null;
-
- /**
- * text in URL to enable debug mode
- *
- * @var string
- */
- var $_smarty_debug_id = 'SMARTY_DEBUG';
-
- /**
- * debugging information for debug console
- *
- * @var array
- */
- var $_smarty_debug_info = array();
-
- /**
- * info that makes up a cache file
- *
- * @var array
- */
- var $_cache_info = array();
-
- /**
- * default file permissions
- *
- * @var integer
- */
- var $_file_perms = 0644;
-
- /**
- * default dir permissions
- *
- * @var integer
- */
- var $_dir_perms = 0771;
-
- /**
- * registered objects
- *
- * @var array
- */
- var $_reg_objects = array();
-
- /**
- * table keeping track of plugins
- *
- * @var array
- */
- var $_plugins = array(
- 'modifier' => array(),
- 'function' => array(),
- 'block' => array(),
- 'compiler' => array(),
- 'prefilter' => array(),
- 'postfilter' => array(),
- 'outputfilter' => array(),
- 'resource' => array(),
- 'insert' => array());
-
-
- /**
- * cache serials
- *
- * @var array
- */
- var $_cache_serials = array();
-
- /**
- * name of optional cache include file
- *
- * @var string
- */
- var $_cache_include = null;
-
- /**
- * indicate if the current code is used in a compiled
- * include
- *
- * @var string
- */
- var $_cache_including = false;
-
- /**#@-*/
- /**
- * The class constructor.
- *
- * @uses $global_assign uses {@link assign()} to assign each corresponding
- * value from $GLOBALS to the template vars
- */
- function Smarty()
- {
- foreach ($this->global_assign as $key => $var_name) {
- if (is_array($var_name)) {
- foreach ($var_name as $var) {
- if (isset($GLOBALS[$key][$var])) {
- $this->assign($var, $GLOBALS[$key][$var]);
- } else {
- $this->assign($var, $this->undefined);
- }
- }
- } else {
- if (isset($GLOBALS[$var_name])) {
- $this->assign($var_name, $GLOBALS[$var_name]);
- } else {
- $this->assign($var_name, $this->undefined);
- }
- }
- }
- }
-
-
- /**
- * assigns values to template variables
- *
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to assign
- */
- function assign($tpl_var, $value = null)
- {
- if (is_array($tpl_var)){
- foreach ($tpl_var as $key => $val) {
- if ($key != '') {
- $this->_tpl_vars[$key] = $val;
- }
- }
- } else {
- if ($tpl_var != '')
- $this->_tpl_vars[$tpl_var] = $value;
- }
- }
-
- /**
- * assigns values to template variables by reference
- *
- * @param string $tpl_var the template variable name
- * @param mixed $value the referenced value to assign
- */
- function assign_by_ref($tpl_var, &$value)
- {
- if ($tpl_var != '')
- $this->_tpl_vars[$tpl_var] = &$value;
- }
-
- /**
- * appends values to template variables
- *
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to append
- */
- function append($tpl_var, $value=null, $merge=false)
- {
- if (is_array($tpl_var)) {
- // $tpl_var is an array, ignore $value
- foreach ($tpl_var as $_key => $_val) {
- if ($_key != '') {
- if(!@is_array($this->_tpl_vars[$_key])) {
- settype($this->_tpl_vars[$_key],'array');
- }
- if($merge && is_array($_val)) {
- foreach($_val as $_mkey => $_mval) {
- $this->_tpl_vars[$_key][$_mkey] = $_mval;
- }
- } else {
- $this->_tpl_vars[$_key][] = $_val;
- }
- }
- }
- } else {
- if ($tpl_var != '' && isset($value)) {
- if(!@is_array($this->_tpl_vars[$tpl_var])) {
- settype($this->_tpl_vars[$tpl_var],'array');
- }
- if($merge && is_array($value)) {
- foreach($value as $_mkey => $_mval) {
- $this->_tpl_vars[$tpl_var][$_mkey] = $_mval;
- }
- } else {
- $this->_tpl_vars[$tpl_var][] = $value;
- }
- }
- }
- }
-
- /**
- * appends values to template variables by reference
- *
- * @param string $tpl_var the template variable name
- * @param mixed $value the referenced value to append
- */
- function append_by_ref($tpl_var, &$value, $merge=false)
- {
- if ($tpl_var != '' && isset($value)) {
- if(!@is_array($this->_tpl_vars[$tpl_var])) {
- settype($this->_tpl_vars[$tpl_var],'array');
- }
- if ($merge && is_array($value)) {
- foreach($value as $_key => $_val) {
- $this->_tpl_vars[$tpl_var][$_key] = &$value[$_key];
- }
- } else {
- $this->_tpl_vars[$tpl_var][] = &$value;
- }
- }
- }
-
-
- /**
- * clear the given assigned template variable.
- *
- * @param string $tpl_var the template variable to clear
- */
- function clear_assign($tpl_var)
- {
- if (is_array($tpl_var))
- foreach ($tpl_var as $curr_var)
- unset($this->_tpl_vars[$curr_var]);
- else
- unset($this->_tpl_vars[$tpl_var]);
- }
-
-
- /**
- * Registers custom function to be used in templates
- *
- * @param string $function the name of the template function
- * @param string $function_impl the name of the PHP function to register
- */
- function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null)
- {
- $this->_plugins['function'][$function] =
- array($function_impl, null, null, false, $cacheable, $cache_attrs);
-
- }
-
- /**
- * Unregisters custom function
- *
- * @param string $function name of template function
- */
- function unregister_function($function)
- {
- unset($this->_plugins['function'][$function]);
- }
-
- /**
- * Registers object to be used in templates
- *
- * @param string $object name of template object
- * @param object &$object_impl the referenced PHP object to register
- * @param null|array $allowed list of allowed methods (empty = all)
- * @param boolean $smarty_args smarty argument format, else traditional
- * @param null|array $block_functs list of methods that are block format
- */
- function register_object($object, &$object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
- {
- settype($allowed, 'array');
- settype($smarty_args, 'boolean');
- $this->_reg_objects[$object] =
- array(&$object_impl, $allowed, $smarty_args, $block_methods);
- }
-
- /**
- * Unregisters object
- *
- * @param string $object name of template object
- */
- function unregister_object($object)
- {
- unset($this->_reg_objects[$object]);
- }
-
-
- /**
- * Registers block function to be used in templates
- *
- * @param string $block name of template block
- * @param string $block_impl PHP function to register
- */
- function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null)
- {
- $this->_plugins['block'][$block] =
- array($block_impl, null, null, false, $cacheable, $cache_attrs);
- }
-
- /**
- * Unregisters block function
- *
- * @param string $block name of template function
- */
- function unregister_block($block)
- {
- unset($this->_plugins['block'][$block]);
- }
-
- /**
- * Registers compiler function
- *
- * @param string $function name of template function
- * @param string $function_impl name of PHP function to register
- */
- function register_compiler_function($function, $function_impl, $cacheable=true)
- {
- $this->_plugins['compiler'][$function] =
- array($function_impl, null, null, false, $cacheable);
- }
-
- /**
- * Unregisters compiler function
- *
- * @param string $function name of template function
- */
- function unregister_compiler_function($function)
- {
- unset($this->_plugins['compiler'][$function]);
- }
-
- /**
- * Registers modifier to be used in templates
- *
- * @param string $modifier name of template modifier
- * @param string $modifier_impl name of PHP function to register
- */
- function register_modifier($modifier, $modifier_impl)
- {
- $this->_plugins['modifier'][$modifier] =
- array($modifier_impl, null, null, false);
- }
-
- /**
- * Unregisters modifier
- *
- * @param string $modifier name of template modifier
- */
- function unregister_modifier($modifier)
- {
- unset($this->_plugins['modifier'][$modifier]);
- }
-
- /**
- * Registers a resource to fetch a template
- *
- * @param string $type name of resource
- * @param array $functions array of functions to handle resource
- */
- function register_resource($type, $functions)
- {
- if (count($functions)==4) {
- $this->_plugins['resource'][$type] =
- array($functions, false);
-
- } elseif (count($functions)==5) {
- $this->_plugins['resource'][$type] =
- array(array(array(&$functions[0], $functions[1])
- ,array(&$functions[0], $functions[2])
- ,array(&$functions[0], $functions[3])
- ,array(&$functions[0], $functions[4]))
- ,false);
-
- } else {
- $this->trigger_error("malformed function-list for '$type' in register_resource");
-
- }
- }
-
- /**
- * Unregisters a resource
- *
- * @param string $type name of resource
- */
- function unregister_resource($type)
- {
- unset($this->_plugins['resource'][$type]);
- }
-
- /**
- * Registers a prefilter function to apply
- * to a template before compiling
- *
- * @param string $function name of PHP function to register
- */
- function register_prefilter($function)
- {
- $_name = (is_array($function)) ? $function[1] : $function;
- $this->_plugins['prefilter'][$_name]
- = array($function, null, null, false);
- }
-
- /**
- * Unregisters a prefilter function
- *
- * @param string $function name of PHP function
- */
- function unregister_prefilter($function)
- {
- unset($this->_plugins['prefilter'][$function]);
- }
-
- /**
- * Registers a postfilter function to apply
- * to a compiled template after compilation
- *
- * @param string $function name of PHP function to register
- */
- function register_postfilter($function)
- {
- $_name = (is_array($function)) ? $function[1] : $function;
- $this->_plugins['postfilter'][$_name]
- = array($function, null, null, false);
- }
-
- /**
- * Unregisters a postfilter function
- *
- * @param string $function name of PHP function
- */
- function unregister_postfilter($function)
- {
- unset($this->_plugins['postfilter'][$function]);
- }
-
- /**
- * Registers an output filter function to apply
- * to a template output
- *
- * @param string $function name of PHP function
- */
- function register_outputfilter($function)
- {
- $_name = (is_array($function)) ? $function[1] : $function;
- $this->_plugins['outputfilter'][$_name]
- = array($function, null, null, false);
- }
-
- /**
- * Unregisters an outputfilter function
- *
- * @param string $function name of PHP function
- */
- function unregister_outputfilter($function)
- {
- unset($this->_plugins['outputfilter'][$function]);
- }
-
- /**
- * load a filter of specified type and name
- *
- * @param string $type filter type
- * @param string $name filter name
- */
- function load_filter($type, $name)
- {
- switch ($type) {
- case 'output':
- $_params = array('plugins' => array(array($type . 'filter', $name, null, null, false)));
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
- smarty_core_load_plugins($_params, $this);
- break;
-
- case 'pre':
- case 'post':
- if (!isset($this->_plugins[$type . 'filter'][$name]))
- $this->_plugins[$type . 'filter'][$name] = false;
- break;
- }
- }
-
- /**
- * clear cached content for the given template and cache id
- *
- * @param string $tpl_file name of template file
- * @param string $cache_id name of cache_id
- * @param string $compile_id name of compile_id
- * @param string $exp_time expiration time
- * @return boolean
- */
- function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
- {
-
- if (!isset($compile_id))
- $compile_id = $this->compile_id;
-
- if (!isset($tpl_file))
- $compile_id = null;
-
- $_auto_id = $this->_get_auto_id($cache_id, $compile_id);
-
- if (!empty($this->cache_handler_func)) {
- return call_user_func_array($this->cache_handler_func,
- array('clear', &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time));
- } else {
- $_params = array('auto_base' => $this->cache_dir,
- 'auto_source' => $tpl_file,
- 'auto_id' => $_auto_id,
- 'exp_time' => $exp_time);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rm_auto.php');
- return smarty_core_rm_auto($_params, $this);
- }
-
- }
-
-
- /**
- * clear the entire contents of cache (all templates)
- *
- * @param string $exp_time expire time
- * @return boolean results of {@link smarty_core_rm_auto()}
- */
- function clear_all_cache($exp_time = null)
- {
- if (!empty($this->cache_handler_func)) {
- $dummy = null;
- call_user_func_array($this->cache_handler_func,
- array('clear', &$this, &$dummy, null, null, null, $exp_time));
- } else {
- $_params = array('auto_base' => $this->cache_dir,
- 'auto_source' => null,
- 'auto_id' => null,
- 'exp_time' => $exp_time);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rm_auto.php');
- return smarty_core_rm_auto($_params, $this);
- }
- }
-
-
- /**
- * test to see if valid cache exists for this template
- *
- * @param string $tpl_file name of template file
- * @param string $cache_id
- * @param string $compile_id
- * @return string|false results of {@link _read_cache_file()}
- */
- function is_cached($tpl_file, $cache_id = null, $compile_id = null)
- {
- if (!$this->caching)
- return false;
-
- if (!isset($compile_id))
- $compile_id = $this->compile_id;
-
- $_params = array(
- 'tpl_file' => $tpl_file,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id
- );
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.read_cache_file.php');
- return smarty_core_read_cache_file($_params, $this);
- }
-
-
- /**
- * clear all the assigned template variables.
- *
- */
- function clear_all_assign()
- {
- $this->_tpl_vars = array();
- }
-
- /**
- * clears compiled version of specified template resource,
- * or all compiled template files if one is not specified.
- * This function is for advanced use only, not normally needed.
- *
- * @param string $tpl_file
- * @param string $compile_id
- * @param string $exp_time
- * @return boolean results of {@link smarty_core_rm_auto()}
- */
- function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
- {
- if (!isset($compile_id)) {
- $compile_id = $this->compile_id;
- }
- $_params = array('auto_base' => $this->compile_dir,
- 'auto_source' => $tpl_file,
- 'auto_id' => $compile_id,
- 'exp_time' => $exp_time,
- 'extensions' => array('.inc', '.php'));
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rm_auto.php');
- return smarty_core_rm_auto($_params, $this);
- }
-
- /**
- * Checks whether requested template exists.
- *
- * @param string $tpl_file
- * @return boolean
- */
- function template_exists($tpl_file)
- {
- $_params = array('resource_name' => $tpl_file, 'quiet'=>true, 'get_source'=>false);
- return $this->_fetch_resource_info($_params);
- }
-
- /**
- * Returns an array containing template variables
- *
- * @param string $name
- * @param string $type
- * @return array
- */
- function &get_template_vars($name=null)
- {
- if(!isset($name)) {
- return $this->_tpl_vars;
- }
- if(isset($this->_tpl_vars[$name])) {
- return $this->_tpl_vars[$name];
- }
- }
-
- /**
- * Returns an array containing config variables
- *
- * @param string $name
- * @param string $type
- * @return array
- */
- function &get_config_vars($name=null)
- {
- if(!isset($name) && is_array($this->_config[0])) {
- return $this->_config[0]['vars'];
- } else if(isset($this->_config[0]['vars'][$name])) {
- return $this->_config[0]['vars'][$name];
- }
- }
-
- /**
- * trigger Smarty error
- *
- * @param string $error_msg
- * @param integer $error_type
- */
- function trigger_error($error_msg, $error_type = E_USER_WARNING)
- {
- trigger_error("Smarty error: $error_msg", $error_type);
- }
-
-
- /**
- * executes & displays the template results
- *
- * @param string $resource_name
- * @param string $cache_id
- * @param string $compile_id
- */
- function display($resource_name, $cache_id = null, $compile_id = null)
- {
- $this->fetch($resource_name, $cache_id, $compile_id, true);
- }
-
- /**
- * executes & returns or displays the template results
- *
- * @param string $resource_name
- * @param string $cache_id
- * @param string $compile_id
- * @param boolean $display
- */
- function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false)
- {
- static $_cache_info = array();
-
- $_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(error_reporting() & ~E_NOTICE);
-
- if (!$this->debugging && $this->debugging_ctrl == 'URL'
- && @strstr($GLOBALS['HTTP_SERVER_VARS']['QUERY_STRING'], $this->_smarty_debug_id)) {
- // enable debugging from URL
- $this->debugging = true;
- }
-
- if ($this->debugging) {
- // capture time for debugging info
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $_debug_start_time = smarty_core_get_microtime($_params, $this);
- $this->_smarty_debug_info[] = array('type' => 'template',
- 'filename' => $resource_name,
- 'depth' => 0);
- $_included_tpls_idx = count($this->_smarty_debug_info) - 1;
- }
-
- if (!isset($compile_id)) {
- $compile_id = $this->compile_id;
- }
-
- $this->_compile_id = $compile_id;
- $this->_inclusion_depth = 0;
-
- if ($this->caching) {
- // save old cache_info, initialize cache_info
- array_push($_cache_info, $this->_cache_info);
- $this->_cache_info = array();
- $_params = array(
- 'tpl_file' => $resource_name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'results' => null
- );
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.read_cache_file.php');
- if (smarty_core_read_cache_file($_params, $this)) {
- $_smarty_results = $_params['results'];
- if (@count($this->_cache_info['insert_tags'])) {
- $_params = array('plugins' => $this->_cache_info['insert_tags']);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
- smarty_core_load_plugins($_params, $this);
- $_params = array('results' => $_smarty_results);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.process_cached_inserts.php');
- $_smarty_results = smarty_core_process_cached_inserts($_params, $this);
- }
- if (@count($this->_cache_info['cache_serials'])) {
- $_params = array('results' => $_smarty_results);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.process_compiled_include.php');
- $_smarty_results = smarty_core_process_compiled_include($_params, $this);
- }
-
-
- if ($display) {
- if ($this->debugging)
- {
- // capture time for debugging info
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $_debug_start_time;
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.display_debug_console.php');
- $_smarty_results .= smarty_core_display_debug_console($_params, $this);
- }
- if ($this->cache_modified_check) {
- $_last_modified_date = @substr($GLOBALS['HTTP_SERVER_VARS']['HTTP_IF_MODIFIED_SINCE'], 0, strpos($GLOBALS['HTTP_SERVER_VARS']['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
- $_gmt_mtime = gmdate('D, d M Y H:i:s', $this->_cache_info['timestamp']).' GMT';
- if (@count($this->_cache_info['insert_tags']) == 0
- && !$this->_cache_serials
- && $_gmt_mtime == $_last_modified_date) {
- if (php_sapi_name()=='cgi')
- header("Status: 304 Not Modified");
- else
- header("HTTP/1.1 304 Not Modified");
-
- } else {
- header("Last-Modified: ".$_gmt_mtime);
- echo $_smarty_results;
- }
- } else {
- echo $_smarty_results;
- }
- error_reporting($_smarty_old_error_level);
- // restore initial cache_info
- $this->_cache_info = array_pop($_cache_info);
- return true;
- } else {
- error_reporting($_smarty_old_error_level);
- // restore initial cache_info
- $this->_cache_info = array_pop($_cache_info);
- return $_smarty_results;
- }
- } else {
- $this->_cache_info['template'][$resource_name] = true;
- if ($this->cache_modified_check) {
- header("Last-Modified: ".gmdate('D, d M Y H:i:s', time()).' GMT');
- }
- }
- }
-
- // load filters that are marked as autoload
- if (count($this->autoload_filters)) {
- foreach ($this->autoload_filters as $_filter_type => $_filters) {
- foreach ($_filters as $_filter) {
- $this->load_filter($_filter_type, $_filter);
- }
- }
- }
-
- $_smarty_compile_path = $this->_get_compile_path($resource_name);
-
- // if we just need to display the results, don't perform output
- // buffering - for speed
- $_cache_including = $this->_cache_including;
- $this->_cache_including = false;
- if ($display && !$this->caching && count($this->_plugins['outputfilter']) == 0) {
- if ($this->_is_compiled($resource_name, $_smarty_compile_path)
- || $this->_compile_resource($resource_name, $_smarty_compile_path))
- {
- include($_smarty_compile_path);
- }
- } else {
- ob_start();
- if ($this->_is_compiled($resource_name, $_smarty_compile_path)
- || $this->_compile_resource($resource_name, $_smarty_compile_path))
- {
- include($_smarty_compile_path);
- }
- $_smarty_results = ob_get_contents();
- ob_end_clean();
-
- foreach ((array)$this->_plugins['outputfilter'] as $_output_filter) {
- $_smarty_results = call_user_func_array($_output_filter[0], array($_smarty_results, &$this));
- }
- }
-
- if ($this->caching) {
- $_params = array('tpl_file' => $resource_name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'results' => $_smarty_results);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_cache_file.php');
- smarty_core_write_cache_file($_params, $this);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.process_cached_inserts.php');
- $_smarty_results = smarty_core_process_cached_inserts($_params, $this);
-
- if ($this->_cache_serials) {
- // strip nocache-tags from output
- $_smarty_results = preg_replace('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!s'
- ,''
- ,$_smarty_results);
- }
- // restore initial cache_info
- $this->_cache_info = array_pop($_cache_info);
- }
- $this->_cache_including = $_cache_including;
-
- if ($display) {
- if (isset($_smarty_results)) { echo $_smarty_results; }
- if ($this->debugging) {
- // capture time for debugging info
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = (smarty_core_get_microtime($_params, $this) - $_debug_start_time);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.display_debug_console.php');
- echo smarty_core_display_debug_console($_params, $this);
- }
- error_reporting($_smarty_old_error_level);
- return;
- } else {
- error_reporting($_smarty_old_error_level);
- if (isset($_smarty_results)) { return $_smarty_results; }
- }
- }
-
- /**
- * load configuration values
- *
- * @param string $file
- * @param string $section
- * @param string $scope
- */
- function config_load($file, $section = null, $scope = 'global')
- {
- require_once($this->_get_plugin_filepath('function', 'config_load'));
- smarty_function_config_load(array('file' => $file, 'section' => $section, 'scope' => $scope), $this);
- }
-
- /**
- * return a reference to a registered object
- *
- * @param string $name
- * @return object
- */
- function &get_registered_object($name) {
- if (!isset($this->_reg_objects[$name]))
- $this->_trigger_fatal_error("'$name' is not a registered object");
-
- if (!is_object($this->_reg_objects[$name][0]))
- $this->_trigger_fatal_error("registered '$name' is not an object");
-
- return $this->_reg_objects[$name][0];
- }
-
- /**
- * clear configuration values
- *
- * @param string $var
- */
- function clear_config($var = null)
- {
- if(!isset($var)) {
- // clear all values
- $this->_config = array(array('vars' => array(),
- 'files' => array()));
- } else {
- unset($this->_config[0]['vars'][$var]);
- }
- }
-
- /**
- * get filepath of requested plugin
- *
- * @param string $type
- * @param string $name
- * @return string|false
- */
- function _get_plugin_filepath($type, $name)
- {
- $_params = array('type' => $type, 'name' => $name);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.assemble_plugin_filepath.php');
- return smarty_core_assemble_plugin_filepath($_params, $this);
- }
-
- /**
- * test if resource needs compiling
- *
- * @param string $resource_name
- * @param string $compile_path
- * @return boolean
- */
- function _is_compiled($resource_name, $compile_path)
- {
- if (!$this->force_compile && file_exists($compile_path)) {
- if (!$this->compile_check) {
- // no need to check compiled file
- return true;
- } else {
- // get file source and timestamp
- $_params = array('resource_name' => $resource_name, 'get_source'=>false);
- if (!$this->_fetch_resource_info($_params, $this)) {
- return false;
- }
- if ($_params['resource_timestamp'] <= filemtime($compile_path)) {
- // template not expired, no recompile
- return true;
- } else {
- // compile template
- return false;
- }
- }
- } else {
- // compiled template does not exist, or forced compile
- return false;
- }
- }
-
- /**
- * compile the template
- *
- * @param string $resource_name
- * @param string $compile_path
- * @return boolean
- */
- function _compile_resource($resource_name, $compile_path)
- {
-
- $_params = array('resource_name' => $resource_name);
- if (!$this->_fetch_resource_info($_params)) {
- return false;
- }
-
- $_source_content = $_params['source_content'];
- $_resource_timestamp = $_params['resource_timestamp'];
- $_cache_include = substr($compile_path, 0, -4).'.inc';
-
- if ($this->_compile_source($resource_name, $_source_content, $_compiled_content, $_cache_include)) {
- // if a _cache_serial was set, we also have to write an include-file:
- if ($this->_cache_include_info) {
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_compiled_include.php');
- smarty_core_write_compiled_include(array_merge($this->_cache_include_info, array('compiled_content'=>$_compiled_content)), $this);
- }
-
- $_params = array('compile_path'=>$compile_path, 'compiled_content' => $_compiled_content, 'resource_timestamp' => $_resource_timestamp);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_compiled_resource.php');
- smarty_core_write_compiled_resource($_params, $this);
-
- return true;
- } else {
- $this->trigger_error($smarty_compiler->_error_msg);
- return false;
- }
-
- }
-
- /**
- * compile the given source
- *
- * @param string $resource_name
- * @param string $source_content
- * @param string $compiled_content
- * @return boolean
- */
- function _compile_source($resource_name, &$source_content, &$compiled_content, $cache_include_path=null)
- {
- if (file_exists(SMARTY_DIR . $this->compiler_file)) {
- require_once(SMARTY_DIR . $this->compiler_file);
- } else {
- // use include_path
- require_once($this->compiler_file);
- }
-
-
- $smarty_compiler = new $this->compiler_class;
-
- $smarty_compiler->template_dir = $this->template_dir;
- $smarty_compiler->compile_dir = $this->compile_dir;
- $smarty_compiler->plugins_dir = $this->plugins_dir;
- $smarty_compiler->config_dir = $this->config_dir;
- $smarty_compiler->force_compile = $this->force_compile;
- $smarty_compiler->caching = $this->caching;
- $smarty_compiler->php_handling = $this->php_handling;
- $smarty_compiler->left_delimiter = $this->left_delimiter;
- $smarty_compiler->right_delimiter = $this->right_delimiter;
- $smarty_compiler->_version = $this->_version;
- $smarty_compiler->security = $this->security;
- $smarty_compiler->secure_dir = $this->secure_dir;
- $smarty_compiler->security_settings = $this->security_settings;
- $smarty_compiler->trusted_dir = $this->trusted_dir;
- $smarty_compiler->_reg_objects = &$this->_reg_objects;
- $smarty_compiler->_plugins = &$this->_plugins;
- $smarty_compiler->_tpl_vars = &$this->_tpl_vars;
- $smarty_compiler->default_modifiers = $this->default_modifiers;
- $smarty_compiler->compile_id = $this->_compile_id;
- $smarty_compiler->_config = $this->_config;
- $smarty_compiler->request_use_auto_globals = $this->request_use_auto_globals;
-
- $smarty_compiler->_cache_serial = null;
- $smarty_compiler->_cache_include = $cache_include_path;
-
-
- $_results = $smarty_compiler->_compile_file($resource_name, $source_content, $compiled_content);
-
- if ($smarty_compiler->_cache_serial) {
- $this->_cache_include_info = array(
- 'cache_serial'=>$smarty_compiler->_cache_serial
- ,'plugins_code'=>$smarty_compiler->_plugins_code
- ,'include_file_path' => $cache_include_path);
-
- } else {
- $this->_cache_include_info = null;
-
- }
-
- return $_results;
- }
-
- /**
- * Get the compile path for this resource
- *
- * @param string $resource_name
- * @return string results of {@link _get_auto_filename()}
- */
- function _get_compile_path($resource_name)
- {
- return $this->_get_auto_filename($this->compile_dir, $resource_name,
- $this->_compile_id) . '.php';
- }
-
- /**
- * fetch the template info. Gets timestamp, and source
- * if get_source is true
- *
- * sets $source_content to the source of the template, and
- * $resource_timestamp to its time stamp
- * @param string $resource_name
- * @param string $source_content
- * @param integer $resource_timestamp
- * @param boolean $get_source
- * @param boolean $quiet
- * @return boolean
- */
-
- function _fetch_resource_info(&$params)
- {
- if(!isset($params['get_source'])) { $params['get_source'] = true; }
- if(!isset($params['quiet'])) { $params['quiet'] = false; }
-
- $_return = false;
- $_params = array('resource_name' => $params['resource_name']) ;
- if (isset($params['resource_base_path']))
- $_params['resource_base_path'] = $params['resource_base_path'];
-
- if ($this->_parse_resource_name($_params)) {
- $_resource_type = $_params['resource_type'];
- $_resource_name = $_params['resource_name'];
- switch ($_resource_type) {
- case 'file':
- if ($params['get_source']) {
- $params['source_content'] = $this->_read_file($_resource_name);
- }
- $params['resource_timestamp'] = filemtime($_resource_name);
- $_return = is_file($_resource_name);
- break;
-
- default:
- // call resource functions to fetch the template source and timestamp
- if ($params['get_source']) {
- $_source_return = isset($this->_plugins['resource'][$_resource_type]) &&
- call_user_func_array($this->_plugins['resource'][$_resource_type][0][0],
- array($_resource_name, &$params['source_content'], &$this));
- } else {
- $_source_return = true;
- }
-
- $_timestamp_return = isset($this->_plugins['resource'][$_resource_type]) &&
- call_user_func_array($this->_plugins['resource'][$_resource_type][0][1],
- array($_resource_name, &$params['resource_timestamp'], &$this));
-
- $_return = $_source_return && $_timestamp_return;
- break;
- }
- }
-
- if (!$_return) {
- // see if we can get a template with the default template handler
- if (!empty($this->default_template_handler_func)) {
- if (!is_callable($this->default_template_handler_func)) {
- $this->trigger_error("default template handler function \"$this->default_template_handler_func\" doesn't exist.");
- } else {
- $_return = call_user_func_array(
- $this->default_template_handler_func,
- array($_params['resource_type'], $_params['resource_name'], &$params['source_content'], &$params['resource_timestamp'], &$this));
- }
- }
- }
-
- if (!$_return) {
- if (!$params['quiet']) {
- $this->trigger_error('unable to read resource: "' . $params['resource_name'] . '"');
- }
- } else if ($_return && $this->security) {
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php');
- if (!smarty_core_is_secure($_params, $this)) {
- if (!$params['quiet'])
- $this->trigger_error('(secure mode) accessing "' . $params['resource_name'] . '" is not allowed');
- $params['source_content'] = null;
- $params['resource_timestamp'] = null;
- return false;
- }
- }
- return $_return;
- }
-
-
- /**
- * parse out the type and name from the resource
- *
- * @param string $resource_base_path
- * @param string $resource_name
- * @param string $resource_type
- * @param string $resource_name
- * @return boolean
- */
-
- function _parse_resource_name(&$params)
- {
-
- // split tpl_path by the first colon
- $_resource_name_parts = explode(':', $params['resource_name'], 2);
-
- if (count($_resource_name_parts) == 1) {
- // no resource type given
- $params['resource_type'] = $this->default_resource_type;
- $params['resource_name'] = $_resource_name_parts[0];
- } else {
- if(strlen($_resource_name_parts[0]) == 1) {
- // 1 char is not resource type, but part of filepath
- $params['resource_type'] = $this->default_resource_type;
- $params['resource_name'] = $params['resource_name'];
- } else {
- $params['resource_type'] = $_resource_name_parts[0];
- $params['resource_name'] = $_resource_name_parts[1];
- }
- }
-
- if ($params['resource_type'] == 'file') {
- if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $params['resource_name'])) {
- // relative pathname to $params['resource_base_path']
- // use the first directory where the file is found
- if (isset($params['resource_base_path'])) {
- $_resource_base_path = (array)$params['resource_base_path'];
- } else {
- $_resource_base_path = (array)$this->template_dir;
- $_resource_base_path[] = '.';
- }
- foreach ($_resource_base_path as $_curr_path) {
- $_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name'];
- if (file_exists($_fullpath) && is_file($_fullpath)) {
- $params['resource_name'] = $_fullpath;
- return true;
- }
- // didn't find the file, try include_path
- $_params = array('file_path' => $_fullpath);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
- if(smarty_core_get_include_path($_params, $this)) {
- $params['resource_name'] = $_params['new_file_path'];
- return true;
- }
- }
- return false;
- }
- } elseif (empty($this->_plugins['resource'][$params['resource_type']])) {
- $_params = array('type' => $params['resource_type']);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_resource_plugin.php');
- smarty_core_load_resource_plugin($_params, $this);
- }
-
- return true;
- }
-
-
- /**
- * Handle modifiers
- *
- * @param string|null $modifier_name
- * @param array|null $map_array
- * @return string result of modifiers
- */
- function _run_mod_handler()
- {
- $_args = func_get_args();
- list($_modifier_name, $_map_array) = array_splice($_args, 0, 2);
- list($_func_name, $_tpl_file, $_tpl_line) =
- $this->_plugins['modifier'][$_modifier_name];
-
- $_var = $_args[0];
- foreach ($_var as $_key => $_val) {
- $_args[0] = $_val;
- $_var[$_key] = call_user_func_array($_func_name, $_args);
- }
- return $_var;
- }
-
- /**
- * Remove starting and ending quotes from the string
- *
- * @param string $string
- * @return string
- */
- function _dequote($string)
- {
- if (($string{0} == "'" || $string{0} == '"') &&
- $string{strlen($string)-1} == $string{0})
- return substr($string, 1, -1);
- else
- return $string;
- }
-
-
- /**
- * read in a file from line $start for $lines.
- * read the entire file if $start and $lines are null.
- *
- * @param string $filename
- * @param integer $start
- * @param integer $lines
- * @return string
- */
- function _read_file($filename, $start=null, $lines=null)
- {
- if (!($fd = @fopen($filename, 'r'))) {
- return false;
- }
- flock($fd, LOCK_SH);
- if ($start == null && $lines == null) {
- // read the entire file
- $contents = fread($fd, filesize($filename));
- } else {
- if ( $start > 1 ) {
- // skip the first lines before $start
- for ($loop=1; $loop < $start; $loop++) {
- fgets($fd, 65536);
- }
- }
- if ( $lines == null ) {
- // read the rest of the file
- while (!feof($fd)) {
- $contents .= fgets($fd, 65536);
- }
- } else {
- // read up to $lines lines
- for ($loop=0; $loop < $lines; $loop++) {
- $contents .= fgets($fd, 65536);
- if (feof($fd)) {
- break;
- }
- }
- }
- }
- fclose($fd);
- return $contents;
- }
-
- /**
- * get a concrete filename for automagically created content
- *
- * @param string $auto_base
- * @param string $auto_source
- * @param string $auto_id
- * @return string
- * @staticvar string|null
- * @staticvar string|null
- */
- function _get_auto_filename($auto_base, $auto_source = null, $auto_id = null)
- {
- $_compile_dir_sep = $this->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
-
- if(@is_dir($auto_base)) {
- $_return = $auto_base . DIRECTORY_SEPARATOR;
- } else {
- // auto_base not found, try include_path
- $_params = array('file_path' => $auto_base);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
- smarty_core_get_include_path($_params, $this);
- $_return = isset($_params['new_file_path']) ? $_params['new_file_path'] . DIRECTORY_SEPARATOR : null;
- }
-
- if(isset($auto_id)) {
- // make auto_id safe for directory names
- $auto_id = str_replace('%7C',$_compile_dir_sep,(urlencode($auto_id)));
- // split into separate directories
- $_return .= $auto_id . $_compile_dir_sep;
- }
-
- if(isset($auto_source)) {
- // make source name safe for filename
- $_filename = urlencode(basename($auto_source));
- $_crc32 = crc32($auto_source) . $_compile_dir_sep;
- // prepend %% to avoid name conflicts with
- // with $params['auto_id'] names
- $_crc32 = '%%' . substr($_crc32,0,3) . $_compile_dir_sep . '%%' . $_crc32;
- $_return .= $_crc32 . $_filename;
- }
-
- return $_return;
- }
-
- /**
- * unlink a file, possibly using expiration time
- *
- * @param string $resource
- * @param integer $exp_time
- */
- function _unlink($resource, $exp_time = null)
- {
- if(isset($exp_time)) {
- if(time() - @filemtime($resource) >= $exp_time) {
- return @unlink($resource);
- }
- } else {
- return @unlink($resource);
- }
- }
-
- /**
- * returns an auto_id for auto-file-functions
- *
- * @param string $cache_id
- * @param string $compile_id
- * @return string|null
- */
- function _get_auto_id($cache_id=null, $compile_id=null) {
- if (isset($cache_id))
- return (isset($compile_id)) ? $cache_id . '|' . $compile_id : $cache_id;
- elseif(isset($compile_id))
- return $compile_id;
- else
- return null;
- }
-
- /**
- * trigger Smarty plugin error
- *
- * @param string $error_msg
- * @param string $tpl_file
- * @param integer $tpl_line
- * @param string $file
- * @param integer $line
- * @param integer $error_type
- */
- function _trigger_fatal_error($error_msg, $tpl_file = null, $tpl_line = null,
- $file = null, $line = null, $error_type = E_USER_ERROR)
- {
- if(isset($file) && isset($line)) {
- $info = ' ('.basename($file).", line $line)";
- } else {
- $info = null;
- }
- if (isset($tpl_line) && isset($tpl_file)) {
- trigger_error("Smarty error: [in " . $tpl_file . " line " .
- $tpl_line . "]: $error_msg$info", $error_type);
- } else {
- trigger_error("Smarty error: $error_msg$info", $error_type);
- }
- }
-
-
- /**
- * callback function for preg_replace, to call a non-cacheable block
- * @return string
- */
- function _process_compiled_include_callback($match) {
- $_func = '_smarty_tplfunc_'.$match[2].'_'.$match[3];
- ob_start();
- $_func($this);
- $_ret = ob_get_contents();
- ob_end_clean();
- return $_ret;
- }
-
-
- /**
- * called for included templates
- *
- * @param string $_smarty_include_tpl_file
- * @param string $_smarty_include_vars
- */
-
- // $_smarty_include_tpl_file, $_smarty_include_vars
-
- function _smarty_include($params)
- {
- if ($this->debugging) {
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $debug_start_time = smarty_core_get_microtime($_params, $this);
- $this->_smarty_debug_info[] = array('type' => 'template',
- 'filename' => $params['smarty_include_tpl_file'],
- 'depth' => ++$this->_inclusion_depth);
- $included_tpls_idx = count($this->_smarty_debug_info) - 1;
- }
-
- $this->_tpl_vars = array_merge($this->_tpl_vars, $params['smarty_include_vars']);
-
- // config vars are treated as local, so push a copy of the
- // current ones onto the front of the stack
- array_unshift($this->_config, $this->_config[0]);
-
- $_smarty_compile_path = $this->_get_compile_path($params['smarty_include_tpl_file']);
-
-
- if ($this->_is_compiled($params['smarty_include_tpl_file'], $_smarty_compile_path)
- || $this->_compile_resource($params['smarty_include_tpl_file'], $_smarty_compile_path))
- {
- include($_smarty_compile_path);
- }
-
- // pop the local vars off the front of the stack
- array_shift($this->_config);
-
- $this->_inclusion_depth--;
-
- if ($this->debugging) {
- // capture time for debugging info
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $this->_smarty_debug_info[$included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $debug_start_time;
- }
-
- if ($this->caching) {
- $this->_cache_info['template'][$params['smarty_include_tpl_file']] = true;
- }
- }
-
-
- /**
- * get or set an array of cached attributes for function that is
- * not cacheable
- * @return array
- */
- function &_smarty_cache_attrs($cache_serial, $count) {
- $_cache_attrs =& $this->_cache_info['cache_attrs'][$cache_serial][$count];
-
- if ($this->_cache_including) {
- /* return next set of cache_attrs */
- $_return =& current($_cache_attrs);
- next($_cache_attrs);
- return $_return;
-
- } else {
- /* add a reference to a new set of cache_attrs */
- $_cache_attrs[] = array();
- return $_cache_attrs[count($_cache_attrs)-1];
-
- }
-
- }
-
-
- /**
- * wrapper for include() retaining $this
- * @return mixed
- */
- function _include($filename, $once=false, $params=null)
- {
- if ($once) {
- return include_once($filename);
- } else {
- return include($filename);
- }
- }
-
-
- /**
- * wrapper for eval() retaining $this
- * @return mixed
- */
- function _eval($code, $params=null)
- {
- return eval($code);
- }
- /**#@-*/
-
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php
deleted file mode 100644
index 263591fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php
+++ /dev/null
@@ -1,2123 +0,0 @@
-<?php
-
-/**
- * Project: Smarty: the PHP compiling template engine
- * File: Smarty_Compiler.class.php
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * You may contact the authors of Smarty by e-mail at:
- * monte@ispi.net
- * andrei@php.net
- *
- * Or, write to:
- * Monte Ohrt
- * Director of Technology, ispi
- * 237 S. 70th suite 220
- * Lincoln, NE 68510
- *
- * The latest version of Smarty can be obtained from:
- * http://smarty.php.net/
- *
- * @link http://smarty.php.net/
- * @author Monte Ohrt <monte@ispi.net>
- * @author Andrei Zmievski <andrei@php.net>
- * @version 2.6.0
- * @copyright 2001-2003 ispi of Lincoln, Inc.
- * @package Smarty
- */
-
-/* $Id: Smarty_Compiler.class.php,v 1.1 2005/10/17 18:37:39 jeichorn Exp $ */
-
-/**
- * Template compiling class
- * @package Smarty
- */
-class Smarty_Compiler extends Smarty {
-
- // internal vars
- /**#@+
- * @access private
- */
- var $_sectionelse_stack = array(); // keeps track of whether section had 'else' part
- var $_foreachelse_stack = array(); // keeps track of whether foreach had 'else' part
- var $_literal_blocks = array(); // keeps literal template blocks
- var $_php_blocks = array(); // keeps php code blocks
- var $_current_file = null; // the current template being compiled
- var $_current_line_no = 1; // line number for error messages
- var $_capture_stack = array(); // keeps track of nested capture buffers
- var $_plugin_info = array(); // keeps track of plugins to load
- var $_init_smarty_vars = false;
- var $_permitted_tokens = array('true','false','yes','no','on','off','null');
- var $_db_qstr_regexp = null; // regexps are setup in the constructor
- var $_si_qstr_regexp = null;
- var $_qstr_regexp = null;
- var $_func_regexp = null;
- var $_var_bracket_regexp = null;
- var $_dvar_guts_regexp = null;
- var $_dvar_regexp = null;
- var $_cvar_regexp = null;
- var $_svar_regexp = null;
- var $_avar_regexp = null;
- var $_mod_regexp = null;
- var $_var_regexp = null;
- var $_parenth_param_regexp = null;
- var $_func_call_regexp = null;
- var $_obj_ext_regexp = null;
- var $_obj_start_regexp = null;
- var $_obj_params_regexp = null;
- var $_obj_call_regexp = null;
- var $_cacheable_state = 0;
- var $_cache_attrs_count = 0;
- var $_nocache_count = 0;
- var $_cache_serial = null;
- var $_cache_include = null;
-
- var $_strip_depth = 0;
- var $_additional_newline = "\n";
-
- /**#@-*/
- /**
- * The class constructor.
- */
- function Smarty_Compiler()
- {
- // matches double quoted strings:
- // "foobar"
- // "foo\"bar"
- $this->_db_qstr_regexp = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"';
-
- // matches single quoted strings:
- // 'foobar'
- // 'foo\'bar'
- $this->_si_qstr_regexp = '\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'';
-
- // matches single or double quoted strings
- $this->_qstr_regexp = '(?:' . $this->_db_qstr_regexp . '|' . $this->_si_qstr_regexp . ')';
-
- // matches bracket portion of vars
- // [0]
- // [foo]
- // [$bar]
- $this->_var_bracket_regexp = '\[\$?[\w\.]+\]';
-
- // matches $ vars (not objects):
- // $foo
- // $foo.bar
- // $foo.bar.foobar
- // $foo[0]
- // $foo[$bar]
- // $foo[5][blah]
- // $foo[5].bar[$foobar][4]
- $this->_dvar_math_regexp = '[\+\-\*\/\%]';
- $this->_dvar_math_var_regexp = '[\$\w\.\+\-\*\/\%\d\>\[\]]';
- $this->_dvar_num_var_regexp = '\-?\d+(?:\.\d+)?' . $this->_dvar_math_var_regexp;
- $this->_dvar_guts_regexp = '\w+(?:' . $this->_var_bracket_regexp
- . ')*(?:\.\$?\w+(?:' . $this->_var_bracket_regexp . ')*)*(?:' . $this->_dvar_math_regexp . '(?:\-?\d+(?:\.\d+)?|' . $this->_dvar_math_var_regexp . ')*)?';
- $this->_dvar_regexp = '\$' . $this->_dvar_guts_regexp;
-
- // matches config vars:
- // #foo#
- // #foobar123_foo#
- $this->_cvar_regexp = '\#\w+\#';
-
- // matches section vars:
- // %foo.bar%
- $this->_svar_regexp = '\%\w+\.\w+\%';
-
- // matches all valid variables (no quotes, no modifiers)
- $this->_avar_regexp = '(?:' . $this->_dvar_regexp . '|'
- . $this->_cvar_regexp . '|' . $this->_svar_regexp . ')';
-
- // matches valid variable syntax:
- // $foo
- // $foo
- // #foo#
- // #foo#
- // "text"
- // "text"
- $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_qstr_regexp . ')';
-
- // matches valid object call (no objects allowed in parameters):
- // $foo->bar
- // $foo->bar()
- // $foo->bar("text")
- // $foo->bar($foo, $bar, "text")
- // $foo->bar($foo, "foo")
- // $foo->bar->foo()
- // $foo->bar->foo->bar()
- $this->_obj_ext_regexp = '\->(?:\$?' . $this->_dvar_guts_regexp . ')';
- $this->_obj_params_regexp = '\((?:\w+|'
- . $this->_var_regexp . '(?:\s*,\s*(?:(?:\w+|'
- . $this->_var_regexp . ')))*)?\)';
- $this->_obj_start_regexp = '(?:' . $this->_dvar_regexp . '(?:' . $this->_obj_ext_regexp . ')+)';
- $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?)';
-
- // matches valid modifier syntax:
- // |foo
- // |@foo
- // |foo:"bar"
- // |foo:$bar
- // |foo:"bar":$foobar
- // |foo|bar
- // |foo:$foo->bar
- $this->_mod_regexp = '(?:\|@?\w+(?::(?>-?\w+|'
- . $this->_obj_call_regexp . '|' . $this->_avar_regexp . '|' . $this->_qstr_regexp .'))*)';
-
- // matches valid function name:
- // foo123
- // _foo_bar
- $this->_func_regexp = '[a-zA-Z_]\w*';
-
- // matches valid registered object:
- // foo->bar
- $this->_reg_obj_regexp = '[a-zA-Z_]\w*->[a-zA-Z_]\w*';
-
- // matches valid parameter values:
- // true
- // $foo
- // $foo|bar
- // #foo#
- // #foo#|bar
- // "text"
- // "text"|bar
- // $foo->bar
- $this->_param_regexp = '(?:\s*(?:' . $this->_obj_call_regexp . '|'
- . $this->_var_regexp . '|\w+)(?>' . $this->_mod_regexp . '*)\s*)';
-
- // matches valid parenthesised function parameters:
- //
- // "text"
- // $foo, $bar, "text"
- // $foo|bar, "foo"|bar, $foo->bar($foo)|bar
- $this->_parenth_param_regexp = '(?:\((?:\w+|'
- . $this->_param_regexp . '(?:\s*,\s*(?:(?:\w+|'
- . $this->_param_regexp . ')))*)?\))';
-
- // matches valid function call:
- // foo()
- // foo_bar($foo)
- // _foo_bar($foo,"bar")
- // foo123($foo,$foo->bar(),"foo")
- $this->_func_call_regexp = '(?:' . $this->_func_regexp . '\s*(?:'
- . $this->_parenth_param_regexp . '))';
- }
-
- /**
- * compile a resource
- *
- * sets $compiled_content to the compiled source
- * @param string $resource_name
- * @param string $source_content
- * @param string $compiled_content
- * @return true
- */
- function _compile_file($resource_name, $source_content, &$compiled_content)
- {
-
- if ($this->security) {
- // do not allow php syntax to be executed unless specified
- if ($this->php_handling == SMARTY_PHP_ALLOW &&
- !$this->security_settings['PHP_HANDLING']) {
- $this->php_handling = SMARTY_PHP_PASSTHRU;
- }
- }
-
- $this->_load_filters();
-
- $this->_current_file = $resource_name;
- $this->_current_line_no = 1;
- $ldq = preg_quote($this->left_delimiter, '!');
- $rdq = preg_quote($this->right_delimiter, '!');
-
- // run template source through prefilter functions
- if (count($this->_plugins['prefilter']) > 0) {
- foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) {
- if ($prefilter === false) continue;
- if ($prefilter[3] || is_callable($prefilter[0])) {
- $source_content = call_user_func_array($prefilter[0],
- array($source_content, &$this));
- $this->_plugins['prefilter'][$filter_name][3] = true;
- } else {
- $this->_trigger_fatal_error("[plugin] prefilter '$filter_name' is not implemented");
- }
- }
- }
-
- /* Annihilate the comments. */
- $source_content = preg_replace("!({$ldq})\*(.*?)\*({$rdq})!se",
- "'\\1*'.str_repeat(\"\n\", substr_count('\\2', \"\n\")) .'*\\3'",
- $source_content);
-
- /* Pull out the literal blocks. */
- preg_match_all("!{$ldq}\s*literal\s*{$rdq}(.*?){$ldq}\s*/literal\s*{$rdq}!s", $source_content, $_match);
- $this->_literal_blocks = $_match[1];
- $source_content = preg_replace("!{$ldq}\s*literal\s*{$rdq}(.*?){$ldq}\s*/literal\s*{$rdq}!s",
- $this->_quote_replace($this->left_delimiter.'literal'.$this->right_delimiter), $source_content);
-
- /* Pull out the php code blocks. */
- preg_match_all("!{$ldq}php{$rdq}(.*?){$ldq}/php{$rdq}!s", $source_content, $_match);
- $this->_php_blocks = $_match[1];
- $source_content = preg_replace("!{$ldq}php{$rdq}(.*?){$ldq}/php{$rdq}!s",
- $this->_quote_replace($this->left_delimiter.'php'.$this->right_delimiter), $source_content);
-
- /* Gather all template tags. */
- preg_match_all("!{$ldq}\s*(.*?)\s*{$rdq}!s", $source_content, $_match);
- $template_tags = $_match[1];
- /* Split content by template tags to obtain non-template content. */
- $text_blocks = preg_split("!{$ldq}.*?{$rdq}!s", $source_content);
-
- /* loop through text blocks */
- for ($curr_tb = 0, $for_max = count($text_blocks); $curr_tb < $for_max; $curr_tb++) {
- /* match anything resembling php tags */
- if (preg_match_all('!(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?php[\"\']?)!is', $text_blocks[$curr_tb], $sp_match)) {
- /* replace tags with placeholders to prevent recursive replacements */
- $sp_match[1] = array_unique($sp_match[1]);
- usort($sp_match[1], '_smarty_sort_length');
- for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) {
- $text_blocks[$curr_tb] = str_replace($sp_match[1][$curr_sp],'%%%SMARTYSP'.$curr_sp.'%%%',$text_blocks[$curr_tb]);
- }
- /* process each one */
- for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) {
- if ($this->php_handling == SMARTY_PHP_PASSTHRU) {
- /* echo php contents */
- $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '<?php echo \''.str_replace("'", "\'", $sp_match[1][$curr_sp]).'\'; ?>'."\n", $text_blocks[$curr_tb]);
- } else if ($this->php_handling == SMARTY_PHP_QUOTE) {
- /* quote php tags */
- $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', htmlspecialchars($sp_match[1][$curr_sp]), $text_blocks[$curr_tb]);
- } else if ($this->php_handling == SMARTY_PHP_REMOVE) {
- /* remove php tags */
- $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '', $text_blocks[$curr_tb]);
- } else {
- /* SMARTY_PHP_ALLOW, but echo non php starting tags */
- $sp_match[1][$curr_sp] = preg_replace('%(<\?(?!php|=|$))%i', '<?php echo \'\\1\'?>'."\n", $sp_match[1][$curr_sp]);
- $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', $sp_match[1][$curr_sp], $text_blocks[$curr_tb]);
- }
- }
- }
- }
-
- /* Compile the template tags into PHP code. */
- $compiled_tags = array();
- for ($i = 0, $for_max = count($template_tags); $i < $for_max; $i++) {
- $this->_current_line_no += substr_count($text_blocks[$i], "\n");
- $compiled_tags[] = $this->_compile_tag($template_tags[$i]);
- $this->_current_line_no += substr_count($template_tags[$i], "\n");
- }
-
- $compiled_content = '';
-
- /* Interleave the compiled contents and text blocks to get the final result. */
- for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) {
- if ($compiled_tags[$i] == '') {
- // tag result empty, remove first newline from following text block
- $text_blocks[$i+1] = preg_replace('!^(\r\n|\r|\n)!', '', $text_blocks[$i+1]);
- }
- $compiled_content .= $text_blocks[$i].$compiled_tags[$i];
- }
- $compiled_content .= $text_blocks[$i];
-
- /* Reformat data between 'strip' and '/strip' tags, removing spaces, tabs and newlines. */
- if (preg_match_all("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $compiled_content, $_match)) {
- $strip_tags = $_match[0];
- $strip_tags_modified = preg_replace("!{$ldq}/?strip{$rdq}|[\t ]+$|^[\t ]+!m", '', $strip_tags);
- $strip_tags_modified = preg_replace('![\r\n]+!m', '', $strip_tags_modified);
- for ($i = 0, $for_max = count($strip_tags); $i < $for_max; $i++)
- $compiled_content = preg_replace("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s",
- $this->_quote_replace($strip_tags_modified[$i]),
- $compiled_content, 1);
- }
-
- // remove \n from the end of the file, if any
- if (($_len=strlen($compiled_content)) && ($compiled_content{$_len - 1} == "\n" )) {
- $compiled_content = substr($compiled_content, 0, -1);
- }
-
- if (!empty($this->_cache_serial)) {
- $compiled_content = "<?php \$this->_cache_serials['".$this->_cache_include."'] = '".$this->_cache_serial."'; ?>" . $compiled_content;
- }
-
- // remove unnecessary close/open tags
- $compiled_content = preg_replace('!\?>\n?<\?php!', '', $compiled_content);
-
- // run compiled template through postfilter functions
- if (count($this->_plugins['postfilter']) > 0) {
- foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) {
- if ($postfilter === false) continue;
- if ($postfilter[3] || is_callable($postfilter[0])) {
- $compiled_content = call_user_func_array($postfilter[0],
- array($compiled_content, &$this));
- $this->_plugins['postfilter'][$filter_name][3] = true;
- } else {
- $this->_trigger_fatal_error("Smarty plugin error: postfilter '$filter_name' is not implemented");
- }
- }
- }
-
- // put header at the top of the compiled template
- $template_header = "<?php /* Smarty version ".$this->_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n";
- $template_header .= " compiled from ".strtr(urlencode($resource_name), array('%2F'=>'/', '%3A'=>':'))." */ ?>\n";
-
- /* Emit code to load needed plugins. */
- $this->_plugins_code = '';
- if (count($this->_plugin_info)) {
- $_plugins_params = "array('plugins' => array(";
- foreach ($this->_plugin_info as $plugin_type => $plugins) {
- foreach ($plugins as $plugin_name => $plugin_info) {
- $_plugins_params .= "array('$plugin_type', '$plugin_name', '$plugin_info[0]', $plugin_info[1], ";
- $_plugins_params .= $plugin_info[2] ? 'true),' : 'false),';
- }
- }
- $_plugins_params .= '))';
- $plugins_code = "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');\nsmarty_core_load_plugins($_plugins_params, \$this); ?>\n";
- $template_header .= $plugins_code;
- $this->_plugin_info = array();
- $this->_plugins_code = $plugins_code;
- }
-
- if ($this->_init_smarty_vars) {
- $template_header .= "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.assign_smarty_interface.php');\nsmarty_core_assign_smarty_interface(null, \$this); ?>\n";
- $this->_init_smarty_vars = false;
- }
-
- $compiled_content = $template_header . $compiled_content;
-
- return true;
- }
-
- /**
- * Compile a template tag
- *
- * @param string $template_tag
- * @return string
- */
- function _compile_tag($template_tag)
- {
- /* Matched comment. */
- if ($template_tag{0} == '*' && $template_tag{strlen($template_tag) - 1} == '*')
- return '';
-
- /* Split tag into two three parts: command, command modifiers and the arguments. */
- if(! preg_match('/^(?:(' . $this->_obj_call_regexp . '|' . $this->_var_regexp
- . '|\/?' . $this->_reg_obj_regexp . '|\/?' . $this->_func_regexp . ')(' . $this->_mod_regexp . '*))
- (?:\s+(.*))?$
- /xs', $template_tag, $match)) {
- $this->_syntax_error("unrecognized tag: $template_tag", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- $tag_command = $match[1];
- $tag_modifier = isset($match[2]) ? $match[2] : null;
- $tag_args = isset($match[3]) ? $match[3] : null;
-
- if (preg_match('!^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '$!', $tag_command)) {
- /* tag name is a variable or object */
- $_return = $this->_parse_var_props($tag_command . $tag_modifier, $this->_parse_attrs($tag_args));
- if(isset($_tag_attrs['assign'])) {
- return "<?php \$this->assign('" . $this->_dequote($_tag_attrs['assign']) . "', $_return ); ?>\n";
- } else {
- return "<?php echo $_return; ?>" . $this->_additional_newline;
- }
- }
-
- /* If the tag name is a registered object, we process it. */
- if (preg_match('!^\/?' . $this->_reg_obj_regexp . '$!', $tag_command)) {
- return $this->_compile_registered_object_tag($tag_command, $this->_parse_attrs($tag_args), $tag_modifier);
- }
-
- switch ($tag_command) {
- case 'include':
- return $this->_compile_include_tag($tag_args);
-
- case 'include_php':
- return $this->_compile_include_php_tag($tag_args);
-
- case 'if':
- return $this->_compile_if_tag($tag_args);
-
- case 'else':
- return '<?php else: ?>';
-
- case 'elseif':
- return $this->_compile_if_tag($tag_args, true);
-
- case '/if':
- return '<?php endif; ?>';
-
- case 'capture':
- return $this->_compile_capture_tag(true, $tag_args);
-
- case '/capture':
- return $this->_compile_capture_tag(false);
-
- case 'ldelim':
- return $this->left_delimiter;
-
- case 'rdelim':
- return $this->right_delimiter;
-
- case 'section':
- array_push($this->_sectionelse_stack, false);
- return $this->_compile_section_start($tag_args);
-
- case 'sectionelse':
- $this->_sectionelse_stack[count($this->_sectionelse_stack)-1] = true;
- return "<?php endfor; else: ?>";
-
- case '/section':
- if (array_pop($this->_sectionelse_stack))
- return "<?php endif; ?>";
- else
- return "<?php endfor; endif; ?>";
-
- case 'foreach':
- array_push($this->_foreachelse_stack, false);
- return $this->_compile_foreach_start($tag_args);
- break;
-
- case 'foreachelse':
- $this->_foreachelse_stack[count($this->_foreachelse_stack)-1] = true;
- return "<?php endforeach; unset(\$_from); else: ?>";
-
- case '/foreach':
- if (array_pop($this->_foreachelse_stack))
- return "<?php endif; ?>";
- else
- return "<?php endforeach; unset(\$_from); endif; ?>";
-
- case 'strip':
- case '/strip':
- if ($tag_command{0}=='/') {
- if (--$this->_strip_depth==0) { /* outermost closing {/strip} */
- $this->_additional_newline = "\n";
- return $this->left_delimiter.$tag_command.$this->right_delimiter;
- }
- } else {
- if ($this->_strip_depth++==0) { /* outermost opening {strip} */
- $this->_additional_newline = "";
- return $this->left_delimiter.$tag_command.$this->right_delimiter;
- }
- }
- return '';
-
- case 'literal':
- list (,$literal_block) = each($this->_literal_blocks);
- $this->_current_line_no += substr_count($literal_block, "\n");
- return "<?php echo '".str_replace("'", "\'", str_replace("\\", "\\\\", $literal_block))."'; ?>" . $this->_additional_newline;
-
- case 'php':
- if ($this->security && !$this->security_settings['PHP_TAGS']) {
- $this->_syntax_error("(secure mode) php tags not permitted", E_USER_WARNING, __FILE__, __LINE__);
- return;
- }
- list (,$php_block) = each($this->_php_blocks);
- $this->_current_line_no += substr_count($php_block, "\n");
- return '<?php '.$php_block.' ?>';
-
- case 'insert':
- return $this->_compile_insert_tag($tag_args);
-
- default:
- if ($this->_compile_compiler_tag($tag_command, $tag_args, $output)) {
- return $output;
- } else if ($this->_compile_block_tag($tag_command, $tag_args, $tag_modifier, $output)) {
- return $output;
- } else {
- return $this->_compile_custom_tag($tag_command, $tag_args, $tag_modifier);
- }
- }
- }
-
-
- /**
- * compile the custom compiler tag
- *
- * sets $output to the compiled custom compiler tag
- * @param string $tag_command
- * @param string $tag_args
- * @param string $output
- * @return boolean
- */
- function _compile_compiler_tag($tag_command, $tag_args, &$output)
- {
- $found = false;
- $have_function = true;
-
- /*
- * First we check if the compiler function has already been registered
- * or loaded from a plugin file.
- */
- if (isset($this->_plugins['compiler'][$tag_command])) {
- $found = true;
- $plugin_func = $this->_plugins['compiler'][$tag_command][0];
- if (!is_callable($plugin_func)) {
- $message = "compiler function '$tag_command' is not implemented";
- $have_function = false;
- }
- }
- /*
- * Otherwise we need to load plugin file and look for the function
- * inside it.
- */
- else if ($plugin_file = $this->_get_plugin_filepath('compiler', $tag_command)) {
- $found = true;
-
- include_once $plugin_file;
-
- $plugin_func = 'smarty_compiler_' . $tag_command;
- if (!is_callable($plugin_func)) {
- $message = "plugin function $plugin_func() not found in $plugin_file\n";
- $have_function = false;
- } else {
- $this->_plugins['compiler'][$tag_command] = array($plugin_func, null, null, null, true);
- }
- }
-
- /*
- * True return value means that we either found a plugin or a
- * dynamically registered function. False means that we didn't and the
- * compiler should now emit code to load custom function plugin for this
- * tag.
- */
- if ($found) {
- if ($have_function) {
- $output = call_user_func_array($plugin_func, array($tag_args, &$this));
- if($output != '') {
- $output = '<?php ' . $this->_push_cacheable_state('compiler', $tag_command)
- . $output
- . $this->_pop_cacheable_state('compiler', $tag_command) . ' ?>';
- }
- } else {
- $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__);
- }
- return true;
- } else {
- return false;
- }
- }
-
-
- /**
- * compile block function tag
- *
- * sets $output to compiled block function tag
- * @param string $tag_command
- * @param string $tag_args
- * @param string $tag_modifier
- * @param string $output
- * @return boolean
- */
- function _compile_block_tag($tag_command, $tag_args, $tag_modifier, &$output)
- {
- if ($tag_command{0} == '/') {
- $start_tag = false;
- $tag_command = substr($tag_command, 1);
- } else
- $start_tag = true;
-
- $found = false;
- $have_function = true;
-
- /*
- * First we check if the block function has already been registered
- * or loaded from a plugin file.
- */
- if (isset($this->_plugins['block'][$tag_command])) {
- $found = true;
- $plugin_func = $this->_plugins['block'][$tag_command][0];
- if (!is_callable($plugin_func)) {
- $message = "block function '$tag_command' is not implemented";
- $have_function = false;
- }
- }
- /*
- * Otherwise we need to load plugin file and look for the function
- * inside it.
- */
- else if ($plugin_file = $this->_get_plugin_filepath('block', $tag_command)) {
- $found = true;
-
- include_once $plugin_file;
-
- $plugin_func = 'smarty_block_' . $tag_command;
- if (!function_exists($plugin_func)) {
- $message = "plugin function $plugin_func() not found in $plugin_file\n";
- $have_function = false;
- } else {
- $this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, true);
-
- }
- }
-
- if (!$found) {
- return false;
- } else if (!$have_function) {
- $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__);
- return true;
- }
-
- /*
- * Even though we've located the plugin function, compilation
- * happens only once, so the plugin will still need to be loaded
- * at runtime for future requests.
- */
- $this->_add_plugin('block', $tag_command);
-
- if ($start_tag) {
- $output = '<?php ' . $this->_push_cacheable_state('block', $tag_command);
- $attrs = $this->_parse_attrs($tag_args);
- $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, $_cache_attrs='');
- $output .= "$_cache_attrs\$_params = \$this->_tag_stack[] = array('$tag_command', array(".implode(',', $arg_list).')); ';
- $output .= $this->_compile_plugin_call('block', $tag_command).'($_params[1], null, $this, $_block_repeat=true); unset($_params);';
- $output .= 'while ($_block_repeat) { ob_start(); ?>';
- } else {
- $output = '<?php $this->_block_content = ob_get_contents(); ob_end_clean(); ';
- $_out_tag_text = $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], $this->_block_content, $this, $_block_repeat=false)';
- if ($tag_modifier != '') {
- $this->_parse_modifiers($_out_tag_text, $tag_modifier);
- }
- $output .= 'echo '.$_out_tag_text.'; } ';
- $output .= " array_pop(\$this->_tag_stack); " . $this->_pop_cacheable_state('block', $tag_command) . '?>';
- }
-
- return true;
- }
-
-
- /**
- * compile custom function tag
- *
- * @param string $tag_command
- * @param string $tag_args
- * @param string $tag_modifier
- * @return string
- */
- function _compile_custom_tag($tag_command, $tag_args, $tag_modifier)
- {
- $this->_add_plugin('function', $tag_command);
-
- $_cacheable_state = $this->_push_cacheable_state('function', $tag_command);
- $attrs = $this->_parse_attrs($tag_args);
- $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs='');
-
- $_return = $this->_compile_plugin_call('function', $tag_command).'(array('.implode(',', $arg_list)."), \$this)";
- if($tag_modifier != '') {
- $this->_parse_modifiers($_return, $tag_modifier);
- }
-
- if($_return != '') {
- $_return = '<?php ' . $_cacheable_state . $_cache_attrs . 'echo ' . $_return . ';'
- . $this->_pop_cacheable_state('function', $tag_command) . "?>" . $this->_additional_newline;
- }
-
- return $_return;
- }
-
- /**
- * compile a registered object tag
- *
- * @param string $tag_command
- * @param array $attrs
- * @param string $tag_modifier
- * @return string
- */
- function _compile_registered_object_tag($tag_command, $attrs, $tag_modifier)
- {
- if ($tag_command{0} == '/') {
- $start_tag = false;
- $tag_command = substr($tag_command, 1);
- } else {
- $start_tag = true;
- }
-
- list($object, $obj_comp) = explode('->', $tag_command);
-
- $arg_list = array();
- if(count($attrs)) {
- $_assign_var = false;
- foreach ($attrs as $arg_name => $arg_value) {
- if($arg_name == 'assign') {
- $_assign_var = $arg_value;
- unset($attrs['assign']);
- continue;
- }
- if (is_bool($arg_value))
- $arg_value = $arg_value ? 'true' : 'false';
- $arg_list[] = "'$arg_name' => $arg_value";
- }
- }
-
- if($this->_reg_objects[$object][2]) {
- // smarty object argument format
- $args = "array(".implode(',', (array)$arg_list)."), \$this";
- } else {
- // traditional argument format
- $args = implode(',', array_values($attrs));
- if (empty($args)) {
- $args = 'null';
- }
- }
-
- $prefix = '';
- $postfix = '';
- $newline = '';
- if(!is_object($this->_reg_objects[$object][0])) {
- $this->_trigger_fatal_error("registered '$object' is not an object");
- } elseif(!empty($this->_reg_objects[$object][1]) && !in_array($obj_comp, $this->_reg_objects[$object][1])) {
- $this->_trigger_fatal_error("'$obj_comp' is not a registered component of object '$object'");
- } elseif(method_exists($this->_reg_objects[$object][0], $obj_comp)) {
- // method
- if(in_array($obj_comp, $this->_reg_objects[$object][3])) {
- // block method
- if ($start_tag) {
- $prefix = "\$this->_tag_stack[] = array('$obj_comp', $args); ";
- $prefix .= "\$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], null, \$this, \$_block_repeat=true); ";
- $prefix .= "while (\$_block_repeat) { ob_start();";
- $return = null;
- $postfix = '';
- } else {
- $prefix = "\$this->_obj_block_content = ob_get_contents(); ob_end_clean(); ";
- $return = "\$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], \$this->_obj_block_content, \$this, \$_block_repeat=false)";
- $postfix = "} array_pop(\$this->_tag_stack);";
- }
- } else {
- // non-block method
- $return = "\$this->_reg_objects['$object'][0]->$obj_comp($args)";
- }
- } else {
- // property
- $return = "\$this->_reg_objects['$object'][0]->$obj_comp";
- }
-
- if($return != null) {
- if($tag_modifier != '') {
- $this->_parse_modifiers($return, $tag_modifier);
- }
-
- if(!empty($_assign_var)) {
- $output = "\$this->assign('" . $this->_dequote($_assign_var) ."', $return);";
- } else {
- $output = 'echo ' . $return . ';';
- $newline = $this->_additional_newline;
- }
- } else {
- $output = '';
- }
-
- return '<?php ' . $prefix . $output . $postfix . "?>" . $newline;
- }
-
- /**
- * Compile {insert ...} tag
- *
- * @param string $tag_args
- * @return string
- */
- function _compile_insert_tag($tag_args)
- {
- $attrs = $this->_parse_attrs($tag_args);
- $name = $this->_dequote($attrs['name']);
-
- if (empty($name)) {
- $this->_syntax_error("missing insert name", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- if (!empty($attrs['script'])) {
- $delayed_loading = true;
- } else {
- $delayed_loading = false;
- }
-
- foreach ($attrs as $arg_name => $arg_value) {
- if (is_bool($arg_value))
- $arg_value = $arg_value ? 'true' : 'false';
- $arg_list[] = "'$arg_name' => $arg_value";
- }
-
- $this->_add_plugin('insert', $name, $delayed_loading);
-
- $_params = "array('args' => array(".implode(', ', (array)$arg_list)."))";
-
- return "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.run_insert_handler.php');\necho smarty_core_run_insert_handler($_params, \$this); ?>" . $this->_additional_newline;
- }
-
- /**
- * Compile {include ...} tag
- *
- * @param string $tag_args
- * @return string
- */
- function _compile_include_tag($tag_args)
- {
- $attrs = $this->_parse_attrs($tag_args);
- $arg_list = array();
-
- if (empty($attrs['file'])) {
- $this->_syntax_error("missing 'file' attribute in include tag", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- foreach ($attrs as $arg_name => $arg_value) {
- if ($arg_name == 'file') {
- $include_file = $arg_value;
- continue;
- } else if ($arg_name == 'assign') {
- $assign_var = $arg_value;
- continue;
- }
- if (is_bool($arg_value))
- $arg_value = $arg_value ? 'true' : 'false';
- $arg_list[] = "'$arg_name' => $arg_value";
- }
-
- $output = '<?php ';
-
- if (isset($assign_var)) {
- $output .= "ob_start();\n";
- }
-
- $output .=
- "\$_smarty_tpl_vars = \$this->_tpl_vars;\n";
-
-
- $_params = "array('smarty_include_tpl_file' => " . $include_file . ", 'smarty_include_vars' => array(".implode(',', (array)$arg_list)."))";
- $output .= "\$this->_smarty_include($_params);\n" .
- "\$this->_tpl_vars = \$_smarty_tpl_vars;\n" .
- "unset(\$_smarty_tpl_vars);\n";
-
- if (isset($assign_var)) {
- $output .= "\$this->assign(" . $assign_var . ", ob_get_contents()); ob_end_clean();\n";
- }
-
- $output .= ' ?>';
-
- return $output;
-
- }
-
- /**
- * Compile {include ...} tag
- *
- * @param string $tag_args
- * @return string
- */
- function _compile_include_php_tag($tag_args)
- {
- $attrs = $this->_parse_attrs($tag_args);
-
- if (empty($attrs['file'])) {
- $this->_syntax_error("missing 'file' attribute in include_php tag", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- $assign_var = (empty($attrs['assign'])) ? '' : $this->_dequote($attrs['assign']);
- $once_var = (empty($attrs['once']) || $attrs['once']=='false') ? 'false' : 'true';
-
- foreach($attrs as $arg_name => $arg_value) {
- if($arg_name != 'file' AND $arg_name != 'once' AND $arg_name != 'assign') {
- if(is_bool($arg_value))
- $arg_value = $arg_value ? 'true' : 'false';
- $arg_list[] = "'$arg_name' => $arg_value";
- }
- }
-
- $_params = "array('smarty_file' => " . $attrs['file'] . ", 'smarty_assign' => '$assign_var', 'smarty_once' => $once_var, 'smarty_include_vars' => array(".implode(',', (array)$arg_list)."))";
-
- return "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.smarty_include_php.php');\nsmarty_core_smarty_include_php($_params, \$this); ?>" . $this->_additional_newline;
- }
-
-
- /**
- * Compile {section ...} tag
- *
- * @param string $tag_args
- * @return string
- */
- function _compile_section_start($tag_args)
- {
- $attrs = $this->_parse_attrs($tag_args);
- $arg_list = array();
-
- $output = '<?php ';
- $section_name = $attrs['name'];
- if (empty($section_name)) {
- $this->_syntax_error("missing section name", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- $output .= "if (isset(\$this->_sections[$section_name])) unset(\$this->_sections[$section_name]);\n";
- $section_props = "\$this->_sections[$section_name]";
-
- foreach ($attrs as $attr_name => $attr_value) {
- switch ($attr_name) {
- case 'loop':
- $output .= "{$section_props}['loop'] = is_array(\$_loop=$attr_value) ? count(\$_loop) : max(0, (int)\$_loop); unset(\$_loop);\n";
- break;
-
- case 'show':
- if (is_bool($attr_value))
- $show_attr_value = $attr_value ? 'true' : 'false';
- else
- $show_attr_value = "(bool)$attr_value";
- $output .= "{$section_props}['show'] = $show_attr_value;\n";
- break;
-
- case 'name':
- $output .= "{$section_props}['$attr_name'] = $attr_value;\n";
- break;
-
- case 'max':
- case 'start':
- $output .= "{$section_props}['$attr_name'] = (int)$attr_value;\n";
- break;
-
- case 'step':
- $output .= "{$section_props}['$attr_name'] = ((int)$attr_value) == 0 ? 1 : (int)$attr_value;\n";
- break;
-
- default:
- $this->_syntax_error("unknown section attribute - '$attr_name'", E_USER_ERROR, __FILE__, __LINE__);
- break;
- }
- }
-
- if (!isset($attrs['show']))
- $output .= "{$section_props}['show'] = true;\n";
-
- if (!isset($attrs['loop']))
- $output .= "{$section_props}['loop'] = 1;\n";
-
- if (!isset($attrs['max']))
- $output .= "{$section_props}['max'] = {$section_props}['loop'];\n";
- else
- $output .= "if ({$section_props}['max'] < 0)\n" .
- " {$section_props}['max'] = {$section_props}['loop'];\n";
-
- if (!isset($attrs['step']))
- $output .= "{$section_props}['step'] = 1;\n";
-
- if (!isset($attrs['start']))
- $output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n";
- else {
- $output .= "if ({$section_props}['start'] < 0)\n" .
- " {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" .
- "else\n" .
- " {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n";
- }
-
- $output .= "if ({$section_props}['show']) {\n";
- if (!isset($attrs['start']) && !isset($attrs['step']) && !isset($attrs['max'])) {
- $output .= " {$section_props}['total'] = {$section_props}['loop'];\n";
- } else {
- $output .= " {$section_props}['total'] = min(ceil(({$section_props}['step'] > 0 ? {$section_props}['loop'] - {$section_props}['start'] : {$section_props}['start']+1)/abs({$section_props}['step'])), {$section_props}['max']);\n";
- }
- $output .= " if ({$section_props}['total'] == 0)\n" .
- " {$section_props}['show'] = false;\n" .
- "} else\n" .
- " {$section_props}['total'] = 0;\n";
-
- $output .= "if ({$section_props}['show']):\n";
- $output .= "
- for ({$section_props}['index'] = {$section_props}['start'], {$section_props}['iteration'] = 1;
- {$section_props}['iteration'] <= {$section_props}['total'];
- {$section_props}['index'] += {$section_props}['step'], {$section_props}['iteration']++):\n";
- $output .= "{$section_props}['rownum'] = {$section_props}['iteration'];\n";
- $output .= "{$section_props}['index_prev'] = {$section_props}['index'] - {$section_props}['step'];\n";
- $output .= "{$section_props}['index_next'] = {$section_props}['index'] + {$section_props}['step'];\n";
- $output .= "{$section_props}['first'] = ({$section_props}['iteration'] == 1);\n";
- $output .= "{$section_props}['last'] = ({$section_props}['iteration'] == {$section_props}['total']);\n";
-
- $output .= "?>";
-
- return $output;
- }
-
-
- /**
- * Compile {foreach ...} tag.
- *
- * @param string $tag_args
- * @return string
- */
- function _compile_foreach_start($tag_args)
- {
- $attrs = $this->_parse_attrs($tag_args);
- $arg_list = array();
-
- if (empty($attrs['from'])) {
- $this->_syntax_error("missing 'from' attribute", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- if (empty($attrs['item'])) {
- $this->_syntax_error("missing 'item' attribute", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- $from = $attrs['from'];
- $item = $this->_dequote($attrs['item']);
- if (isset($attrs['name']))
- $name = $attrs['name'];
-
- $output = '<?php ';
- if (isset($name)) {
- $output .= "if (isset(\$this->_foreach[$name])) unset(\$this->_foreach[$name]);\n";
- $foreach_props = "\$this->_foreach[$name]";
- }
-
- $key_part = '';
-
- foreach ($attrs as $attr_name => $attr_value) {
- switch ($attr_name) {
- case 'key':
- $key = $this->_dequote($attrs['key']);
- $key_part = "\$this->_tpl_vars['$key'] => ";
- break;
-
- case 'name':
- $output .= "{$foreach_props}['$attr_name'] = $attr_value;\n";
- break;
- }
- }
-
- if (isset($name)) {
- $output .= "{$foreach_props}['total'] = count(\$_from = (array)$from);\n";
- $output .= "{$foreach_props}['show'] = {$foreach_props}['total'] > 0;\n";
- $output .= "if ({$foreach_props}['show']):\n";
- $output .= "{$foreach_props}['iteration'] = 0;\n";
- $output .= " foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n";
- $output .= " {$foreach_props}['iteration']++;\n";
- $output .= " {$foreach_props}['first'] = ({$foreach_props}['iteration'] == 1);\n";
- $output .= " {$foreach_props}['last'] = ({$foreach_props}['iteration'] == {$foreach_props}['total']);\n";
- } else {
- $output .= "if (count(\$_from = (array)$from)):\n";
- $output .= " foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n";
- }
- $output .= '?>';
-
- return $output;
- }
-
-
- /**
- * Compile {capture} .. {/capture} tags
- *
- * @param boolean $start true if this is the {capture} tag
- * @param string $tag_args
- * @return string
- */
-
- function _compile_capture_tag($start, $tag_args = '')
- {
- $attrs = $this->_parse_attrs($tag_args);
-
- if ($start) {
- if (isset($attrs['name']))
- $buffer = $attrs['name'];
- else
- $buffer = "'default'";
-
- if (isset($attrs['assign']))
- $assign = $attrs['assign'];
- else
- $assign = null;
- $output = "<?php ob_start(); ?>";
- $this->_capture_stack[] = array($buffer, $assign);
- } else {
- list($buffer, $assign) = array_pop($this->_capture_stack);
- $output = "<?php \$this->_smarty_vars['capture'][$buffer] = ob_get_contents(); ";
- if (isset($assign)) {
- $output .= " \$this->assign($assign, ob_get_contents());";
- }
- $output .= "ob_end_clean(); ?>";
- }
-
- return $output;
- }
-
- /**
- * Compile {if ...} tag
- *
- * @param string $tag_args
- * @param boolean $elseif if true, uses elseif instead of if
- * @return string
- */
- function _compile_if_tag($tag_args, $elseif = false)
- {
-
- /* Tokenize args for 'if' tag. */
- preg_match_all('/(?>
- ' . $this->_obj_call_regexp . '(?:' . $this->_mod_regexp . '*)? | # valid object call
- ' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)? | # var or quoted string
- \-?0[xX][0-9a-fA-F]+|\-?\d+(?:\.\d+)?|\.\d+|!==|===|==|!=|<>|<<|>>|<=|>=|\&\&|\|\||\(|\)|,|\!|\^|=|\&|\~|<|>|\||\%|\+|\-|\/|\*|\@ | # valid non-word token
- \b\w+\b | # valid word token
- \S+ # anything else
- )/x', $tag_args, $match);
-
- $tokens = $match[0];
-
- // make sure we have balanced parenthesis
- $token_count = array_count_values($tokens);
- if(isset($token_count['(']) && $token_count['('] != $token_count[')']) {
- $this->_syntax_error("unbalanced parenthesis in if statement", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- $is_arg_stack = array();
-
- for ($i = 0; $i < count($tokens); $i++) {
-
- $token = &$tokens[$i];
-
- switch (strtolower($token)) {
- case '!':
- case '%':
- case '!==':
- case '==':
- case '===':
- case '>':
- case '<':
- case '!=':
- case '<>':
- case '<<':
- case '>>':
- case '<=':
- case '>=':
- case '&&':
- case '||':
- case '|':
- case '^':
- case '&':
- case '~':
- case ')':
- case ',':
- case '+':
- case '-':
- case '*':
- case '/':
- case '@':
- break;
-
- case 'eq':
- $token = '==';
- break;
-
- case 'ne':
- case 'neq':
- $token = '!=';
- break;
-
- case 'lt':
- $token = '<';
- break;
-
- case 'le':
- case 'lte':
- $token = '<=';
- break;
-
- case 'gt':
- $token = '>';
- break;
-
- case 'ge':
- case 'gte':
- $token = '>=';
- break;
-
- case 'and':
- $token = '&&';
- break;
-
- case 'or':
- $token = '||';
- break;
-
- case 'not':
- $token = '!';
- break;
-
- case 'mod':
- $token = '%';
- break;
-
- case '(':
- array_push($is_arg_stack, $i);
- break;
-
- case 'is':
- /* If last token was a ')', we operate on the parenthesized
- expression. The start of the expression is on the stack.
- Otherwise, we operate on the last encountered token. */
- if ($tokens[$i-1] == ')')
- $is_arg_start = array_pop($is_arg_stack);
- else
- $is_arg_start = $i-1;
- /* Construct the argument for 'is' expression, so it knows
- what to operate on. */
- $is_arg = implode(' ', array_slice($tokens, $is_arg_start, $i - $is_arg_start));
-
- /* Pass all tokens from next one until the end to the
- 'is' expression parsing function. The function will
- return modified tokens, where the first one is the result
- of the 'is' expression and the rest are the tokens it
- didn't touch. */
- $new_tokens = $this->_parse_is_expr($is_arg, array_slice($tokens, $i+1));
-
- /* Replace the old tokens with the new ones. */
- array_splice($tokens, $is_arg_start, count($tokens), $new_tokens);
-
- /* Adjust argument start so that it won't change from the
- current position for the next iteration. */
- $i = $is_arg_start;
- break;
-
- default:
- if(preg_match('!^' . $this->_func_regexp . '$!', $token) ) {
- // function call
- if($this->security &&
- !in_array($token, $this->security_settings['IF_FUNCS'])) {
- $this->_syntax_error("(secure mode) '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__);
- }
- } elseif(preg_match('!^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)$!', $token)) {
- // object or variable
- $token = $this->_parse_var_props($token);
- } elseif(is_numeric($token)) {
- // number, skip it
- } else {
- $this->_syntax_error("unidentified token '$token'", E_USER_ERROR, __FILE__, __LINE__);
- }
- break;
- }
- }
-
- if ($elseif)
- return '<?php elseif ('.implode(' ', $tokens).'): ?>';
- else
- return '<?php if ('.implode(' ', $tokens).'): ?>';
- }
-
-
- function _compile_arg_list($type, $name, $attrs, &$cache_code) {
- $arg_list = array();
-
- if (isset($type) && isset($name)
- && isset($this->_plugins[$type])
- && isset($this->_plugins[$type][$name])
- && empty($this->_plugins[$type][$name][4])
- && is_array($this->_plugins[$type][$name][5])
- ) {
- /* we have a list of parameters that should be cached */
- $_cache_attrs = $this->_plugins[$type][$name][5];
- $_count = $this->_cache_attrs_count++;
- $cache_code = "\$_cache_attrs =& \$this->_smarty_cache_attrs('$this->_cache_serial','$_count');";
-
- } else {
- /* no parameters are cached */
- $_cache_attrs = null;
- }
-
- foreach ($attrs as $arg_name => $arg_value) {
- if (is_bool($arg_value))
- $arg_value = $arg_value ? 'true' : 'false';
- if (is_null($arg_value))
- $arg_value = 'null';
- if ($_cache_attrs && in_array($arg_name, $_cache_attrs)) {
- $arg_list[] = "'$arg_name' => (\$this->_cache_including) ? \$_cache_attrs['$arg_name'] : (\$_cache_attrs['$arg_name']=$arg_value)";
- } else {
- $arg_list[] = "'$arg_name' => $arg_value";
- }
- }
- return $arg_list;
- }
-
- /**
- * Parse is expression
- *
- * @param string $is_arg
- * @param array $tokens
- * @return array
- */
- function _parse_is_expr($is_arg, $tokens)
- {
- $expr_end = 0;
- $negate_expr = false;
-
- if (($first_token = array_shift($tokens)) == 'not') {
- $negate_expr = true;
- $expr_type = array_shift($tokens);
- } else
- $expr_type = $first_token;
-
- switch ($expr_type) {
- case 'even':
- if (@$tokens[$expr_end] == 'by') {
- $expr_end++;
- $expr_arg = $tokens[$expr_end++];
- $expr = "!(($is_arg / $expr_arg) % " . $this->_parse_var_props($expr_arg) . ")";
- } else
- $expr = "!($is_arg % 2)";
- break;
-
- case 'odd':
- if (@$tokens[$expr_end] == 'by') {
- $expr_end++;
- $expr_arg = $tokens[$expr_end++];
- $expr = "(($is_arg / $expr_arg) % ". $this->_parse_var_props($expr_arg) . ")";
- } else
- $expr = "($is_arg % 2)";
- break;
-
- case 'div':
- if (@$tokens[$expr_end] == 'by') {
- $expr_end++;
- $expr_arg = $tokens[$expr_end++];
- $expr = "!($is_arg % " . $this->_parse_var_props($expr_arg) . ")";
- } else {
- $this->_syntax_error("expecting 'by' after 'div'", E_USER_ERROR, __FILE__, __LINE__);
- }
- break;
-
- default:
- $this->_syntax_error("unknown 'is' expression - '$expr_type'", E_USER_ERROR, __FILE__, __LINE__);
- break;
- }
-
- if ($negate_expr) {
- $expr = "!($expr)";
- }
-
- array_splice($tokens, 0, $expr_end, $expr);
-
- return $tokens;
- }
-
-
- /**
- * Parse attribute string
- *
- * @param string $tag_args
- * @return array
- */
- function _parse_attrs($tag_args)
- {
-
- /* Tokenize tag attributes. */
- preg_match_all('/(?:' . $this->_obj_call_regexp . '|' . $this->_qstr_regexp . ' | (?>[^"\'=\s]+)
- )+ |
- [=]
- /x', $tag_args, $match);
- $tokens = $match[0];
-
- $attrs = array();
- /* Parse state:
- 0 - expecting attribute name
- 1 - expecting '='
- 2 - expecting attribute value (not '=') */
- $state = 0;
-
- foreach ($tokens as $token) {
- switch ($state) {
- case 0:
- /* If the token is a valid identifier, we set attribute name
- and go to state 1. */
- if (preg_match('!^\w+$!', $token)) {
- $attr_name = $token;
- $state = 1;
- } else
- $this->_syntax_error("invalid attribute name: '$token'", E_USER_ERROR, __FILE__, __LINE__);
- break;
-
- case 1:
- /* If the token is '=', then we go to state 2. */
- if ($token == '=') {
- $state = 2;
- } else
- $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__);
- break;
-
- case 2:
- /* If token is not '=', we set the attribute value and go to
- state 0. */
- if ($token != '=') {
- /* We booleanize the token if it's a non-quoted possible
- boolean value. */
- if (preg_match('!^(on|yes|true)$!', $token)) {
- $token = 'true';
- } else if (preg_match('!^(off|no|false)$!', $token)) {
- $token = 'false';
- } else if ($token == 'null') {
- $token = 'null';
- } else if (preg_match('!^-?([0-9]+|0[xX][0-9a-fA-F]+)$!', $token)) {
- /* treat integer literally */
- } else if (!preg_match('!^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . ')*$!', $token)) {
- /* treat as a string, double-quote it escaping quotes */
- $token = '"'.addslashes($token).'"';
- }
-
- $attrs[$attr_name] = $token;
- $state = 0;
- } else
- $this->_syntax_error("'=' cannot be an attribute value", E_USER_ERROR, __FILE__, __LINE__);
- break;
- }
- $last_token = $token;
- }
-
- if($state != 0) {
- if($state == 1) {
- $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__);
- } else {
- $this->_syntax_error("missing attribute value", E_USER_ERROR, __FILE__, __LINE__);
- }
- }
-
- $this->_parse_vars_props($attrs);
-
- return $attrs;
- }
-
- /**
- * compile multiple variables and section properties tokens into
- * PHP code
- *
- * @param array $tokens
- */
- function _parse_vars_props(&$tokens)
- {
- foreach($tokens as $key => $val) {
- $tokens[$key] = $this->_parse_var_props($val);
- }
- }
-
- /**
- * compile single variable and section properties token into
- * PHP code
- *
- * @param string $val
- * @param string $tag_attrs
- * @return string
- */
- function _parse_var_props($val)
- {
- $val = trim($val);
-
- if(preg_match('!^(' . $this->_obj_call_regexp . '|' . $this->_dvar_regexp . ')(' . $this->_mod_regexp . '*)$!', $val, $match)) {
- // $ variable or object
- $return = $this->_parse_var($match[1]);
- if($match[2] != '') {
- $this->_parse_modifiers($return, $match[2]);
- }
- return $return;
- }
- elseif(preg_match('!^' . $this->_db_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
- // double quoted text
- preg_match('!^(' . $this->_db_qstr_regexp . ')('. $this->_mod_regexp . '*)$!', $val, $match);
- $return = $this->_expand_quoted_text($match[1]);
- if($match[2] != '') {
- $this->_parse_modifiers($return, $match[2]);
- }
- return $return;
- }
- elseif(preg_match('!^' . $this->_si_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
- // single quoted text
- preg_match('!^(' . $this->_si_qstr_regexp . ')('. $this->_mod_regexp . '*)$!', $val, $match);
- if($match[2] != '') {
- $this->_parse_modifiers($match[1], $match[2]);
- return $match[1];
- }
- }
- elseif(preg_match('!^' . $this->_cvar_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
- // config var
- return $this->_parse_conf_var($val);
- }
- elseif(preg_match('!^' . $this->_svar_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
- // section var
- return $this->_parse_section_prop($val);
- }
- elseif(!in_array($val, $this->_permitted_tokens) && !is_numeric($val)) {
- // literal string
- return $this->_expand_quoted_text('"' . $val .'"');
- }
- return $val;
- }
-
- /**
- * expand quoted text with embedded variables
- *
- * @param string $var_expr
- * @return string
- */
- function _expand_quoted_text($var_expr)
- {
- // if contains unescaped $, expand it
- if(preg_match_all('%(?:\`(?<!\\\\)\$' . $this->_dvar_guts_regexp . '\`)|(?:(?<!\\\\)\$\w+(\[[a-zA-Z0-9]+\])*)%', $var_expr, $_match)) {
- $_match = $_match[0];
- rsort($_match);
- reset($_match);
- foreach($_match as $_var) {
- $var_expr = str_replace ($_var, '".(' . $this->_parse_var(str_replace('`','',$_var)) . ')."', $var_expr);
- }
- $_return = preg_replace('%\.""|(?<!\\\\)""\.%', '', $var_expr);
- } else {
- $_return = $var_expr;
- }
- // replace double quoted literal string with single quotes
- $_return = preg_replace('!^"([\s\w]+)"$!',"'\\1'",$_return);
- return $_return;
- }
-
- /**
- * parse variable expression into PHP code
- *
- * @param string $var_expr
- * @param string $output
- * @return string
- */
- function _parse_var($var_expr)
- {
- $_has_math = false;
- $_math_vars = preg_split('!('.$this->_dvar_math_regexp.'|'.$this->_qstr_regexp.')!', $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE);
-
- if(count($_math_vars) > 1) {
- $_first_var = "";
- $_complete_var = "";
- // simple check if there is any math, to stop recursion (due to modifiers with "xx % yy" as parameter)
- foreach($_math_vars as $_k => $_math_var) {
- $_math_var = $_math_vars[$_k];
-
- if(!empty($_math_var) || is_numeric($_math_var)) {
- // hit a math operator, so process the stuff which came before it
- if(preg_match('!^' . $this->_dvar_math_regexp . '$!', $_math_var)) {
- $_has_math = true;
- if(!empty($_complete_var) || is_numeric($_complete_var)) {
- $_output .= $this->_parse_var($_complete_var);
- }
-
- // just output the math operator to php
- $_output .= $_math_var;
-
- if(empty($_first_var))
- $_first_var = $_complete_var;
-
- $_complete_var = "";
- } else {
- // fetch multiple -> (like $foo->bar->baz ) which wouldn't get fetched else, because it would only get $foo->bar and treat the ->baz as "-" ">baz" then
- for($_i = $_k + 1; $_i <= count($_math_vars); $_i += 2) {
- // fetch -> because it gets splitted at - and move it back together
- if( /* prevent notice */ (isset($_math_vars[$_i]) && isset($_math_vars[$_i+1])) && ($_math_vars[$_i] === '-' && $_math_vars[$_i+1]{0} === '>')) {
- $_math_var .= $_math_vars[$_i].$_math_vars[$_i+1];
- $_math_vars[$_i] = $_math_vars[$_i+1] = '';
- } else {
- break;
- }
- }
- $_complete_var .= $_math_var;
- }
- }
- }
- if($_has_math) {
- if(!empty($_complete_var) || is_numeric($_complete_var))
- $_output .= $this->_parse_var($_complete_var, true);
-
- // get the modifiers working (only the last var from math + modifier is left)
- $var_expr = $_complete_var;
- }
- }
-
- // prevent cutting of first digit in the number (we _definitly_ got a number if the first char is a digit)
- if(is_numeric($var_expr{0}))
- $_var_ref = $var_expr;
- else
- $_var_ref = substr($var_expr, 1);
-
- if(!$_has_math) {
- // get [foo] and .foo and ->foo and (...) pieces
- preg_match_all('!(?:^\w+)|' . $this->_obj_params_regexp . '|(?:' . $this->_var_bracket_regexp . ')|->\$?\w+|\.\$?\w+|\S+!', $_var_ref, $match);
-
- $_indexes = $match[0];
- $_var_name = array_shift($_indexes);
-
- /* Handle $smarty.* variable references as a special case. */
- if ($_var_name == 'smarty') {
- /*
- * If the reference could be compiled, use the compiled output;
- * otherwise, fall back on the $smarty variable generated at
- * run-time.
- */
- if (($smarty_ref = $this->_compile_smarty_ref($_indexes)) !== null) {
- $_output = $smarty_ref;
- } else {
- $_var_name = substr(array_shift($_indexes), 1);
- $_output = "\$this->_smarty_vars['$_var_name']";
- }
- } elseif(is_numeric($_var_name) && is_numeric($var_expr{0})) {
- // because . is the operator for accessing arrays thru inidizes we need to put it together again for floating point numbers
- if(count($_indexes) > 0)
- {
- $_var_name .= implode("", $_indexes);
- $_indexes = array();
- }
- $_output = $_var_name;
- } else {
- $_output = "\$this->_tpl_vars['$_var_name']";
- }
-
- foreach ($_indexes as $_index) {
- if ($_index{0} == '[') {
- $_index = substr($_index, 1, -1);
- if (is_numeric($_index)) {
- $_output .= "[$_index]";
- } elseif ($_index{0} == '$') {
- if (strpos($_index, '.') !== false) {
- $_output .= '[' . $this->_parse_var($_index) . ']';
- } else {
- $_output .= "[\$this->_tpl_vars['" . substr($_index, 1) . "']]";
- }
- } else {
- $_var_parts = explode('.', $_index);
- $_var_section = $_var_parts[0];
- $_var_section_prop = isset($_var_parts[1]) ? $_var_parts[1] : 'index';
- $_output .= "[\$this->_sections['$_var_section']['$_var_section_prop']]";
- }
- } else if ($_index{0} == '.') {
- if ($_index{1} == '$')
- $_output .= "[\$this->_tpl_vars['" . substr($_index, 2) . "']]";
- else
- $_output .= "['" . substr($_index, 1) . "']";
- } else if (substr($_index,0,2) == '->') {
- if(substr($_index,2,2) == '__') {
- $this->_syntax_error('call to internal object members is not allowed', E_USER_ERROR, __FILE__, __LINE__);
- } elseif($this->security && substr($_index, 2, 1) == '_') {
- $this->_syntax_error('(secure) call to private object member is not allowed', E_USER_ERROR, __FILE__, __LINE__);
- } elseif ($_index{2} == '$') {
- if ($this->security) {
- $this->_syntax_error('(secure) call to dynamic object member is not allowed', E_USER_ERROR, __FILE__, __LINE__);
- } else {
- $_output .= '->{(($_var=$this->_tpl_vars[\''.substr($_index,3).'\']) && substr($_var,0,2)!=\'__\') ? $_var : $this->trigger_error("cannot access property \\"$_var\\"")}';
- }
- } else {
- $_output .= $_index;
- }
- } elseif ($_index{0} == '(') {
- $_index = $this->_parse_parenth_args($_index);
- $_output .= $_index;
- } else {
- $_output .= $_index;
- }
- }
- }
-
- return $_output;
- }
-
- /**
- * parse arguments in function call parenthesis
- *
- * @param string $parenth_args
- * @return string
- */
- function _parse_parenth_args($parenth_args)
- {
- preg_match_all('!' . $this->_param_regexp . '!',$parenth_args, $match);
- $match = $match[0];
- rsort($match);
- reset($match);
- $orig_vals = $match;
- $this->_parse_vars_props($match);
- return str_replace($orig_vals, $match, $parenth_args);
- }
-
- /**
- * parse configuration variable expression into PHP code
- *
- * @param string $conf_var_expr
- */
- function _parse_conf_var($conf_var_expr)
- {
- $parts = explode('|', $conf_var_expr, 2);
- $var_ref = $parts[0];
- $modifiers = isset($parts[1]) ? $parts[1] : '';
-
- $var_name = substr($var_ref, 1, -1);
-
- $output = "\$this->_config[0]['vars']['$var_name']";
-
- $this->_parse_modifiers($output, $modifiers);
-
- return $output;
- }
-
- /**
- * parse section property expression into PHP code
- *
- * @param string $section_prop_expr
- * @return string
- */
- function _parse_section_prop($section_prop_expr)
- {
- $parts = explode('|', $section_prop_expr, 2);
- $var_ref = $parts[0];
- $modifiers = isset($parts[1]) ? $parts[1] : '';
-
- preg_match('!%(\w+)\.(\w+)%!', $var_ref, $match);
- $section_name = $match[1];
- $prop_name = $match[2];
-
- $output = "\$this->_sections['$section_name']['$prop_name']";
-
- $this->_parse_modifiers($output, $modifiers);
-
- return $output;
- }
-
-
- /**
- * parse modifier chain into PHP code
- *
- * sets $output to parsed modified chain
- * @param string $output
- * @param string $modifier_string
- */
- function _parse_modifiers(&$output, $modifier_string)
- {
- preg_match_all('!\|(@?\w+)((?>:(?:'. $this->_qstr_regexp . '|[^|]+))*)!', '|' . $modifier_string, $_match);
- list(, $_modifiers, $modifier_arg_strings) = $_match;
-
- for ($_i = 0, $_for_max = count($_modifiers); $_i < $_for_max; $_i++) {
- $_modifier_name = $_modifiers[$_i];
-
- if($_modifier_name == 'smarty') {
- // skip smarty modifier
- continue;
- }
-
- preg_match_all('!:(' . $this->_qstr_regexp . '|[^:]+)!', $modifier_arg_strings[$_i], $_match);
- $_modifier_args = $_match[1];
-
- if ($_modifier_name{0} == '@') {
- $_map_array = false;
- $_modifier_name = substr($_modifier_name, 1);
- } else {
- $_map_array = true;
- }
-
- $this->_add_plugin('modifier', $_modifier_name);
- if (empty($this->_plugins['modifier'][$_modifier_name])
- && !$this->_get_plugin_filepath('modifier', $_modifier_name)
- && function_exists($_modifier_name)) {
- if ($this->security && !in_array($_modifier_name, $this->security_settings['MODIFIER_FUNCS'])) {
- $this->_trigger_fatal_error("[plugin] (secure mode) modifier '$_modifier_name' is not allowed" , $_tpl_file, $_tpl_line, __FILE__, __LINE__);
- } else {
- $this->_plugins['modifier'][$_modifier_name] = array($_modifier_name, null, null, false);
- }
- }
-
- $this->_parse_vars_props($_modifier_args);
-
- if($_modifier_name == 'default') {
- // supress notifications of default modifier vars and args
- if($output{0} == '$') {
- $output = '@' . $output;
- }
- if(isset($_modifier_args[0]) && $_modifier_args[0]{0} == '$') {
- $_modifier_args[0] = '@' . $_modifier_args[0];
- }
- }
- if (count($_modifier_args) > 0)
- $_modifier_args = ', '.implode(', ', $_modifier_args);
- else
- $_modifier_args = '';
-
- if ($_map_array) {
- $output = "((is_array(\$_tmp=$output)) ? \$this->_run_mod_handler('$_modifier_name', true, \$_tmp$_modifier_args) : " . $this->_compile_plugin_call('modifier', $_modifier_name) . "(\$_tmp$_modifier_args))";
-
- } else {
-
- $output = $this->_compile_plugin_call('modifier', $_modifier_name)."($output$_modifier_args)";
-
- }
- }
- }
-
-
- /**
- * add plugin
- *
- * @param string $type
- * @param string $name
- * @param boolean? $delayed_loading
- */
- function _add_plugin($type, $name, $delayed_loading = null)
- {
- if (!isset($this->_plugin_info[$type])) {
- $this->_plugin_info[$type] = array();
- }
- if (!isset($this->_plugin_info[$type][$name])) {
- $this->_plugin_info[$type][$name] = array($this->_current_file,
- $this->_current_line_no,
- $delayed_loading);
- }
- }
-
-
- /**
- * Compiles references of type $smarty.foo
- *
- * @param string $indexes
- * @return string
- */
- function _compile_smarty_ref(&$indexes)
- {
- /* Extract the reference name. */
- $_ref = substr($indexes[0], 1);
- foreach($indexes as $_index_no=>$_index) {
- if ($_index{0} != '.' && $_index_no<2 || !preg_match('!^(\.|\[|->)!', $_index)) {
- $this->_syntax_error('$smarty' . implode('', array_slice($indexes, 0, 2)) . ' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__);
- }
- }
-
- switch ($_ref) {
- case 'now':
- $compiled_ref = 'time()';
- $_max_index = 1;
- break;
-
- case 'foreach':
- case 'section':
- array_shift($indexes);
- $_var = $this->_parse_var_props(substr($indexes[0], 1));
- if ($_ref == 'foreach')
- $compiled_ref = "\$this->_foreach[$_var]";
- else
- $compiled_ref = "\$this->_sections[$_var]";
- break;
-
- case 'get':
- $compiled_ref = ($this->request_use_auto_globals) ? '$_GET' : "\$GLOBALS['HTTP_GET_VARS']";
- break;
-
- case 'post':
- $compiled_ref = ($this->request_use_auto_globals) ? '$_POST' : "\$GLOBALS['HTTP_POST_VARS']";
- break;
-
- case 'cookies':
- $compiled_ref = ($this->request_use_auto_globals) ? '$_COOKIE' : "\$GLOBALS['HTTP_COOKIE_VARS']";
- break;
-
- case 'env':
- $compiled_ref = ($this->request_use_auto_globals) ? '$_ENV' : "\$GLOBALS['HTTP_ENV_VARS']";
- break;
-
- case 'server':
- $compiled_ref = ($this->request_use_auto_globals) ? '$_SERVER' : "\$GLOBALS['HTTP_SERVER_VARS']";
- break;
-
- case 'session':
- $compiled_ref = ($this->request_use_auto_globals) ? '$_SESSION' : "\$GLOBALS['HTTP_SESSION_VARS']";
- break;
-
- /*
- * These cases are handled either at run-time or elsewhere in the
- * compiler.
- */
- case 'request':
- if ($this->request_use_auto_globals) {
- $compiled_ref = '$_REQUEST';
- break;
- } else {
- $this->_init_smarty_vars = true;
- }
- return null;
-
- case 'capture':
- return null;
-
- case 'template':
- $compiled_ref = "'$this->_current_file'";
- $_max_index = 1;
- break;
-
- case 'version':
- $compiled_ref = "'$this->_version'";
- $_max_index = 1;
- break;
-
- case 'const':
- array_shift($indexes);
- $_val = $this->_parse_var_props(substr($indexes[0],1));
- $compiled_ref = '@constant(' . $_val . ')';
- $_max_index = 1;
- break;
-
- case 'config':
- $compiled_ref = "\$this->_config[0]['vars']";
- $_max_index = 2;
- break;
-
- default:
- $this->_syntax_error('$smarty.' . $_ref . ' is an unknown reference', E_USER_ERROR, __FILE__, __LINE__);
- break;
- }
-
- if (isset($_max_index) && count($indexes) > $_max_index) {
- $this->_syntax_error('$smarty' . implode('', $indexes) .' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__);
- }
-
- array_shift($indexes);
- return $compiled_ref;
- }
-
- /**
- * compiles call to plugin of type $type with name $name
- * returns a string containing the function-name or method call
- * without the paramter-list that would have follow to make the
- * call valid php-syntax
- *
- * @param string $type
- * @param string $name
- * @return string
- */
- function _compile_plugin_call($type, $name) {
- if (isset($this->_plugins[$type][$name])) {
- /* plugin loaded */
- if (is_array($this->_plugins[$type][$name][0])) {
- return ((is_object($this->_plugins[$type][$name][0][0])) ?
- "\$this->_plugins['$type']['$name'][0][0]->" /* method callback */
- : (string)($this->_plugins[$type][$name][0][0]).'::' /* class callback */
- ). $this->_plugins[$type][$name][0][1];
-
- } else {
- /* function callback */
- return $this->_plugins[$type][$name][0];
-
- }
- } else {
- /* plugin not loaded -> auto-loadable-plugin */
- return 'smarty_'.$type.'_'.$name;
-
- }
- }
-
- /**
- * load pre- and post-filters
- */
- function _load_filters()
- {
- if (count($this->_plugins['prefilter']) > 0) {
- foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) {
- if ($prefilter === false) {
- unset($this->_plugins['prefilter'][$filter_name]);
- $_params = array('plugins' => array(array('prefilter', $filter_name, null, null, false)));
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
- smarty_core_load_plugins($_params, $this);
- }
- }
- }
- if (count($this->_plugins['postfilter']) > 0) {
- foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) {
- if ($postfilter === false) {
- unset($this->_plugins['postfilter'][$filter_name]);
- $_params = array('plugins' => array(array('postfilter', $filter_name, null, null, false)));
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
- smarty_core_load_plugins($_params, $this);
- }
- }
- }
- }
-
-
- /**
- * Quote subpattern references
- *
- * @param string $string
- * @return string
- */
- function _quote_replace($string)
- {
- return preg_replace('![\\$]\d!', '\\\\\\0', $string);
- }
-
- /**
- * display Smarty syntax error
- *
- * @param string $error_msg
- * @param integer $error_type
- * @param string $file
- * @param integer $line
- */
- function _syntax_error($error_msg, $error_type = E_USER_ERROR, $file=null, $line=null)
- {
- if(isset($file) && isset($line)) {
- $info = ' ('.basename($file).", line $line)";
- } else {
- $info = null;
- }
- trigger_error('Smarty: [in ' . $this->_current_file . ' line ' .
- $this->_current_line_no . "]: syntax error: $error_msg$info", $error_type);
- }
-
-
- /**
- * check if the compilation changes from cacheable to
- * non-cacheable state with the beginning of the current
- * plugin. return php-code to reflect the transition.
- * @return string
- */
- function _push_cacheable_state($type, $name) {
- $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4];
- if ($_cacheable
- || 0<$this->_cacheable_state++) return '';
- if (!isset($this->_cache_serial)) $this->_cache_serial = md5(uniqid('Smarty'));
- $_ret = 'if ($this->caching) { echo \'{nocache:'
- . $this->_cache_serial . '#' . $this->_nocache_count
- . '}\';}';
- return $_ret;
- }
-
-
- /**
- * check if the compilation changes from non-cacheable to
- * cacheable state with the end of the current plugin return
- * php-code to reflect the transition.
- * @return string
- */
- function _pop_cacheable_state($type, $name) {
- $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4];
- if ($_cacheable
- || --$this->_cacheable_state>0) return '';
- return 'if ($this->caching) { echo \'{/nocache:'
- . $this->_cache_serial . '#' . ($this->_nocache_count++)
- . '}\';}';
- }
-
-}
-
-/**
- * compare to values by their string length
- *
- * @access private
- * @param string $a
- * @param string $b
- * @return 0|-1|1
- */
-function _smarty_sort_length($a, $b)
-{
- if($a == $b)
- return 0;
-
- if(strlen($a) == strlen($b))
- return ($a > $b) ? -1 : 1;
-
- return (strlen($a) > strlen($b)) ? -1 : 1;
-}
-
-
-/* vim: set et: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assemble_plugin_filepath.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assemble_plugin_filepath.php
deleted file mode 100644
index 4c40ae90..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assemble_plugin_filepath.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * assemble filepath of requested plugin
- *
- * @param string $type
- * @param string $name
- * @return string|false
- */
-function smarty_core_assemble_plugin_filepath($params, &$smarty)
-{
-
- $_plugin_filename = $params['type'] . '.' . $params['name'] . '.php';
- $_return = false;
-
- foreach ((array)$smarty->plugins_dir as $_plugin_dir) {
-
- $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
-
- // see if path is relative
- if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) {
- $_relative_paths[] = $_plugin_dir;
- // relative path, see if it is in the SMARTY_DIR
- if (@is_readable(SMARTY_DIR . $_plugin_filepath)) {
- $_return = SMARTY_DIR . $_plugin_filepath;
- break;
- }
- }
- // try relative to cwd (or absolute)
- if (@is_readable($_plugin_filepath)) {
- $_return = $_plugin_filepath;
- break;
- }
- }
-
- if($_return === false) {
- // still not found, try PHP include_path
- if(isset($_relative_paths)) {
- foreach ((array)$_relative_paths as $_plugin_dir) {
-
- $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
-
- $_params = array('file_path' => $_plugin_filepath);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
- if(smarty_core_get_include_path($_params, $smarty)) {
- return $_params['new_file_path'];
- }
- }
- }
- }
-
- return $_return;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assign_smarty_interface.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assign_smarty_interface.php
deleted file mode 100644
index 500ba9a9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.assign_smarty_interface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty assign_smarty_interface core plugin
- *
- * Type: core<br>
- * Name: assign_smarty_interface<br>
- * Purpose: assign the $smarty interface variable
- * @param array Format: null
- * @param Smarty
- */
-function smarty_core_assign_smarty_interface($params, &$smarty)
-{
- if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) {
- return;
- }
-
- $_globals_map = array('g' => 'HTTP_GET_VARS',
- 'p' => 'HTTP_POST_VARS',
- 'c' => 'HTTP_COOKIE_VARS',
- 's' => 'HTTP_SERVER_VARS',
- 'e' => 'HTTP_ENV_VARS');
-
- $_smarty_vars_request = array();
-
- foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) {
- if (isset($_globals_map[$_c])) {
- $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]);
- }
- }
- $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']);
-
- $smarty->_smarty_vars['request'] = $_smarty_vars_request;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.create_dir_structure.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.create_dir_structure.php
deleted file mode 100644
index b57d50ea..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.create_dir_structure.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * create full directory structure
- *
- * @param string $dir
- */
-
-// $dir
-
-function smarty_core_create_dir_structure($params, &$smarty)
-{
- if (!file_exists($params['dir'])) {
- $_open_basedir_ini = ini_get('open_basedir');
-
- if (DIRECTORY_SEPARATOR=='/') {
- /* unix-style paths */
- $_dir = $params['dir'];
- $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
- $_new_dir = ($_dir{0}=='/') ? '/' : getcwd().'/';
- if($_use_open_basedir = !empty($_open_basedir_ini)) {
- $_open_basedirs = explode(':', $_open_basedir_ini);
- }
-
- } else {
- /* other-style paths */
- $_dir = str_replace('\\','/', $params['dir']);
- $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
- if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) {
- /* leading "//" for network volume, or "[letter]:/" for full path */
- $_new_dir = $_root_dir[1];
- /* remove drive-letter from _dir_parts */
- if (isset($_root_dir[3])) array_shift($_dir_parts);
-
- } else {
- $_new_dir = str_replace('\\', '/', getcwd()).'/';
-
- }
-
- if($_use_open_basedir = !empty($_open_basedir_ini)) {
- $_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini));
- }
-
- }
-
- /* all paths use "/" only from here */
- foreach ($_dir_parts as $_dir_part) {
- $_new_dir .= $_dir_part;
-
- if ($_use_open_basedir) {
- // do not attempt to test or make directories outside of open_basedir
- $_make_new_dir = false;
- foreach ($_open_basedirs as $_open_basedir) {
- if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) {
- $_make_new_dir = true;
- break;
- }
- }
- } else {
- $_make_new_dir = true;
- }
-
- if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) {
- $smarty->trigger_error("problem creating directory '" . $_new_dir . "'");
- return false;
- }
- $_new_dir .= '/';
- }
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.display_debug_console.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.display_debug_console.php
deleted file mode 100644
index 252c4478..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.display_debug_console.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty debug_console function plugin
- *
- * Type: core<br>
- * Name: display_debug_console<br>
- * Purpose: display the javascript debug console window
- * @param array Format: null
- * @param Smarty
- */
-function smarty_core_display_debug_console($params, &$smarty)
-{
- // we must force compile the debug template in case the environment
- // changed between separate applications.
-
- if(empty($smarty->debug_tpl)) {
- // set path to debug template from SMARTY_DIR
- $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl';
- if($smarty->security && is_file($smarty->debug_tpl)) {
- $smarty->secure_dir[] = dirname(realpath($smarty->debug_tpl));
- }
- }
-
- $_ldelim_orig = $smarty->left_delimiter;
- $_rdelim_orig = $smarty->right_delimiter;
-
- $smarty->left_delimiter = '{';
- $smarty->right_delimiter = '}';
-
- $_compile_id_orig = $smarty->_compile_id;
- $smarty->_compile_id = null;
-
- $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl);
- if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path))
- {
- ob_start();
- $smarty->_include($_compile_path);
- $_results = ob_get_contents();
- ob_end_clean();
- } else {
- $_results = '';
- }
-
- $smarty->_compile_id = $_compile_id_orig;
-
- $smarty->left_delimiter = $_ldelim_orig;
- $smarty->right_delimiter = $_rdelim_orig;
-
- return $_results;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_include_path.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_include_path.php
deleted file mode 100644
index 855eed30..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_include_path.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Get path to file from include_path
- *
- * @param string $file_path
- * @param string $new_file_path
- * @return boolean
- * @staticvar array|null
- */
-
-// $file_path, &$new_file_path
-
-function smarty_core_get_include_path(&$params, &$smarty)
-{
- static $_path_array = null;
-
- if(!isset($_path_array)) {
- $_ini_include_path = ini_get('include_path');
-
- if(strstr($_ini_include_path,';')) {
- // windows pathnames
- $_path_array = explode(';',$_ini_include_path);
- } else {
- $_path_array = explode(':',$_ini_include_path);
- }
- }
- foreach ($_path_array as $_include_path) {
- if (file_exists($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) {
- $params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path'];
- return true;
- }
- }
- return false;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_microtime.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_microtime.php
deleted file mode 100644
index 3c998a71..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_microtime.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Get seconds and microseconds
- * @return double
- */
-function smarty_core_get_microtime($params, &$smarty)
-{
- $mtime = microtime();
- $mtime = explode(" ", $mtime);
- $mtime = (double)($mtime[1]) + (double)($mtime[0]);
- return ($mtime);
-}
-
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_php_resource.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_php_resource.php
deleted file mode 100644
index 5279ad21..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.get_php_resource.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Retrieves PHP script resource
- *
- * sets $php_resource to the returned resource
- * @param string $resource
- * @param string $resource_type
- * @param $php_resource
- * @return boolean
- */
-
-function smarty_core_get_php_resource(&$params, &$smarty)
-{
-
- $params['resource_base_path'] = $smarty->trusted_dir;
- $smarty->_parse_resource_name($params, $smarty);
-
- /*
- * Find out if the resource exists.
- */
-
- if ($params['resource_type'] == 'file') {
- $_readable = false;
- if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
- $_readable = true;
- } else {
- // test for file in include_path
- $_params = array('file_path' => $params['resource_name']);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
- if(smarty_core_get_include_path($_params, $smarty)) {
- $_include_path = $_params['new_file_path'];
- $_readable = true;
- }
- }
- } else if ($params['resource_type'] != 'file') {
- $_template_source = null;
- $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0])
- && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0],
- array($params['resource_name'], &$_template_source, &$smarty));
- }
-
- /*
- * Set the error function, depending on which class calls us.
- */
- if (method_exists($smarty, '_syntax_error')) {
- $_error_funcc = '_syntax_error';
- } else {
- $_error_funcc = 'trigger_error';
- }
-
- if ($_readable) {
- if ($smarty->security) {
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_trusted.php');
- if (!smarty_core_is_trusted($params, $smarty)) {
- $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
- return false;
- }
- }
- } else {
- $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
- return false;
- }
-
- if ($params['resource_type'] == 'file') {
- $params['php_resource'] = $params['resource_name'];
- } else {
- $params['php_resource'] = $_template_source;
- }
- return true;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_secure.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_secure.php
deleted file mode 100644
index d6358208..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_secure.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * determines if a resource is secure or not.
- *
- * @param string $resource_type
- * @param string $resource_name
- * @return boolean
- */
-
-// $resource_type, $resource_name
-
-function smarty_core_is_secure($params, &$smarty)
-{
- static $check_template_dir = true;
-
- if (!$smarty->security || $smarty->security_settings['INCLUDE_ANY']) {
- return true;
- }
-
- $_smarty_secure = false;
- if ($params['resource_type'] == 'file') {
- if($check_template_dir) {
- if (!in_array($smarty->template_dir, $smarty->secure_dir))
- // add template_dir to secure_dir array
- array_unshift($smarty->secure_dir, $smarty->template_dir);
- $check_template_dir = false;
- }
- if (!empty($smarty->secure_dir)) {
- $_rp = realpath($params['resource_name']);
- foreach ((array)$smarty->secure_dir as $curr_dir) {
- if ( !empty($curr_dir) && is_readable ($curr_dir)) {
- $_cd = realpath($curr_dir);
- if (strncmp($_rp, $_cd, strlen($_cd)) == 0
- && $_rp{strlen($_cd)} == DIRECTORY_SEPARATOR ) {
- $_smarty_secure = true;
- break;
- }
- }
- }
- }
- } else {
- // resource is not on local file system
- $_smarty_secure = call_user_func_array(
- $smarty->_plugins['resource'][$params['resource_type']][0][2],
- array($params['resource_name'], &$_smarty_secure, &$smarty));
- }
-
- return $_smarty_secure;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_trusted.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_trusted.php
deleted file mode 100644
index 478d3d30..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.is_trusted.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**#@+
- * @access private
- */
-/**
- * determines if a resource is trusted or not
- *
- * @param string $resource_type
- * @param string $resource_name
- * @return boolean
- */
-
- // $resource_type, $resource_name
-
-function smarty_core_is_trusted($params, &$smarty)
-{
- $_smarty_trusted = false;
- if ($params['resource_type'] == 'file') {
- if (!empty($smarty->trusted_dir)) {
- $_rp = realpath($params['resource_name']);
- foreach ((array)$smarty->trusted_dir as $curr_dir) {
- if (!empty($curr_dir) && is_readable ($curr_dir)) {
- $_cd = realpath($curr_dir);
- if (strncmp($_rp, $_cd, strlen($_cd)) == 0
- && $_rp{strlen($_cd)} == DIRECTORY_SEPARATOR ) {
- $_smarty_trusted = true;
- break;
- }
- }
- }
- }
-
- } else {
- // resource is not on local file system
- $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3],
- array($params['resource_name'], $smarty));
- }
-
- return $_smarty_trusted;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_plugins.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_plugins.php
deleted file mode 100644
index 6f412ec9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_plugins.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Load requested plugins
- *
- * @param array $plugins
- */
-
-// $plugins
-
-function smarty_core_load_plugins($params, &$smarty)
-{
-
- foreach ($params['plugins'] as $_plugin_info) {
- list($_type, $_name, $_tpl_file, $_tpl_line, $_delayed_loading) = $_plugin_info;
- $_plugin = &$smarty->_plugins[$_type][$_name];
-
- /*
- * We do not load plugin more than once for each instance of Smarty.
- * The following code checks for that. The plugin can also be
- * registered dynamically at runtime, in which case template file
- * and line number will be unknown, so we fill them in.
- *
- * The final element of the info array is a flag that indicates
- * whether the dynamically registered plugin function has been
- * checked for existence yet or not.
- */
- if (isset($_plugin)) {
- if (empty($_plugin[3])) {
- if (!is_callable($_plugin[0])) {
- $smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
- } else {
- $_plugin[1] = $_tpl_file;
- $_plugin[2] = $_tpl_line;
- $_plugin[3] = true;
- if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */
- }
- }
- continue;
- } else if ($_type == 'insert') {
- /*
- * For backwards compatibility, we check for insert functions in
- * the symbol table before trying to load them as a plugin.
- */
- $_plugin_func = 'insert_' . $_name;
- if (function_exists($_plugin_func)) {
- $_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false);
- continue;
- }
- }
-
- $_plugin_file = $smarty->_get_plugin_filepath($_type, $_name);
-
- if (! $_found = ($_plugin_file != false)) {
- $_message = "could not load plugin file '$_type.$_name.php'\n";
- }
-
- /*
- * If plugin file is found, it -must- provide the properly named
- * plugin function. In case it doesn't, simply output the error and
- * do not fall back on any other method.
- */
- if ($_found) {
- include_once $_plugin_file;
-
- $_plugin_func = 'smarty_' . $_type . '_' . $_name;
- if (!function_exists($_plugin_func)) {
- $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
- continue;
- }
- }
- /*
- * In case of insert plugins, their code may be loaded later via
- * 'script' attribute.
- */
- else if ($_type == 'insert' && $_delayed_loading) {
- $_plugin_func = 'smarty_' . $_type . '_' . $_name;
- $_found = true;
- }
-
- /*
- * Plugin specific processing and error checking.
- */
- if (!$_found) {
- if ($_type == 'modifier') {
- /*
- * In case modifier falls back on using PHP functions
- * directly, we only allow those specified in the security
- * context.
- */
- if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) {
- $_message = "(secure mode) modifier '$_name' is not allowed";
- } else {
- if (!function_exists($_name)) {
- $_message = "modifier '$_name' is not implemented";
- } else {
- $_plugin_func = $_name;
- $_found = true;
- }
- }
- } else if ($_type == 'function') {
- /*
- * This is a catch-all situation.
- */
- $_message = "unknown tag - '$_name'";
- }
- }
-
- if ($_found) {
- $smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true);
- } else {
- // output error
- $smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__);
- }
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_resource_plugin.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_resource_plugin.php
deleted file mode 100644
index 8a084f1b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.load_resource_plugin.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * load a resource plugin
- *
- * @param string $type
- */
-
-// $type
-
-function smarty_core_load_resource_plugin($params, &$smarty)
-{
- /*
- * Resource plugins are not quite like the other ones, so they are
- * handled differently. The first element of plugin info is the array of
- * functions provided by the plugin, the second one indicates whether
- * all of them exist or not.
- */
-
- $_plugin = &$smarty->_plugins['resource'][$params['type']];
- if (isset($_plugin)) {
- if (!$_plugin[1] && count($_plugin[0])) {
- $_plugin[1] = true;
- foreach ($_plugin[0] as $_plugin_func) {
- if (!is_callable($_plugin_func)) {
- $_plugin[1] = false;
- break;
- }
- }
- }
-
- if (!$_plugin[1]) {
- $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__);
- }
-
- return;
- }
-
- $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']);
- $_found = ($_plugin_file != false);
-
- if ($_found) { /*
- * If the plugin file is found, it -must- provide the properly named
- * plugin functions.
- */
- include_once($_plugin_file);
-
- /*
- * Locate functions that we require the plugin to provide.
- */
- $_resource_ops = array('source', 'timestamp', 'secure', 'trusted');
- $_resource_funcs = array();
- foreach ($_resource_ops as $_op) {
- $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op;
- if (!function_exists($_plugin_func)) {
- $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__);
- return;
- } else {
- $_resource_funcs[] = $_plugin_func;
- }
- }
-
- $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true);
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_cached_inserts.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_cached_inserts.php
deleted file mode 100644
index 42c32698..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_cached_inserts.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Replace cached inserts with the actual results
- *
- * @param string $results
- * @return string
- */
-function smarty_core_process_cached_inserts($params, &$smarty)
-{
- preg_match_all('!'.$smarty->_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis',
- $params['results'], $match);
- list($cached_inserts, $insert_args) = $match;
-
- for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) {
- if ($smarty->debugging) {
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $debug_start_time = smarty_core_get_microtime($_params, $smarty);
- }
-
- $args = unserialize($insert_args[$i]);
- $name = $args['name'];
-
- if (isset($args['script'])) {
- $_params = array('resource_name' => $smarty->_dequote($args['script']));
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php');
- if(!smarty_core_get_php_resource($_params, $smarty)) {
- return false;
- }
- $resource_type = $_params['resource_type'];
- $php_resource = $_params['php_resource'];
-
-
- if ($resource_type == 'file') {
- $smarty->_include($php_resource, true);
- } else {
- $smarty->_eval($php_resource);
- }
- }
-
- $function_name = $smarty->_plugins['insert'][$name][0];
- if (empty($args['assign'])) {
- $replace = $function_name($args, $smarty);
- } else {
- $smarty->assign($args['assign'], $function_name($args, $smarty));
- $replace = '';
- }
-
- $params['results'] = str_replace($cached_inserts[$i], $replace, $params['results']);
- if ($smarty->debugging) {
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $smarty->_smarty_debug_info[] = array('type' => 'insert',
- 'filename' => 'insert_'.$name,
- 'depth' => $smarty->_inclusion_depth,
- 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time);
- }
- }
-
- return $params['results'];
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_compiled_include.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_compiled_include.php
deleted file mode 100644
index 52ecc642..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.process_compiled_include.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Replace nocache-tags by results of the corresponding non-cacheable
- * functions and return it
- *
- * @param string $compiled_tpl
- * @param string $cached_source
- * @return string
- */
-
-function smarty_core_process_compiled_include($params, &$smarty)
-{
- $_cache_including = $smarty->_cache_including;
- $smarty->_cache_including = true;
-
- $_return = $params['results'];
- foreach ($smarty->_cache_serials as $_include_file_path=>$_cache_serial) {
- $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s',
- array(&$smarty, '_process_compiled_include_callback'),
- $_return);
- }
- $smarty->_cache_including = $_cache_including;
- return $_return;
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.read_cache_file.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.read_cache_file.php
deleted file mode 100644
index 60ec924e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.read_cache_file.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * read a cache file, determine if it needs to be
- * regenerated or not
- *
- * @param string $tpl_file
- * @param string $cache_id
- * @param string $compile_id
- * @param string $results
- * @return boolean
- */
-
-// $tpl_file, $cache_id, $compile_id, &$results
-
-function smarty_core_read_cache_file(&$params, &$smarty)
-{
- static $content_cache = array();
-
- if ($smarty->force_compile) {
- // force compile enabled, always regenerate
- return false;
- }
-
- if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) {
- list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']];
- return true;
- }
-
- if (!empty($smarty->cache_handler_func)) {
- // use cache_handler function
- call_user_func_array($smarty->cache_handler_func,
- array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
- } else {
- // use local cache file
- $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
- $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
- $params['results'] = $smarty->_read_file($_cache_file);
- }
-
- if (empty($params['results'])) {
- // nothing to parse (error?), regenerate cache
- return false;
- }
-
- $cache_split = explode("\n", $params['results'], 2);
- $cache_header = $cache_split[0];
-
- $_cache_info = unserialize($cache_header);
-
- if ($smarty->caching == 2 && isset ($_cache_info['expires'])){
- // caching by expiration time
- if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) {
- // cache expired, regenerate
- return false;
- }
- } else {
- // caching by lifetime
- if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) {
- // cache expired, regenerate
- return false;
- }
- }
-
- if ($smarty->compile_check) {
- $_params = array('get_source' => false, 'quiet'=>true);
- foreach (array_keys($_cache_info['template']) as $_template_dep) {
- $_params['resource_name'] = $_template_dep;
- if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
- // template file has changed, regenerate cache
- return false;
- }
- }
-
- if (isset($_cache_info['config'])) {
- $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true);
- foreach (array_keys($_cache_info['config']) as $_config_dep) {
- $_params['resource_name'] = $_config_dep;
- if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
- // config file has changed, regenerate cache
- return false;
- }
- }
- }
- }
-
- foreach ($_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) {
- if (empty($smarty->_cache_serials[$_include_file_path])) {
- $smarty->_include($_include_file_path, true);
- }
-
- if ($smarty->_cache_serials[$_include_file_path] != $_cache_serial) {
- /* regenerate */
- return false;
- }
- }
- $params['results'] = $cache_split[1];
- $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info);
-
- $smarty->_cache_info = $_cache_info;
- return true;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rm_auto.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rm_auto.php
deleted file mode 100644
index d3cbfe28..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rm_auto.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * delete an automagically created file by name and id
- *
- * @param string $auto_base
- * @param string $auto_source
- * @param string $auto_id
- * @param integer $exp_time
- * @return boolean
- */
-
-// $auto_base, $auto_source = null, $auto_id = null, $exp_time = null
-
-function smarty_core_rm_auto($params, &$smarty)
-{
- if (!@is_dir($params['auto_base']))
- return false;
-
- if(!isset($params['auto_id']) && !isset($params['auto_source'])) {
- $_params = array(
- 'dirname' => $params['auto_base'],
- 'level' => 0,
- 'exp_time' => $params['exp_time']
- );
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php');
- $_res = smarty_core_rmdir($_params, $smarty);
- } else {
- $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']);
-
- if(isset($params['auto_source'])) {
- if (isset($params['extensions'])) {
- $_res = false;
- foreach ((array)$params['extensions'] as $_extension)
- $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']);
- } else {
- $_res = $smarty->_unlink($_tname, $params['exp_time']);
- }
- } elseif ($smarty->use_sub_dirs) {
- $_params = array(
- 'dirname' => $_tname,
- 'level' => 1,
- 'exp_time' => $params['exp_time']
- );
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php');
- $_res = smarty_core_rmdir($_params, $smarty);
- } else {
- // remove matching file names
- $_handle = opendir($params['auto_base']);
- $_res = true;
- while (false !== ($_filename = readdir($_handle))) {
- if($_filename == '.' || $_filename == '..') {
- continue;
- } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) {
- $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']);
- }
- }
- }
- }
-
- return $_res;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rmdir.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rmdir.php
deleted file mode 100644
index f149469d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.rmdir.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * delete a dir recursively (level=0 -> keep root)
- * WARNING: no tests, it will try to remove what you tell it!
- *
- * @param string $dirname
- * @param integer $level
- * @param integer $exp_time
- * @return boolean
- */
-
-// $dirname, $level = 1, $exp_time = null
-
-function smarty_core_rmdir($params, &$smarty)
-{
- if(!isset($params['level'])) { $params['level'] = 1; }
- if(!isset($params['exp_time'])) { $params['exp_time'] = null; }
-
- if($_handle = @opendir($params['dirname'])) {
-
- while (false !== ($_entry = readdir($_handle))) {
- if ($_entry != '.' && $_entry != '..') {
- if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) {
- $_params = array(
- 'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry,
- 'level' => $params['level'] + 1,
- 'exp_time' => $params['exp_time']
- );
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php');
- smarty_core_rmdir($_params, $smarty);
- }
- else {
- $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']);
- }
- }
- }
- closedir($_handle);
- }
-
- if ($params['level']) {
- return @rmdir($params['dirname']);
- }
- return (bool)$_handle;
-
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.run_insert_handler.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.run_insert_handler.php
deleted file mode 100644
index a40f8b24..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.run_insert_handler.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Handle insert tags
- *
- * @param array $args
- * @return string
- */
-function smarty_core_run_insert_handler($params, &$smarty)
-{
-
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- if ($smarty->debugging) {
- $_params = array();
- $_debug_start_time = smarty_core_get_microtime($_params, $smarty);
- }
-
- if ($smarty->caching) {
- $_arg_string = serialize($params['args']);
- $_name = $params['args']['name'];
- if (!isset($smarty->_cache_info['insert_tags'][$_name])) {
- $smarty->_cache_info['insert_tags'][$_name] = array('insert',
- $_name,
- $smarty->_plugins['insert'][$_name][1],
- $smarty->_plugins['insert'][$_name][2],
- !empty($params['args']['script']) ? true : false);
- }
- return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5;
- } else {
- if (isset($params['args']['script'])) {
- $_params = array('resource_name' => $smarty->_dequote($params['args']['script']));
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php');
- if(!smarty_core_get_php_resource($_params, $smarty)) {
- return false;
- }
-
- if ($_params['resource_type'] == 'file') {
- $smarty->_include($_params['php_resource'], true);
- } else {
- $smarty->_eval($_params['php_resource']);
- }
- unset($params['args']['script']);
- }
-
- $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0];
- $_content = $_funcname($params['args'], $smarty);
- if ($smarty->debugging) {
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $smarty->_smarty_debug_info[] = array('type' => 'insert',
- 'filename' => 'insert_'.$params['args']['name'],
- 'depth' => $smarty->_inclusion_depth,
- 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time);
- }
-
- if (!empty($params['args']["assign"])) {
- $smarty->assign($params['args']["assign"], $_content);
- } else {
- return $_content;
- }
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.smarty_include_php.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.smarty_include_php.php
deleted file mode 100644
index 9efc46ac..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.smarty_include_php.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * called for included php files within templates
- *
- * @param string $smarty_file
- * @param string $smarty_assign variable to assign the included template's
- * output into
- * @param boolean $smarty_once uses include_once if this is true
- * @param array $smarty_include_vars associative array of vars from
- * {include file="blah" var=$var}
- */
-
-// $file, $assign, $once, $_smarty_include_vars
-
-function smarty_core_smarty_include_php($params, &$smarty)
-{
- $_params = array('resource_name' => $params['smarty_file']);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php');
- smarty_core_get_php_resource($_params, $smarty);
- $_smarty_resource_type = $_params['resource_type'];
- $_smarty_php_resource = $_params['php_resource'];
-
- if (!empty($params['smarty_assign'])) {
- ob_start();
- if ($_smarty_resource_type == 'file') {
- $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
- } else {
- $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
- }
- $smarty->assign($params['smarty_assign'], ob_get_contents());
- ob_end_clean();
- } else {
- if ($_smarty_resource_type == 'file') {
- $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
- } else {
- $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
- }
- }
-}
-
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_cache_file.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_cache_file.php
deleted file mode 100644
index 47f1b8ec..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_cache_file.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Prepend the cache information to the cache file
- * and write it
- *
- * @param string $tpl_file
- * @param string $cache_id
- * @param string $compile_id
- * @param string $results
- * @return true|null
- */
-
- // $tpl_file, $cache_id, $compile_id, $results
-
-function smarty_core_write_cache_file($params, &$smarty)
-{
-
- // put timestamp in cache header
- $smarty->_cache_info['timestamp'] = time();
- if ($smarty->cache_lifetime > -1){
- // expiration set
- $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime;
- } else {
- // cache will never expire
- $smarty->_cache_info['expires'] = -1;
- }
-
- // collapse {nocache...}-tags
- $params['results'] = preg_replace('!((\{nocache\:([0-9a-f]{32})#(\d+)\})'
- .'.*'
- .'{/nocache\:\\3#\\4\})!Us'
- ,'\\2'
- ,$params['results']);
- $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials;
-
- // prepend the cache header info into cache file
- $params['results'] = serialize($smarty->_cache_info)."\n".$params['results'];
-
- if (!empty($smarty->cache_handler_func)) {
- // use cache_handler function
- call_user_func_array($smarty->cache_handler_func,
- array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
- } else {
- // use local cache file
-
- if(!@is_writable($smarty->cache_dir)) {
- // cache_dir not writable, see if it exists
- if(!@is_dir($smarty->cache_dir)) {
- $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
- return false;
- }
- $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR);
- return false;
- }
-
- $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
- $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
- $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php');
- smarty_core_write_file($_params, $smarty);
- return true;
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_include.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_include.php
deleted file mode 100644
index 4124f355..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_include.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Extract non-cacheable parts out of compiled template and write it
- *
- * @param string $compile_path
- * @param string $template_compiled
- * @param integer $template_timestamp
- * @return boolean
- */
-
-function smarty_core_write_compiled_include($params, &$smarty)
-{
- $_tag_start = 'if \(\$this->caching\) \{ echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\';\}';
- $_tag_end = 'if \(\$this->caching\) \{ echo \'\{/nocache\:(\\2)#(\\3)\}\';\}';
-
- preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us',
- $params['compiled_content'], $_match_source, PREG_SET_ORDER);
-
- // no nocache-parts found: done
- if (count($_match_source)==0) return;
-
- // convert the matched php-code to functions
- $_include_compiled = "<?php /* funky header here */\n\n";
-
- $_compile_path = $params['include_file_path'];
-
- $smarty->_cache_serials[$_compile_path] = $params['cache_serial'];
- $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>";
-
- $_include_compiled .= $params['plugins_code'];
- $_include_compiled .= "<?php";
- for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) {
- $_match =& $_match_source[$_i];
- $_include_compiled .= "
-function _smarty_tplfunc_$_match[2]_$_match[3](&\$this)
-{
-$_match[4]
-}
-
-";
- }
- $_include_compiled .= "\n\n?>\n";
-
- $_params = array('filename' => $_compile_path,
- 'contents' => $_include_compiled, 'create_dirs' => true);
-
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php');
- smarty_core_write_file($_params, $smarty);
- return true;
-}
-
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_resource.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_resource.php
deleted file mode 100644
index cd5cfb56..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_compiled_resource.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * write the compiled resource
- *
- * @param string $compile_path
- * @param string $compiled_content
- * @param integer $resource_timestamp
- * @return true
- */
-function smarty_core_write_compiled_resource($params, &$smarty)
-{
- if(!@is_writable($smarty->compile_dir)) {
- // compile_dir not writable, see if it exists
- if(!@is_dir($smarty->compile_dir)) {
- $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
- return false;
- }
- $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR);
- return false;
- }
-
- $_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php');
- smarty_core_write_file($_params, $smarty);
- touch($params['compile_path'], $params['resource_timestamp']);
- return true;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_file.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_file.php
deleted file mode 100644
index 534a3828..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/core/core.write_file.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * write out a file to disk
- *
- * @param string $filename
- * @param string $contents
- * @param boolean $create_dirs
- * @return boolean
- */
-function smarty_core_write_file($params, &$smarty)
-{
- $_dirname = dirname($params['filename']);
-
- if ($params['create_dirs']) {
- $_params = array('dir' => $_dirname);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.create_dir_structure.php');
- smarty_core_create_dir_structure($_params, $smarty);
- }
-
- // write to tmp file, then rename it to avoid
- // file locking race condition
- $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('');
-
- if (!($fd = @fopen($_tmp_file, 'w'))) {
- $smarty->trigger_error("problem writing temporary file '$_tmp_file'");
- return false;
- }
-
- fwrite($fd, $params['contents']);
- fclose($fd);
- if(file_exists($params['filename'])) {
- @unlink($params['filename']);
- }
- @rename($_tmp_file, $params['filename']);
- @chmod($params['filename'], $smarty->_file_perms);
-
- return true;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/debug.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/debug.tpl
deleted file mode 100644
index ab717db7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/debug.tpl
+++ /dev/null
@@ -1,64 +0,0 @@
-{* Smarty *}
-
-{* debug.tpl, last updated version 2.0.1 *}
-
-{assign_debug_info}
-
-{if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"}
- <table border=0 width=100%>
- <tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr>
- <tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr>
- {section name=templates loop=$_debug_tpls}
- <tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth}&nbsp;&nbsp;&nbsp;{/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr>
- {sectionelse}
- <tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr>
- {/section}
- <tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr>
- {section name=vars loop=$_debug_keys}
- <tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var}</font></tt></td></tr>
- {sectionelse}
- <tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr>
- {/section}
- <tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr>
- {section name=config_vars loop=$_debug_config_keys}
- <tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var}</font></tt></td></tr>
- {sectionelse}
- <tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr>
- {/section}
- </table>
-</BODY></HTML>
-{else}
-<SCRIPT language=javascript>
- if( self.name == '' ) {ldelim}
- var title = 'Console';
- {rdelim}
- else {ldelim}
- var title = 'Console_' + self.name;
- {rdelim}
- _smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes");
- _smarty_console.document.write("<HTML><TITLE>Smarty Debug Console_"+self.name+"</TITLE><BODY bgcolor=#ffffff>");
- _smarty_console.document.write("<table border=0 width=100%>");
- _smarty_console.document.write("<tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr>");
- _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr>");
- {section name=templates loop=$_debug_tpls}
- _smarty_console.document.write("<tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth}&nbsp;&nbsp;&nbsp;{/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html|escape:javascript}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr>");
- {sectionelse}
- _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr>");
- {/section}
- _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr>");
- {section name=vars loop=$_debug_keys}
- _smarty_console.document.write("<tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>");
- {sectionelse}
- _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr>");
- {/section}
- _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr>");
- {section name=config_vars loop=$_debug_config_keys}
- _smarty_console.document.write("<tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>");
- {sectionelse}
- _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr>");
- {/section}
- _smarty_console.document.write("</table>");
- _smarty_console.document.write("</BODY></HTML>");
- _smarty_console.document.close();
-</SCRIPT>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.strip.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.strip.php
deleted file mode 100644
index a25df360..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.strip.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty {strip}{/strip} block plugin
- *
- * Type: block function<br>
- * Name: strip<br>
- * Purpose: strip unwanted white space from text<br>
- * @link http://smarty.php.net/manual/en/language.function.strip.php {strip}
- * (Smarty online manual)
- * @param array unused, no parameters for this block
- * @param string content of {strip}{/strip} tags
- * @param Smarty clever method emulation
- * @return string $content stripped of whitespace
- */
-function smarty_block_strip($params, $content, &$this)
-{
- /* Reformat data between 'strip' and '/strip' tags, removing spaces, tabs and newlines. */
- $_strip_search = array(
- "![\t ]+$|^[\t ]+!m", // remove leading/trailing space chars
- '%[\r\n]+%m'); // remove CRs and newlines
- $_strip_replace = array(
- '',
- '');
- return preg_replace($_strip_search, $_strip_replace, $content);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.textformat.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.textformat.php
deleted file mode 100644
index f3462c21..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/block.textformat.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty {textformat}{/textformat} block plugin
- *
- * Type: block function<br>
- * Name: textformat<br>
- * Purpose: format text a certain way with preset styles
- * or custom wrap/indent settings<br>
- * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat}
- * (Smarty online manual)
- * @param array
- * <pre>
- * Params: style: string (email)
- * indent: integer (0)
- * wrap: integer (80)
- * wrap_char string ("\n")
- * indent_char: string (" ")
- * wrap_boundary: boolean (true)
- * </pre>
- * @param string contents of the block
- * @param Smarty clever simulation of a method
- * @return string string $content re-formatted
- */
-function smarty_block_textformat($params, $content, &$smarty)
-{
- $style = null;
- $indent = 0;
- $indent_first = 0;
- $indent_char = ' ';
- $wrap = 80;
- $wrap_char = "\n";
- $wrap_cut = false;
- $assign = null;
-
- if($content == null) {
- return true;
- }
-
- extract($params);
-
- if($style == 'email') {
- $wrap = 72;
- }
-
- // split into paragraphs
- $paragraphs = preg_split('![\r\n][\r\n]!',$content);
- $output = '';
-
- foreach($paragraphs as $paragraph) {
- if($paragraph == '') {
- continue;
- }
- // convert mult. spaces & special chars to single space
- $paragraph = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'),array(' ',''),$paragraph);
- // indent first line
- if($indent_first > 0) {
- $paragraph = str_repeat($indent_char,$indent_first) . $paragraph;
- }
- // wordwrap sentences
- $paragraph = wordwrap($paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
- // indent lines
- if($indent > 0) {
- $paragraph = preg_replace('!^!m',str_repeat($indent_char,$indent),$paragraph);
- }
- $output .= $paragraph . $wrap_char . $wrap_char;
- }
-
- if($assign != null) {
- $smarty->assign($assign,$output);
- } else {
- return $output;
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign.php
deleted file mode 100644
index c04be8bc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty {assign} function plugin
- *
- * Type: function<br>
- * Name: assign<br>
- * Purpose: assign a value to a template variable
- * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign}
- * (Smarty online manual)
- * @param array Format: array('var' => variable name, 'value' => value to assign)
- * @param Smarty
- */
-function smarty_function_assign($params, &$smarty)
-{
- extract($params);
-
- if (empty($var)) {
- $smarty->trigger_error("assign: missing 'var' parameter");
- return;
- }
-
- if (!in_array('value', array_keys($params))) {
- $smarty->trigger_error("assign: missing 'value' parameter");
- return;
- }
-
- $smarty->assign($var, $value);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign_debug_info.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign_debug_info.php
deleted file mode 100644
index 59ddaa16..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.assign_debug_info.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty {assign_debug_info} function plugin
- *
- * Type: function<br>
- * Name: assign_debug_info<br>
- * Purpose: assign debug info to the template<br>
- * @param array unused in this plugin, this plugin uses {@link Smarty::$_config},
- * {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info}
- * @param Smarty
- */
-function smarty_function_assign_debug_info($params, &$smarty)
-{
- $assigned_vars = $smarty->_tpl_vars;
- ksort($assigned_vars);
- if (@is_array($smarty->_config[0])) {
- $config_vars = $smarty->_config[0];
- ksort($config_vars);
- $smarty->assign("_debug_config_keys", array_keys($config_vars));
- $smarty->assign("_debug_config_vals", array_values($config_vars));
- }
-
- $included_templates = $smarty->_smarty_debug_info;
-
- $smarty->assign("_debug_keys", array_keys($assigned_vars));
- $smarty->assign("_debug_vals", array_values($assigned_vars));
-
- $smarty->assign("_debug_tpls", $included_templates);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.config_load.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.config_load.php
deleted file mode 100644
index d9d65b95..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.config_load.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty {config_load} function plugin
- *
- * Type: function<br>
- * Name: config_load<br>
- * Purpose: load config file vars
- * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load}
- * (Smarty online manual)
- * @param array Format:
- * <pre>
- * array('file' => required config file name,
- * 'section' => optional config file section to load
- * 'scope' => local/parent/global
- * 'global' => overrides scope, setting to parent if true)
- * </pre>
- * @param Smarty
- */
-function smarty_function_config_load($params, &$smarty)
-{
- if ($smarty->debugging) {
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $_debug_start_time = smarty_core_get_microtime($_params, $smarty);
- }
-
- $_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null;
- $_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null;
- $_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global';
- $_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false;
-
- if (!isset($_file) || strlen($_file) == 0) {
- $smarty->_syntax_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__);
- }
-
- if (isset($_scope)) {
- if ($_scope != 'local' &&
- $_scope != 'parent' &&
- $_scope != 'global') {
- $smarty->_syntax_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__);
- }
- } else {
- if ($_global) {
- $_scope = 'parent';
- } else {
- $_scope = 'local';
- }
- }
-
- if(@is_dir($smarty->config_dir)) {
- $_config_dir = $smarty->config_dir;
- } else {
- // config_dir not found, try include_path
- $_params = array('file_path' => $smarty->config_dir);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
- smarty_core_get_include_path($_params, $smarty);
- $_config_dir = $_params['new_file_path'];
- }
-
- $_file_path = $_config_dir . DIRECTORY_SEPARATOR . $_file;
- if (isset($_section))
- $_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section);
- else
- $_compile_file = $smarty->_get_compile_path($_file_path);
-
- if($smarty->force_compile
- || !file_exists($_compile_file)
- || ($smarty->compile_check
- && !$smarty->_is_compiled($_file_path, $_compile_file))) {
- // compile config file
- if(!is_object($smarty->_conf_obj)) {
- require_once SMARTY_DIR . $smarty->config_class . '.class.php';
- $smarty->_conf_obj = new $smarty->config_class($_config_dir);
- $smarty->_conf_obj->overwrite = $smarty->config_overwrite;
- $smarty->_conf_obj->booleanize = $smarty->config_booleanize;
- $smarty->_conf_obj->read_hidden = $smarty->config_read_hidden;
- $smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines;
- $smarty->_conf_obj->set_path = $_config_dir;
- }
- $_config_vars = array_merge($smarty->_conf_obj->get($_file),
- $smarty->_conf_obj->get($_file, $_section));
- if(function_exists('var_export')) {
- $_output = '<?php $_config_vars = ' . var_export($_config_vars, true) . '; ?>';
- } else {
- $_output = '<?php $_config_vars = unserialize(\'' . strtr(serialize($_config_vars),array('\''=>'\\\'', '\\'=>'\\\\')) . '\'); ?>';
- }
- $_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => filemtime($_file_path)));
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_compiled_resource.php');
- smarty_core_write_compiled_resource($_params, $smarty);
- } else {
- include($_compile_file);
- }
-
- if ($smarty->caching) {
- $smarty->_cache_info['config'][$_file] = true;
- }
-
- $smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars);
- $smarty->_config[0]['files'][$_file] = true;
-
- if ($_scope == 'parent') {
- $smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars);
- $smarty->_config[1]['files'][$_file] = true;
- } else if ($_scope == 'global') {
- for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) {
- $smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars);
- $smarty->_config[$i]['files'][$_file] = true;
- }
- }
-
- if ($smarty->debugging) {
- $_params = array();
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
- $smarty->_smarty_debug_info[] = array('type' => 'config',
- 'filename' => $_file.' ['.$_section.'] '.$_scope,
- 'depth' => $smarty->_inclusion_depth,
- 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time);
- }
-
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.counter.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.counter.php
deleted file mode 100644
index 8d17d2bb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.counter.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {counter} function plugin
- *
- * Type: function<br>
- * Name: counter<br>
- * Purpose: print out a counter value
- * @link http://smarty.php.net/manual/en/language.function.counter.php {counter}
- * (Smarty online manual)
- * @param array parameters
- * @param Smarty
- * @return string|null
- */
-function smarty_function_counter($params, &$smarty)
-{
- static $counters = array();
-
- extract($params);
-
- if (!isset($name)) {
- if(isset($id)) {
- $name = $id;
- } else {
- $name = "default";
- }
- }
-
- if (!isset($counters[$name])) {
- $counters[$name] = array(
- 'start'=>1,
- 'skip'=>1,
- 'direction'=>'up',
- 'count'=>1
- );
- }
- $counter =& $counters[$name];
-
- if (isset($start)) {
- $counter['start'] = $counter['count'] = $start;
- }
-
- if (!empty($assign)) {
- $counter['assign'] = $assign;
- }
-
- if (isset($counter['assign'])) {
- $smarty->assign($counter['assign'], $counter['count']);
- }
-
- if (isset($print)) {
- $print = (bool)$print;
- } else {
- $print = empty($counter['assign']);
- }
-
- if ($print) {
- $retval = $counter['count'];
- } else {
- $retval = null;
- }
-
- if (isset($skip)) {
- $counter['skip'] = $skip;
- }
-
- if (isset($direction)) {
- $counter['direction'] = $direction;
- }
-
- if ($counter['direction'] == "down")
- $counter['count'] -= $counter['skip'];
- else
- $counter['count'] += $counter['skip'];
-
- return $retval;
-
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.cycle.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.cycle.php
deleted file mode 100644
index c2e899d0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.cycle.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty {cycle} function plugin
- *
- * Type: function<br>
- * Name: cycle<br>
- * Date: May 3, 2002<br>
- * Purpose: cycle through given values<br>
- * Input:
- * - name = name of cycle (optional)
- * - values = comma separated list of values to cycle,
- * or an array of values to cycle
- * (this can be left out for subsequent calls)
- * - reset = boolean - resets given var to true
- * - print = boolean - print var or not. default is true
- * - advance = boolean - whether or not to advance the cycle
- * - delimiter = the value delimiter, default is ","
- * - assign = boolean, assigns to template var instead of
- * printed.
- *
- * Examples:<br>
- * <pre>
- * {cycle values="#eeeeee,#d0d0d0d"}
- * {cycle name=row values="one,two,three" reset=true}
- * {cycle name=row}
- * </pre>
- * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle}
- * (Smarty online manual)
- * @author Monte Ohrt <monte@ispi.net>
- * @author credit to Mark Priatel <mpriatel@rogers.com>
- * @author credit to Gerard <gerard@interfold.com>
- * @author credit to Jason Sweat <jsweat_php@yahoo.com>
- * @version 1.3
- * @param array
- * @param Smarty
- * @return string|null
- */
-function smarty_function_cycle($params, &$smarty)
-{
- static $cycle_vars;
-
- extract($params);
-
- if (empty($name)) {
- $name = 'default';
- }
-
- if (!isset($print)) {
- $print = true;
- }
-
- if (!isset($advance)) {
- $advance = true;
- }
-
- if (!isset($reset)) {
- $reset = false;
- }
-
- if (!in_array('values', array_keys($params))) {
- if(!isset($cycle_vars[$name]['values'])) {
- $smarty->trigger_error("cycle: missing 'values' parameter");
- return;
- }
- } else {
- if(isset($cycle_vars[$name]['values'])
- && $cycle_vars[$name]['values'] != $values ) {
- $cycle_vars[$name]['index'] = 0;
- }
- $cycle_vars[$name]['values'] = $values;
- }
-
- if (isset($delimiter)) {
- $cycle_vars[$name]['delimiter'] = $delimiter;
- } elseif (!isset($cycle_vars[$name]['delimiter'])) {
- $cycle_vars[$name]['delimiter'] = ',';
- }
-
- if(!is_array($cycle_vars[$name]['values'])) {
- $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
- } else {
- $cycle_array = $cycle_vars[$name]['values'];
- }
-
- if(!isset($cycle_vars[$name]['index']) || $reset ) {
- $cycle_vars[$name]['index'] = 0;
- }
-
- if (isset($assign)) {
- $print = false;
- $smarty->assign($assign, $cycle_array[$cycle_vars[$name]['index']]);
- }
-
- if($print) {
- $retval = $cycle_array[$cycle_vars[$name]['index']];
- } else {
- $retval = null;
- }
-
- if($advance) {
- if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
- $cycle_vars[$name]['index'] = 0;
- } else {
- $cycle_vars[$name]['index']++;
- }
- }
-
- return $retval;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.debug.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.debug.php
deleted file mode 100644
index 5fe02f30..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.debug.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {debug} function plugin
- *
- * Type: function<br>
- * Name: debug<br>
- * Date: July 1, 2002<br>
- * Purpose: popup debug window
- * @link http://smarty.php.net/manual/en/language.function.debug.php {debug}
- * (Smarty online manual)
- * @author Monte Ohrt <monte@ispi.net>
- * @version 1.0
- * @param array
- * @param Smarty
- * @return string output from {@link Smarty::_generate_debug_output()}
- */
-function smarty_function_debug($params, &$smarty)
-{
- if($params['output']) {
- $smarty->assign('_smarty_debug_output',$params['output']);
- }
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.display_debug_console.php');
- return smarty_core_display_debug_console(null, $smarty);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.eval.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.eval.php
deleted file mode 100644
index e6943876..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.eval.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {eval} function plugin
- *
- * Type: function<br>
- * Name: eval<br>
- * Purpose: evaluate a template variable as a template<br>
- * @link http://smarty.php.net/manual/en/language.function.eval.php {eval}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- */
-function smarty_function_eval($params, &$smarty)
-{
-
- if (!isset($params['var'])) {
- $smarty->trigger_error("eval: missing 'var' parameter");
- return;
- }
-
- if($params['var'] == '') {
- return;
- }
-
- $smarty->_compile_source('evaluated template', $params['var'], $_var_compiled);
-
- ob_start();
- $smarty->_eval('?>' . $_var_compiled);
- $_contents = ob_get_contents();
- ob_end_clean();
-
- if (!empty($params['assign'])) {
- $smarty->assign($params['assign'], $_contents);
- } else {
- return $_contents;
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.fetch.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.fetch.php
deleted file mode 100644
index 082c3483..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.fetch.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {fetch} plugin
- *
- * Type: function<br>
- * Name: fetch<br>
- * Purpose: fetch file, web or ftp data and display results
- * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- * @return string|null if the assign parameter is passed, Smarty assigns the
- * result to a template variable
- */
-function smarty_function_fetch($params, &$smarty)
-{
- if (empty($params['file'])) {
- $smarty->_trigger_fatal_error("[plugin] parameter 'file' cannot be empty");
- return;
- }
-
- if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) {
- $_params = array('resource_type' => 'file', 'resource_name' => $params['file']);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php');
- if(!smarty_core_is_secure($_params, $smarty)) {
- $smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed');
- return;
- }
-
- // fetch the file
- if($fp = @fopen($params['file'],'r')) {
- while(!feof($fp)) {
- $content .= fgets ($fp,4096);
- }
- fclose($fp);
- } else {
- $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] . '\'');
- return;
- }
- } else {
- // not a local file
- if(preg_match('!^http://!i',$params['file'])) {
- // http fetch
- if($uri_parts = parse_url($params['file'])) {
- // set defaults
- $host = $server_name = $uri_parts['host'];
- $timeout = 30;
- $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
- $agent = "Smarty Template Engine ".$smarty->_version;
- $referer = "";
- $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
- $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
- $_is_proxy = false;
- if(empty($uri_parts['port'])) {
- $port = 80;
- } else {
- $port = $uri_parts['port'];
- }
- if(empty($uri_parts['user'])) {
- $user = '';
- }
- // loop through parameters, setup headers
- foreach($params as $param_key => $param_value) {
- switch($param_key) {
- case "file":
- case "assign":
- case "assign_headers":
- break;
- case "user":
- if(!empty($param_value)) {
- $user = $param_value;
- }
- break;
- case "pass":
- if(!empty($param_value)) {
- $pass = $param_value;
- }
- break;
- case "accept":
- if(!empty($param_value)) {
- $accept = $param_value;
- }
- break;
- case "header":
- if(!empty($param_value)) {
- if(!preg_match('![\w\d-]+: .+!',$param_value)) {
- $smarty->_trigger_fatal_error("[plugin] invalid header format '".$param_value."'");
- return;
- } else {
- $extra_headers[] = $param_value;
- }
- }
- break;
- case "proxy_host":
- if(!empty($param_value)) {
- $proxy_host = $param_value;
- }
- break;
- case "proxy_port":
- if(!preg_match('!\D!', $param_value)) {
- $proxy_port = (int) $param_value;
- } else {
- $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'");
- return;
- }
- break;
- case "agent":
- if(!empty($param_value)) {
- $agent = $param_value;
- }
- break;
- case "referer":
- if(!empty($param_value)) {
- $referer = $param_value;
- }
- break;
- case "timeout":
- if(!preg_match('!\D!', $param_value)) {
- $timeout = (int) $param_value;
- } else {
- $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'");
- return;
- }
- break;
- default:
- $smarty->_trigger_fatal_error("[plugin] unrecognized attribute '".$param_key."'");
- return;
- }
- }
- if(!empty($proxy_host) && !empty($proxy_port)) {
- $_is_proxy = true;
- $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout);
- } else {
- $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout);
- }
-
- if(!$fp) {
- $smarty->_trigger_fatal_error("[plugin] unable to fetch: $errstr ($errno)");
- return;
- } else {
- if($_is_proxy) {
- fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
- } else {
- fputs($fp, "GET $uri HTTP/1.0\r\n");
- }
- if(!empty($host)) {
- fputs($fp, "Host: $host\r\n");
- }
- if(!empty($accept)) {
- fputs($fp, "Accept: $accept\r\n");
- }
- if(!empty($agent)) {
- fputs($fp, "User-Agent: $agent\r\n");
- }
- if(!empty($referer)) {
- fputs($fp, "Referer: $referer\r\n");
- }
- if(isset($extra_headers) && is_array($extra_headers)) {
- foreach($extra_headers as $curr_header) {
- fputs($fp, $curr_header."\r\n");
- }
- }
- if(!empty($user) && !empty($pass)) {
- fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
- }
-
- $content = '';
- fputs($fp, "\r\n");
- while(!feof($fp)) {
- $content .= fgets($fp,4096);
- }
- fclose($fp);
- $csplit = split("\r\n\r\n",$content,2);
-
- $content = $csplit[1];
-
- if(!empty($params['assign_headers'])) {
- $smarty->assign($params['assign_headers'],split("\r\n",$csplit[0]));
- }
- }
- } else {
- $smarty->_trigger_fatal_error("[plugin] unable to parse URL, check syntax");
- return;
- }
- } else {
- // ftp fetch
- if($fp = @fopen($params['file'],'r')) {
- while(!feof($fp)) {
- $content .= fgets ($fp,4096);
- }
- fclose($fp);
- } else {
- $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] .'\'');
- return;
- }
- }
-
- }
-
-
- if (!empty($params['assign'])) {
- $smarty->assign($params['assign'],$content);
- } else {
- return $content;
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_checkboxes.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_checkboxes.php
deleted file mode 100644
index 6b32c594..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_checkboxes.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {html_checkboxes} function plugin
- *
- * File: function.html_checkboxes.php<br>
- * Type: function<br>
- * Name: html_checkboxes<br>
- * Date: 24.Feb.2003<br>
- * Purpose: Prints out a list of checkbox input types<br>
- * Input:<br>
- * - name (optional) - string default "checkbox"
- * - values (required) - array
- * - options (optional) - associative array
- * - checked (optional) - array default not set
- * - separator (optional) - ie <br> or &nbsp;
- * - output (optional) - without this one the buttons don't have names
- * Examples:
- * <pre>
- * {html_checkboxes values=$ids output=$names}
- * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
- * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
- * </pre>
- * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
- * (Smarty online manual)
- * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte@ispi.net>
- * @version 1.0
- * @param array
- * @param Smarty
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_checkboxes($params, &$smarty)
-{
- require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
-
- $name = 'checkbox';
- $values = null;
- $options = null;
- $selected = null;
- $separator = '';
- $labels = true;
- $output = null;
-
- $extra = '';
-
- foreach($params as $_key => $_val) {
- switch($_key) {
- case 'name':
- case 'separator':
- $$_key = $_val;
- break;
-
- case 'labels':
- $$_key = (bool)$_val;
- break;
-
- case 'options':
- $$_key = (array)$_val;
- break;
-
- case 'values':
- case 'output':
- $$_key = array_values((array)$_val);
- break;
-
- case 'checked':
- case 'selected':
- $selected = array_values((array)$_val);
- break;
-
- case 'checkboxes':
- $smarty->trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
- $options = (array)$_val;
- break;
-
- default:
- if(!is_array($_val)) {
- $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
- } else {
- $smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (!isset($options) && !isset($values))
- return ''; /* raise error here? */
-
- settype($selected, 'array');
- $_html_result = '';
-
- if (is_array($options)) {
-
- foreach ($options as $_key=>$_val)
- $_html_result .= smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
-
-
- } else {
- foreach ($values as $_i=>$_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result .= smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
- }
-
- }
-
- return $_html_result;
-
-}
-
-function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) {
- $_output = '';
- if ($labels) $_output .= '<label>';
- $_output .= '<input type="checkbox" name="'
- . smarty_function_escape_special_chars($name) . '[]" value="'
- . smarty_function_escape_special_chars($value) . '"';
-
- if (in_array($value, $selected)) {
- $_output .= ' checked="checked"';
- }
- $_output .= $extra . ' />' . $output;
- if ($labels) $_output .= '</label>';
- $_output .= $separator . "\n";
-
- return $_output;
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_image.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_image.php
deleted file mode 100644
index 5ddbe4a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_image.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {html_image} function plugin
- *
- * Type: function<br>
- * Name: html_image<br>
- * Date: Feb 24, 2003<br>
- * Purpose: format HTML tags for the image<br>
- * Input:<br>
- * - file = file (and path) of image (required)
- * - border = border width (optional, default 0)
- * - height = image height (optional, default actual height)
- * - image =image width (optional, default actual width)
- * - basedir = base directory for absolute paths, default
- * is environment variable DOCUMENT_ROOT
- *
- * Examples: {html_image file="images/masthead.gif"}
- * Output: <img src="images/masthead.gif" border=0 width=400 height=23>
- * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image}
- * (Smarty online manual)
- * @author Monte Ohrt <monte@ispi.net>
- * @author credits to Duda <duda@big.hu> - wrote first image function
- * in repository, helped with lots of functionality
- * @version 1.0
- * @param array
- * @param Smarty
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_image($params, &$smarty)
-{
- require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
-
- $alt = '';
- $file = '';
- $border = 0;
- $height = '';
- $width = '';
- $extra = '';
- $prefix = '';
- $suffix = '';
- $basedir = isset($GLOBALS['HTTP_SERVER_VARS']['DOCUMENT_ROOT'])
- ? $GLOBALS['HTTP_SERVER_VARS']['DOCUMENT_ROOT'] : '';
- if(strstr($GLOBALS['HTTP_SERVER_VARS']['HTTP_USER_AGENT'], 'Mac')) {
- $dpi_default = 72;
- } else {
- $dpi_default = 96;
- }
-
- foreach($params as $_key => $_val) {
- switch($_key) {
- case 'file':
- case 'border':
- case 'height':
- case 'width':
- case 'dpi':
- case 'basedir':
- $$_key = $_val;
- break;
-
- case 'alt':
- if(!is_array($_val)) {
- $$_key = smarty_function_escape_special_chars($_val);
- } else {
- $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
-
- case 'link':
- case 'href':
- $prefix = '<a href="' . $_val . '">';
- $suffix = '</a>';
- break;
-
- default:
- if(!is_array($_val)) {
- $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
- } else {
- $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (empty($file)) {
- $smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
- return;
- }
-
- if (substr($file,0,1) == '/') {
- $_image_path = $basedir . $file;
- } else {
- $_image_path = $file;
- }
-
- if(!isset($params['width']) || !isset($params['height'])) {
- if(!$_image_data = @getimagesize($_image_path)) {
- if(!file_exists($_image_path)) {
- $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
- return;
- } else if(!is_readable($_image_path)) {
- $smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
- return;
- } else {
- $smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
- return;
- }
- }
- $_params = array('resource_type' => 'file', 'resource_name' => $_image_path);
- require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php');
- if(!$smarty->security && !smarty_core_is_secure($_params, $smarty)) {
- $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE);
- return;
- }
-
- if(!isset($params['width'])) {
- $width = $_image_data[0];
- }
- if(!isset($params['height'])) {
- $height = $_image_data[1];
- }
-
- }
-
- if(isset($params['dpi'])) {
- $_resize = $dpi_default/$params['dpi'];
- $width = round($width * $_resize);
- $height = round($height * $_resize);
- }
-
- return $prefix . '<img src="'.$file.'" alt="'.$alt.'" border="'.$border.'" width="'.$width.'" height="'.$height.'"'.$extra.' />' . $suffix;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_options.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_options.php
deleted file mode 100644
index dfc38c83..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_options.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {html_options} function plugin
- *
- * Type: function<br>
- * Name: html_options<br>
- * Input:<br>
- * - name (optional) - string default "select"
- * - values (required if no options supplied) - array
- * - options (required if no values supplied) - associative array
- * - selected (optional) - string default not set
- * - output (required if not options supplied) - array
- * Purpose: Prints the list of <option> tags generated from
- * the passed parameters
- * @link http://smarty.php.net/manual/en/language.function.html.options.php {html_image}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_options($params, &$smarty)
-{
- require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
-
- $name = null;
- $values = null;
- $options = null;
- $selected = array();
- $output = null;
-
- $extra = '';
-
- foreach($params as $_key => $_val) {
- switch($_key) {
- case 'name':
- $$_key = (string)$_val;
- break;
-
- case 'options':
- $$_key = (array)$_val;
- break;
-
- case 'selected':
- case 'values':
- case 'output':
- $$_key = array_values((array)$_val);
- break;
-
- default:
- if(!is_array($_val)) {
- $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
- } else {
- $smarty->trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (!isset($options) && !isset($values))
- return ''; /* raise error here? */
-
- $_html_result = '';
-
- if (is_array($options)) {
-
- foreach ($options as $_key=>$_val)
- $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
-
- } else {
-
- foreach ((array)$values as $_i=>$_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
- }
-
- }
-
- if(!empty($name)) {
- $_html_result = '<select name="' . $name . '"' . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
- }
-
- return $_html_result;
-
-}
-
-function smarty_function_html_options_optoutput($key, $value, $selected) {
- if(!is_array($value)) {
- $_html_result = '<option label="' . smarty_function_escape_special_chars($value) . '" value="' .
- smarty_function_escape_special_chars($key) . '"';
- if (in_array($key, $selected))
- $_html_result .= ' selected="selected"';
- $_html_result .= '>' . smarty_function_escape_special_chars($value) . '</option>' . "\n";
- } else {
- $_html_result = smarty_function_html_options_optgroup($key, $value, $selected);
- }
- return $_html_result;
-}
-
-function smarty_function_html_options_optgroup($key, $values, $selected) {
- $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
- foreach ($values as $key => $value) {
- $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected);
- }
- $optgroup_html .= "</optgroup>\n";
- return $optgroup_html;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_radios.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_radios.php
deleted file mode 100644
index f5052391..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_radios.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {html_radios} function plugin
- *
- * File: function.html_radios.php<br>
- * Type: function<br>
- * Name: html_radios<br>
- * Date: 24.Feb.2003<br>
- * Purpose: Prints out a list of radio input types<br>
- * Input:<br>
- * - name (optional) - string default "radio"
- * - values (required) - array
- * - options (optional) - associative array
- * - checked (optional) - array default not set
- * - separator (optional) - ie <br> or &nbsp;
- * - output (optional) - without this one the buttons don't have names
- * Examples:
- * <pre>
- * {html_radios values=$ids output=$names}
- * {html_radios values=$ids name='box' separator='<br>' output=$names}
- * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
- * </pre>
- * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
- * (Smarty online manual)
- * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte@ispi.net>
- * @version 1.0
- * @param array
- * @param Smarty
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_radios($params, &$smarty)
-{
- require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
-
- $name = 'radio';
- $values = null;
- $options = null;
- $selected = null;
- $separator = '';
- $labels = true;
- $output = null;
- $extra = '';
-
- foreach($params as $_key => $_val) {
- switch($_key) {
- case 'name':
- case 'separator':
- $$_key = (string)$_val;
- break;
-
- case 'checked':
- case 'selected':
- if(is_array($_val)) {
- $smarty->trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
- } else {
- $selected = (string)$_val;
- }
- break;
-
- case 'labels':
- $$_key = (bool)$_val;
- break;
-
- case 'options':
- $$_key = (array)$_val;
- break;
-
- case 'values':
- case 'output':
- $$_key = array_values((array)$_val);
- break;
-
- case 'radios':
- $smarty->trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
- $options = (array)$_val;
- break;
-
-
- default:
- if(!is_array($_val)) {
- $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
- } else {
- $smarty->trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (!isset($options) && !isset($values))
- return ''; /* raise error here? */
-
- $_html_result = '';
-
- if (isset($options) && is_array($options)) {
-
- foreach ((array)$options as $_key=>$_val)
- $_html_result .= smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
-
- } else {
-
- foreach ((array)$values as $_i=>$_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result .= smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
- }
-
- }
-
- return $_html_result;
-
-}
-
-function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels) {
- $_output = '';
- if ($labels) $_output .= '<label>';
- $_output .= '<input type="radio" name="'
- . smarty_function_escape_special_chars($name) . '" value="'
- . smarty_function_escape_special_chars($value) . '"';
-
- if ($value==$selected) {
- $_output .= ' checked="checked"';
- }
- $_output .= $extra . ' />' . $output;
- if ($labels) $_output .= '</label>';
- $_output .= $separator . "\n";
-
- return $_output;
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_date.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_date.php
deleted file mode 100644
index a607f555..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_date.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty {html_select_date} plugin
- *
- * Type: function<br>
- * Name: html_select_date<br>
- * Purpose: Prints the dropdowns for date selection.
- *
- * ChangeLog:<br>
- * - 1.0 initial release
- * - 1.1 added support for +/- N syntax for begin
- * and end year values. (Monte)
- * - 1.2 added support for yyyy-mm-dd syntax for
- * time value. (Jan Rosier)
- * - 1.3 added support for choosing format for
- * month values (Gary Loescher)
- * - 1.3.1 added support for choosing format for
- * day values (Marcus Bointon)
- * @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date}
- * (Smarty online manual)
- * @version 1.3
- * @author Andrei Zmievski
- * @param array
- * @param Smarty
- * @return string
- */
-function smarty_function_html_select_date($params, &$smarty)
-{
- require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
- require_once $smarty->_get_plugin_filepath('function','html_options');
- /* Default values. */
- $prefix = "Date_";
- $start_year = strftime("%Y");
- $end_year = $start_year;
- $display_days = true;
- $display_months = true;
- $display_years = true;
- $month_format = "%B";
- /* Write months as numbers by default GL */
- $month_value_format = "%m";
- $day_format = "%02d";
- /* Write day values using this format MB */
- $day_value_format = "%d";
- $year_as_text = false;
- /* Display years in reverse order? Ie. 2000,1999,.... */
- $reverse_years = false;
- /* Should the select boxes be part of an array when returned from PHP?
- e.g. setting it to "birthday", would create "birthday[Day]",
- "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
- $field_array = null;
- /* <select size>'s of the different <select> tags.
- If not set, uses default dropdown. */
- $day_size = null;
- $month_size = null;
- $year_size = null;
- /* Unparsed attributes common to *ALL* the <select>/<input> tags.
- An example might be in the template: all_extra ='class ="foo"'. */
- $all_extra = null;
- /* Separate attributes for the tags. */
- $day_extra = null;
- $month_extra = null;
- $year_extra = null;
- /* Order in which to display the fields.
- "D" -> day, "M" -> month, "Y" -> year. */
- $field_order = 'MDY';
- /* String printed between the different fields. */
- $field_separator = "\n";
- $time = time();
-
-
- extract($params);
-
- // If $time is not in format yyyy-mm-dd
- if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $time)) {
- // then $time is empty or unix timestamp or mysql timestamp
- // using smarty_make_timestamp to get an unix timestamp and
- // strftime to make yyyy-mm-dd
- $time = strftime('%Y-%m-%d', smarty_make_timestamp($time));
- }
- // Now split this in pieces, which later can be used to set the select
- $time = explode("-", $time);
-
- // make syntax "+N" or "-N" work with start_year and end_year
- if (preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match)) {
- if ($match[1] == '+') {
- $end_year = strftime('%Y') + $match[2];
- } else {
- $end_year = strftime('%Y') - $match[2];
- }
- }
- if (preg_match('!^(\+|\-)\s*(\d+)$!', $start_year, $match)) {
- if ($match[1] == '+') {
- $start_year = strftime('%Y') + $match[2];
- } else {
- $start_year = strftime('%Y') - $match[2];
- }
- }
-
- $field_order = strtoupper($field_order);
-
- $html_result = $month_result = $day_result = $year_result = "";
-
- if ($display_months) {
- $month_names = array();
- $month_values = array();
-
- for ($i = 1; $i <= 12; $i++) {
- $month_names[] = strftime($month_format, mktime(0, 0, 0, $i, 1, 2000));
- $month_values[] = strftime($month_value_format, mktime(0, 0, 0, $i, 1, 2000));
- }
-
- $month_result .= '<select name=';
- if (null !== $field_array){
- $month_result .= '"' . $field_array . '[' . $prefix . 'Month]"';
- } else {
- $month_result .= '"' . $prefix . 'Month"';
- }
- if (null !== $month_size){
- $month_result .= ' size="' . $month_size . '"';
- }
- if (null !== $month_extra){
- $month_result .= ' ' . $month_extra;
- }
- if (null !== $all_extra){
- $month_result .= ' ' . $all_extra;
- }
- $month_result .= '>'."\n";
-
- $month_result .= smarty_function_html_options(array('output' => $month_names,
- 'values' => $month_values,
- 'selected' => $month_values[$time[1]-1],
- 'print_result' => false),
- $smarty);
-
- $month_result .= '</select>';
- }
-
- if ($display_days) {
- $days = array();
- for ($i = 1; $i <= 31; $i++) {
- $days[] = sprintf($day_format, $i);
- $day_values[] = sprintf($day_value_format, $i);
- }
-
- $day_result .= '<select name=';
- if (null !== $field_array){
- $day_result .= '"' . $field_array . '[' . $prefix . 'Day]"';
- } else {
- $day_result .= '"' . $prefix . 'Day"';
- }
- if (null !== $day_size){
- $day_result .= ' size="' . $day_size . '"';
- }
- if (null !== $all_extra){
- $day_result .= ' ' . $all_extra;
- }
- if (null !== $day_extra){
- $day_result .= ' ' . $day_extra;
- }
- $day_result .= '>'."\n";
- $day_result .= smarty_function_html_options(array('output' => $days,
- 'values' => $day_values,
- 'selected' => $time[2],
- 'print_result' => false),
- $smarty);
- $day_result .= '</select>';
- }
-
- if ($display_years) {
- if (null !== $field_array){
- $year_name = $field_array . '[' . $prefix . 'Year]';
- } else {
- $year_name = $prefix . 'Year';
- }
- if ($year_as_text) {
- $year_result .= '<input type="text" name="' . $year_name . '" value="' . $time[0] . '" size="4" maxlength="4"';
- if (null !== $all_extra){
- $year_result .= ' ' . $all_extra;
- }
- if (null !== $year_extra){
- $year_result .= ' ' . $year_extra;
- }
- $year_result .= '>';
- } else {
- $years = range((int)$start_year, (int)$end_year);
- if ($reverse_years) {
- rsort($years, SORT_NUMERIC);
- }
-
- $year_result .= '<select name="' . $year_name . '"';
- if (null !== $year_size){
- $year_result .= ' size="' . $year_size . '"';
- }
- if (null !== $all_extra){
- $year_result .= ' ' . $all_extra;
- }
- if (null !== $year_extra){
- $year_result .= ' ' . $year_extra;
- }
- $year_result .= '>'."\n";
- $year_result .= smarty_function_html_options(array('output' => $years,
- 'values' => $years,
- 'selected' => $time[0],
- 'print_result' => false),
- $smarty);
- $year_result .= '</select>';
- }
- }
-
- // Loop thru the field_order field
- for ($i = 0; $i <= 2; $i++){
- $c = substr($field_order, $i, 1);
- switch ($c){
- case 'D':
- $html_result .= $day_result;
- break;
-
- case 'M':
- $html_result .= $month_result;
- break;
-
- case 'Y':
- $html_result .= $year_result;
- break;
- }
- // Add the field seperator
- if($i != 2) {
- $html_result .= $field_separator;
- }
- }
-
- return $html_result;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_time.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_time.php
deleted file mode 100644
index 4643136b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_select_time.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {html_select_time} function plugin
- *
- * Type: function<br>
- * Name: html_select_time<br>
- * Purpose: Prints the dropdowns for time selection
- * @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- * @return string
- * @uses smarty_make_timestamp()
- */
-function smarty_function_html_select_time($params, &$smarty)
-{
- require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
- require_once $smarty->_get_plugin_filepath('function','html_options');
- /* Default values. */
- $prefix = "Time_";
- $time = time();
- $display_hours = true;
- $display_minutes = true;
- $display_seconds = true;
- $display_meridian = true;
- $use_24_hours = true;
- $minute_interval = 1;
- $second_interval = 1;
- /* Should the select boxes be part of an array when returned from PHP?
- e.g. setting it to "birthday", would create "birthday[Hour]",
- "birthday[Minute]", "birthday[Seconds]" & "birthday[Meridian]".
- Can be combined with prefix. */
- $field_array = null;
- $all_extra = null;
- $hour_extra = null;
- $minute_extra = null;
- $second_extra = null;
- $meridian_extra = null;
-
- extract($params);
-
- $time = smarty_make_timestamp($time);
-
- $html_result = '';
-
- if ($display_hours) {
- $hours = $use_24_hours ? range(0, 23) : range(1, 12);
- $hour_fmt = $use_24_hours ? '%H' : '%I';
- for ($i = 0, $for_max = count($hours); $i < $for_max; $i++)
- $hours[$i] = sprintf('%02d', $hours[$i]);
- $html_result .= '<select name=';
- if (null !== $field_array) {
- $html_result .= '"' . $field_array . '[' . $prefix . 'Hour]"';
- } else {
- $html_result .= '"' . $prefix . 'Hour"';
- }
- if (null !== $hour_extra){
- $html_result .= ' ' . $hour_extra;
- }
- if (null !== $all_extra){
- $html_result .= ' ' . $all_extra;
- }
- $html_result .= '>'."\n";
- $html_result .= smarty_function_html_options(array('output' => $hours,
- 'values' => $hours,
- 'selected' => strftime($hour_fmt, $time),
- 'print_result' => false),
- $smarty);
- $html_result .= "</select>\n";
- }
-
- if ($display_minutes) {
- $all_minutes = range(0, 59);
- for ($i = 0, $for_max = count($all_minutes); $i < $for_max; $i+= $minute_interval)
- $minutes[] = sprintf('%02d', $all_minutes[$i]);
- $selected = intval(floor(strftime('%M', $time) / $minute_interval) * $minute_interval);
- $html_result .= '<select name=';
- if (null !== $field_array) {
- $html_result .= '"' . $field_array . '[' . $prefix . 'Minute]"';
- } else {
- $html_result .= '"' . $prefix . 'Minute"';
- }
- if (null !== $minute_extra){
- $html_result .= ' ' . $minute_extra;
- }
- if (null !== $all_extra){
- $html_result .= ' ' . $all_extra;
- }
- $html_result .= '>'."\n";
-
- $html_result .= smarty_function_html_options(array('output' => $minutes,
- 'values' => $minutes,
- 'selected' => $selected,
- 'print_result' => false),
- $smarty);
- $html_result .= "</select>\n";
- }
-
- if ($display_seconds) {
- $all_seconds = range(0, 59);
- for ($i = 0, $for_max = count($all_seconds); $i < $for_max; $i+= $second_interval)
- $seconds[] = sprintf('%02d', $all_seconds[$i]);
- $selected = intval(floor(strftime('%S', $time) / $second_interval) * $second_interval);
- $html_result .= '<select name=';
- if (null !== $field_array) {
- $html_result .= '"' . $field_array . '[' . $prefix . 'Second]"';
- } else {
- $html_result .= '"' . $prefix . 'Second"';
- }
-
- if (null !== $second_extra){
- $html_result .= ' ' . $second_extra;
- }
- if (null !== $all_extra){
- $html_result .= ' ' . $all_extra;
- }
- $html_result .= '>'."\n";
-
- $html_result .= smarty_function_html_options(array('output' => $seconds,
- 'values' => $seconds,
- 'selected' => $selected,
- 'print_result' => false),
- $smarty);
- $html_result .= "</select>\n";
- }
-
- if ($display_meridian && !$use_24_hours) {
- $html_result .= '<select name=';
- if (null !== $field_array) {
- $html_result .= '"' . $field_array . '[' . $prefix . 'Meridian]"';
- } else {
- $html_result .= '"' . $prefix . 'Meridian"';
- }
-
- if (null !== $meridian_extra){
- $html_result .= ' ' . $meridian_extra;
- }
- if (null !== $all_extra){
- $html_result .= ' ' . $all_extra;
- }
- $html_result .= '>'."\n";
-
- $html_result .= smarty_function_html_options(array('output' => array('AM', 'PM'),
- 'values' => array('am', 'pm'),
- 'selected' => strtolower(strftime('%p', $time)),
- 'print_result' => false),
- $smarty);
- $html_result .= "</select>\n";
- }
-
- return $html_result;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_table.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_table.php
deleted file mode 100644
index ece9c8c5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.html_table.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {html_table} function plugin
- *
- * Type: function<br>
- * Name: html_table<br>
- * Date: Feb 17, 2003<br>
- * Purpose: make an html table from an array of data<br>
- * Input:<br>
- * - loop = array to loop through
- * - cols = number of columns
- * - rows = number of rows
- * - table_attr = table attributes
- * - tr_attr = table row attributes (arrays are cycled)
- * - td_attr = table cell attributes (arrays are cycled)
- * - trailpad = value to pad trailing cells with
- * - vdir = vertical direction (default: "down", means top-to-bottom)
- * - hdir = horizontal direction (default: "right", means left-to-right)
- * - inner = inner loop (default "cols": print $loop line by line,
- * $loop will be printed column by column otherwise)
- *
- *
- * Examples:
- * <pre>
- * {table loop=$data}
- * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
- * {table loop=$data cols=4 tr_attr=$colors}
- * </pre>
- * @author Monte Ohrt <monte@ispi.net>
- * @version 1.0
- * @link http://smarty.php.net/manual/en/language.function.html.table.php {html_table}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- * @return string
- */
-function smarty_function_html_table($params, &$smarty)
-{
- $table_attr = 'border="1"';
- $tr_attr = '';
- $td_attr = '';
- $cols = 3;
- $rows = 3;
- $trailpad = '&nbsp;';
- $vdir = 'down';
- $hdir = 'right';
- $inner = 'cols';
-
- extract($params);
-
- if (!isset($loop)) {
- $smarty->trigger_error("html_table: missing 'loop' parameter");
- return;
- }
-
- $loop_count = count($loop);
- if (empty($params['rows'])) {
- /* no rows specified */
- $rows = ceil($loop_count/$cols);
- } elseif (empty($params['cols'])) {
- if (!empty($params['rows'])) {
- /* no cols specified, but rows */
- $cols = ceil($loop_count/$rows);
- }
- }
-
- $output = "<table $table_attr>\n";
-
- for ($r=0; $r<$rows; $r++) {
- $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
- $rx = ($vdir == 'down') ? $r*$cols : ($rows-1-$r)*$cols;
-
- for ($c=0; $c<$cols; $c++) {
- $x = ($hdir == 'right') ? $rx+$c : $rx+$cols-1-$c;
- if ($inner!='cols') {
- /* shuffle x to loop over rows*/
- $x = floor($x/$cols) + ($x%$cols)*$rows;
- }
-
- if ($x<$loop_count) {
- $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n";
- } else {
- $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
- }
- }
- $output .= "</tr>\n";
- }
- $output .= "</table>\n";
-
- return $output;
-}
-
-function smarty_function_html_table_cycle($name, $var, $no) {
- if(!is_array($var)) {
- $ret = $var;
- } else {
- $ret = $var[$no % count($var)];
- }
-
- return ($ret) ? ' '.$ret : '';
-}
-
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.mailto.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.mailto.php
deleted file mode 100644
index 9273ba39..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.mailto.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {mailto} function plugin
- *
- * Type: function<br>
- * Name: mailto<br>
- * Date: May 21, 2002
- * Purpose: automate mailto address link creation, and optionally
- * encode them.<br>
- * Input:<br>
- * - address = e-mail address
- * - text = (optional) text to display, default is address
- * - encode = (optional) can be one of:
- * * none : no encoding (default)
- * * javascript : encode with javascript
- * * hex : encode with hexidecimal (no javascript)
- * - cc = (optional) address(es) to carbon copy
- * - bcc = (optional) address(es) to blind carbon copy
- * - subject = (optional) e-mail subject
- * - newsgroups = (optional) newsgroup(s) to post to
- * - followupto = (optional) address(es) to follow up to
- * - extra = (optional) extra tags for the href link
- *
- * Examples:
- * <pre>
- * {mailto address="me@domain.com"}
- * {mailto address="me@domain.com" encode="javascript"}
- * {mailto address="me@domain.com" encode="hex"}
- * {mailto address="me@domain.com" subject="Hello to you!"}
- * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
- * {mailto address="me@domain.com" extra='class="mailto"'}
- * </pre>
- * @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto}
- * (Smarty online manual)
- * @version 1.2
- * @author Monte Ohrt <monte@ispi.net>
- * @author credits to Jason Sweat (added cc, bcc and subject functionality)
- * @param array
- * @param Smarty
- * @return string
- */
-function smarty_function_mailto($params, &$smarty)
-{
- $extra = '';
- extract($params);
-
- if (empty($address)) {
- $smarty->trigger_error("mailto: missing 'address' parameter");
- return;
- }
-
- if (empty($text)) {
- $text = $address;
- }
-
- // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
- // so, don't encode it.
-
- $mail_parms = array();
- if (!empty($cc)) {
- $mail_parms[] = 'cc='.str_replace('%40','@',rawurlencode($cc));
- }
-
- if (!empty($bcc)) {
- $mail_parms[] = 'bcc='.str_replace('%40','@',rawurlencode($bcc));
- }
-
- if (!empty($subject)) {
- $mail_parms[] = 'subject='.rawurlencode($subject);
- }
-
- if (!empty($newsgroups)) {
- $mail_parms[] = 'newsgroups='.rawurlencode($newsgroups);
- }
-
- if (!empty($followupto)) {
- $mail_parms[] = 'followupto='.str_replace('%40','@',rawurlencode($followupto));
- }
-
- $mail_parm_vals = '';
- for ($i=0; $i<count($mail_parms); $i++) {
- $mail_parm_vals .= (0==$i) ? '?' : '&';
- $mail_parm_vals .= $mail_parms[$i];
- }
- $address .= $mail_parm_vals;
-
- if (empty($encode)) {
- $encode = 'none';
- } elseif (!in_array($encode,array('javascript','hex','none')) ) {
- $smarty->trigger_error("mailto: 'encode' parameter must be none, javascript or hex");
- return;
- }
-
- if ($encode == 'javascript' ) {
- $string = 'document.write(\'<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>\');';
-
- for ($x=0; $x < strlen($string); $x++) {
- $js_encode .= '%' . bin2hex($string[$x]);
- }
-
- return '<script type="text/javascript" language="javascript">eval(unescape(\''.$js_encode.'\'))</script>';
-
- } elseif ($encode == 'hex') {
-
- preg_match('!^(.*)(\?.*)$!',$address,$match);
- if(!empty($match[2])) {
- $smarty->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.");
- return;
- }
- for ($x=0; $x < strlen($address); $x++) {
- if(preg_match('!\w!',$address[$x])) {
- $address_encode .= '%' . bin2hex($address[$x]);
- } else {
- $address_encode .= $address[$x];
- }
- }
- for ($x=0; $x < strlen($text); $x++) {
- $text_encode .= '&#x' . bin2hex($text[$x]).';';
- }
-
- return '<a href="mailto:'.$address_encode.'" '.$extra.'>'.$text_encode.'</a>';
-
- } else {
- // no encoding
- return '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';
-
- }
-
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.math.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.math.php
deleted file mode 100644
index d2b5d829..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.math.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {math} function plugin
- *
- * Type: function<br>
- * Name: math<br>
- * Purpose: handle math computations in template<br>
- * @link http://smarty.php.net/manual/en/language.function.math.php {math}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- * @return string
- */
-function smarty_function_math($params, &$smarty)
-{
- // be sure equation parameter is present
- if (empty($params['equation'])) {
- $smarty->trigger_error("math: missing equation parameter");
- return;
- }
-
- $equation = $params['equation'];
-
- // make sure parenthesis are balanced
- if (substr_count($equation,"(") != substr_count($equation,")")) {
- $smarty->trigger_error("math: unbalanced parenthesis");
- return;
- }
-
- // match all vars in equation, make sure all are passed
- preg_match_all("!\!(0x)([a-zA-Z][a-zA-Z0-9_]*)!",$equation, $match);
- $allowed_funcs = array('int','abs','ceil','cos','exp','floor','log','log10',
- 'max','min','pi','pow','rand','round','sin','sqrt','srand','tan');
- foreach($match[2] as $curr_var) {
- if (!in_array($curr_var,array_keys($params)) && !in_array($curr_var, $allowed_funcs)) {
- $smarty->trigger_error("math: parameter $curr_var not passed as argument");
- return;
- }
- }
-
- foreach($params as $key => $val) {
- if ($key != "equation" && $key != "format" && $key != "assign") {
- // make sure value is not empty
- if (strlen($val)==0) {
- $smarty->trigger_error("math: parameter $key is empty");
- return;
- }
- if (!is_numeric($val)) {
- $smarty->trigger_error("math: parameter $key: is not numeric");
- return;
- }
- $equation = preg_replace("/\b$key\b/",$val, $equation);
- }
- }
-
- eval("\$smarty_math_result = ".$equation.";");
-
- if (empty($params['format'])) {
- if (empty($params['assign'])) {
- return $smarty_math_result;
- } else {
- $smarty->assign($params['assign'],$smarty_math_result);
- }
- } else {
- if (empty($params['assign'])){
- printf($params['format'],$smarty_math_result);
- } else {
- $smarty->assign($params['assign'],sprintf($params['format'],$smarty_math_result));
- }
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup.php
deleted file mode 100644
index 0eb4fcb3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {popup} function plugin
- *
- * Type: function<br>
- * Name: popup<br>
- * Purpose: make text pop up in windows via overlib
- * @link http://smarty.php.net/manual/en/language.function.popup.php {popup}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- * @return string
- */
-function smarty_function_popup($params, &$smarty)
-{
- extract($params);
-
- if (empty($text) && !isset($inarray) && empty($function)) {
- $smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required");
- return false;
- }
-
- if (empty($trigger)) { $trigger = "onmouseover"; }
-
- $retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\'';
- if ($sticky) { $retval .= ",STICKY"; }
- if (!empty($caption)) { $retval .= ",CAPTION,'".str_replace("'","\'",$caption)."'"; }
- if (!empty($fgcolor)) { $retval .= ",FGCOLOR,'$fgcolor'"; }
- if (!empty($bgcolor)) { $retval .= ",BGCOLOR,'$bgcolor'"; }
- if (!empty($textcolor)) { $retval .= ",TEXTCOLOR,'$textcolor'"; }
- if (!empty($capcolor)) { $retval .= ",CAPCOLOR,'$capcolor'"; }
- if (!empty($closecolor)) { $retval .= ",CLOSECOLOR,'$closecolor'"; }
- if (!empty($textfont)) { $retval .= ",TEXTFONT,'$textfont'"; }
- if (!empty($captionfont)) { $retval .= ",CAPTIONFONT,'$captionfont'"; }
- if (!empty($closefont)) { $retval .= ",CLOSEFONT,'$closefont'"; }
- if (!empty($textsize)) { $retval .= ",TEXTSIZE,$textsize"; }
- if (!empty($captionsize)) { $retval .= ",CAPTIONSIZE,$captionsize"; }
- if (!empty($closesize)) { $retval .= ",CLOSESIZE,$closesize"; }
- if (!empty($width)) { $retval .= ",WIDTH,$width"; }
- if (!empty($height)) { $retval .= ",HEIGHT,$height"; }
- if (!empty($left)) { $retval .= ",LEFT"; }
- if (!empty($right)) { $retval .= ",RIGHT"; }
- if (!empty($center)) { $retval .= ",CENTER"; }
- if (!empty($above)) { $retval .= ",ABOVE"; }
- if (!empty($below)) { $retval .= ",BELOW"; }
- if (isset($border)) { $retval .= ",BORDER,$border"; }
- if (isset($offsetx)) { $retval .= ",OFFSETX,$offsetx"; }
- if (isset($offsety)) { $retval .= ",OFFSETY,$offsety"; }
- if (!empty($fgbackground)) { $retval .= ",FGBACKGROUND,'$fgbackground'"; }
- if (!empty($bgbackground)) { $retval .= ",BGBACKGROUND,'$bgbackground'"; }
- if (!empty($closetext)) { $retval .= ",CLOSETEXT,'".str_replace("'","\'",$closetext)."'"; }
- if (!empty($noclose)) { $retval .= ",NOCLOSE"; }
- if (!empty($status)) { $retval .= ",STATUS,'".str_replace("'","\'",$status)."'"; }
- if (!empty($autostatus)) { $retval .= ",AUTOSTATUS"; }
- if (!empty($autostatuscap)) { $retval .= ",AUTOSTATUSCAP"; }
- if (isset($inarray)) { $retval .= ",INARRAY,'$inarray'"; }
- if (isset($caparray)) { $retval .= ",CAPARRAY,'$caparray'"; }
- if (!empty($capicon)) { $retval .= ",CAPICON,'$capicon'"; }
- if (!empty($snapx)) { $retval .= ",SNAPX,$snapx"; }
- if (!empty($snapy)) { $retval .= ",SNAPY,$snapy"; }
- if (isset($fixx)) { $retval .= ",FIXX,$fixx"; }
- if (isset($fixy)) { $retval .= ",FIXY,$fixy"; }
- if (!empty($background)) { $retval .= ",BACKGROUND,'$background'"; }
- if (!empty($padx)) { $retval .= ",PADX,$padx"; }
- if (!empty($pady)) { $retval .= ",PADY,$pady"; }
- if (!empty($fullhtml)) { $retval .= ",FULLHTML"; }
- if (!empty($frame)) { $retval .= ",FRAME,'$frame'"; }
- if (isset($timeout)) { $retval .= ",TIMEOUT,$timeout"; }
- if (!empty($function)) { $retval .= ",FUNCTION,'$function'"; }
- if (isset($delay)) { $retval .= ",DELAY,$delay"; }
- if (!empty($hauto)) { $retval .= ",HAUTO"; }
- if (!empty($vauto)) { $retval .= ",VAUTO"; }
- $retval .= ');" onmouseout="nd();"';
-
- return $retval;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup_init.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup_init.php
deleted file mode 100644
index e06de696..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.popup_init.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty {popup_init} function plugin
- *
- * Type: function<br>
- * Name: popup_init<br>
- * Purpose: initialize overlib
- * @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init}
- * (Smarty online manual)
- * @param array
- * @param Smarty
- * @return string
- */
-function smarty_function_popup_init($params, &$smarty)
-{
- $zindex = 1000;
-
- if (!empty($params['zindex'])) {
- $zindex = $params['zindex'];
- }
-
- if (!empty($params['src'])) {
- return '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:'.$zindex.';"></div>' . "\n"
- . '<script type="text/javascript" language="JavaScript" src="'.$params['src'].'"></script>' . "\n";
- } else {
- $smarty->trigger_error("popup_init: missing src parameter");
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.var_dump.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.var_dump.php
deleted file mode 100644
index 382032c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/function.var_dump.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/** @package Smarty
-* @subpackage plugins */
-
-/**
- * Smarty plugin
- * -------------------------------------------------------------
- * Type: function
- * Name: assign
- * Purpose: assign a value to a template variable
- * -------------------------------------------------------------
- */
-function smarty_function_var_dump($params, &$smarty)
-{
- var_dump('<pre>',$params,'</pre>');
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.capitalize.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.capitalize.php
deleted file mode 100644
index 464d5f84..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.capitalize.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty capitalize modifier plugin
- *
- * Type: modifier<br>
- * Name: capitalize<br>
- * Purpose: capitalize words in the string
- * @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE
- * capitalize (Smarty online manual)
- * @param string
- * @return string
- */
-function smarty_modifier_capitalize($string)
-{
- return ucwords($string);
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.cat.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.cat.php
deleted file mode 100644
index 176ee7ae..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.cat.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty cat modifier plugin
- *
- * Type: modifier<br>
- * Name: cat<br>
- * Date: Feb 24, 2003
- * Purpose: catenate a value to a variable
- * Input: string to catenate
- * Example: {$var|cat:"foo"}
- * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
- * (Smarty online manual)
- * @author Monte Ohrt <monte@ispi.net>
- * @version 1.0
- * @param string
- * @param string
- * @return string
- */
-function smarty_modifier_cat($string, $cat)
-{
- return $string . $cat;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_characters.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_characters.php
deleted file mode 100644
index 2fb7c898..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_characters.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty count_characters modifier plugin
- *
- * Type: modifier<br>
- * Name: count_characteres<br>
- * Purpose: count the number of characters in a text
- * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php
- * count_characters (Smarty online manual)
- * @param string
- * @param boolean include whitespace in the character count
- * @return integer
- */
-function smarty_modifier_count_characters($string, $include_spaces = false)
-{
- if ($include_spaces)
- return(strlen($string));
-
- return preg_match_all("/[^\s]/",$string, $match);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_paragraphs.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_paragraphs.php
deleted file mode 100644
index 5f6278fe..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_paragraphs.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty count_paragraphs modifier plugin
- *
- * Type: modifier<br>
- * Name: count_paragraphs<br>
- * Purpose: count the number of paragraphs in a text
- * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
- * count_paragraphs (Smarty online manual)
- * @param string
- * @return integer
- */
-function smarty_modifier_count_paragraphs($string)
-{
- // count \r or \n characters
- return count(preg_split('/[\r\n]+/', $string));
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_sentences.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_sentences.php
deleted file mode 100644
index 2f3ba65e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_sentences.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty count_sentences modifier plugin
- *
- * Type: modifier<br>
- * Name: count_sentences
- * Purpose: count the number of sentences in a text
- * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
- * count_sentences (Smarty online manual)
- * @param string
- * @return integer
- */
-function smarty_modifier_count_sentences($string)
-{
- // find periods with a word before but not after.
- return preg_match_all('/[^\s]\.(?!\w)/', $string, $match);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_words.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_words.php
deleted file mode 100644
index a686e4b4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.count_words.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty count_words modifier plugin
- *
- * Type: modifier<br>
- * Name: count_words<br>
- * Purpose: count the number of words in a text
- * @link http://smarty.php.net/manual/en/language.modifier.count.words.php
- * count_words (Smarty online manual)
- * @param string
- * @return integer
- */
-function smarty_modifier_count_words($string)
-{
- // split text by ' ',\r,\n,\f,\t
- $split_array = preg_split('/\s+/',$string);
- // count matches that contain alphanumerics
- $word_count = preg_grep('/[a-zA-Z0-9\\x80-\\xff]/', $split_array);
-
- return count($word_count);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.date_format.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.date_format.php
deleted file mode 100644
index ab7e9045..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.date_format.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Include the {@link shared.make_timestamp.php} plugin
- */
-require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
-/**
- * Smarty date_format modifier plugin
- *
- * Type: modifier<br>
- * Name: date_format<br>
- * Purpose: format datestamps via strftime<br>
- * Input:<br>
- * - string: input date string
- * - format: strftime format for output
- * - default_date: default date if $string is empty
- * @link http://smarty.php.net/manual/en/language.modifier.date.format.php
- * date_format (Smarty online manual)
- * @param string
- * @param string
- * @param string
- * @return string|void
- * @uses smarty_make_timestamp()
- */
-function smarty_modifier_date_format($string, $format="%b %e, %Y", $default_date=null)
-{
- if($string != '') {
- return strftime($format, smarty_make_timestamp($string));
- } elseif (isset($default_date) && $default_date != '') {
- return strftime($format, smarty_make_timestamp($default_date));
- } else {
- return;
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.debug_print_var.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.debug_print_var.php
deleted file mode 100644
index 3158df00..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.debug_print_var.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty debug_print_var modifier plugin
- *
- * Type: modifier<br>
- * Name: debug_print_var<br>
- * Purpose: formats variable contents for display in the console
- * @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php
- * debug_print_var (Smarty online manual)
- * @param array|object
- * @param integer
- * @param integer
- * @return string
- */
-function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40)
-{
- $_replace = array("\n"=>'<i>&#92;n</i>', "\r"=>'<i>&#92;r</i>', "\t"=>'<i>&#92;t</i>');
- if (is_array($var)) {
- $results = "<b>Array (".count($var).")</b>";
- foreach ($var as $curr_key => $curr_val) {
- $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length);
- $results .= "<br>".str_repeat('&nbsp;', $depth*2)."<b>".strtr($curr_key, $_replace)."</b> =&gt; $return";
- }
- return $results;
- } else if (is_object($var)) {
- $object_vars = get_object_vars($var);
- $results = "<b>".get_class($var)." Object (".count($object_vars).")</b>";
- foreach ($object_vars as $curr_key => $curr_val) {
- $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length);
- $results .= "<br>".str_repeat('&nbsp;', $depth*2)."<b>$curr_key</b> =&gt; $return";
- }
- return $results;
- } else {
- if (empty($var) && $var != "0") {
- return '<i>empty</i>';
- }
- if (strlen($var) > $length ) {
- $results = substr($var, 0, $length-3).'...';
- } else {
- $results = $var;
- }
- $results = htmlspecialchars($results);
- $results = strtr($results, $_replace);
- return $results;
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.default.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.default.php
deleted file mode 100644
index 4f1f800a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.default.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty default modifier plugin
- *
- * Type: modifier<br>
- * Name: default<br>
- * Purpose: designate default value for empty variables
- * @link http://smarty.php.net/manual/en/language.modifier.default.php
- * default (Smarty online manual)
- * @param string
- * @param string
- * @return string
- */
-function smarty_modifier_default($string, $default = '')
-{
- if (!isset($string) || $string === '')
- return $default;
- else
- return $string;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.escape.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.escape.php
deleted file mode 100644
index dc5ebc6f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.escape.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty escape modifier plugin
- *
- * Type: modifier<br>
- * Name: escape<br>
- * Purpose: Escape the string according to escapement type
- * @link http://smarty.php.net/manual/en/language.modifier.escape.php
- * escape (Smarty online manual)
- * @param string
- * @param html|htmlall|url|quotes|hex|hexentity|javascript
- * @return string
- */
-function smarty_modifier_escape($string, $esc_type = 'html')
-{
- switch ($esc_type) {
- case 'html':
- return htmlspecialchars($string, ENT_QUOTES);
-
- case 'htmlall':
- return htmlentities($string, ENT_QUOTES);
-
- case 'url':
- return urlencode($string);
-
- case 'quotes':
- // escape unescaped single quotes
- return preg_replace("%(?<!\\\\)'%", "\\'", $string);
-
- case 'hex':
- // escape every character into hex
- $return = '';
- for ($x=0; $x < strlen($string); $x++) {
- $return .= '%' . bin2hex($string[$x]);
- }
- return $return;
-
- case 'hexentity':
- $return = '';
- for ($x=0; $x < strlen($string); $x++) {
- $return .= '&#x' . bin2hex($string[$x]) . ';';
- }
- return $return;
-
- case 'javascript':
- // escape quotes and backslashes and newlines
- return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n'));
-
- default:
- return $string;
- }
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.htmlentities.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.htmlentities.php
deleted file mode 100644
index 72dcf7de..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.htmlentities.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/** @package Smarty
-* @subpackage plugins */
-
-/**
- * Smarty plugin
- * -------------------------------------------------------------
- * Type: modifier
- * Name: upper
- * Purpose: convert string to uppercase
- * -------------------------------------------------------------
- */
-function smarty_modifier_htmlentities($string)
-{
- return htmlentities($string);
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.indent.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.indent.php
deleted file mode 100644
index 4a8b81c7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.indent.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty indent modifier plugin
- *
- * Type: modifier<br>
- * Name: indent<br>
- * Purpose: indent lines of text
- * @link http://smarty.php.net/manual/en/language.modifier.indent.php
- * indent (Smarty online manual)
- * @param string
- * @param integer
- * @param string
- * @return string
- */
-function smarty_modifier_indent($string,$chars=4,$char=" ")
-{
- return preg_replace('!^!m',str_repeat($char,$chars),$string);
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.lower.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.lower.php
deleted file mode 100644
index fecb7168..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.lower.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty lower modifier plugin
- *
- * Type: modifier<br>
- * Name: lower<br>
- * Purpose: convert string to lowercase
- * @link http://smarty.php.net/manual/en/language.modifier.lower.php
- * lower (Smarty online manual)
- * @param string
- * @return string
- */
-function smarty_modifier_lower($string)
-{
- return strtolower($string);
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.nl2br.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.nl2br.php
deleted file mode 100644
index 2a5f238b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.nl2br.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty plugin
- *
- * Type: modifier<br>
- * Name: nl2br<br>
- * Date: Feb 26, 2003
- * Purpose: convert \r\n, \r or \n to <<br>>
- * Input:<br>
- * - contents = contents to replace
- * - preceed_test = if true, includes preceeding break tags
- * in replacement
- * Example: {$text|nl2br}
- * @link http://smarty.php.net/manual/en/language.modifier.nl2br.php
- * nl2br (Smarty online manual)
- * @version 1.0
- * @author Monte Ohrt <monte@ispi.net>
- * @param string
- * @return string
- */
-function smarty_modifier_nl2br($string)
-{
- return nl2br($string);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.rawurlencode.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.rawurlencode.php
deleted file mode 100644
index d2d5e813..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.rawurlencode.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/** @package Smarty
-* @subpackage plugins */
-
-/**
- * Smarty plugin
- * -------------------------------------------------------------
- * Type: modifier
- * Name: rawurlencode
- * Purpose: encode string for use in PDFdefaultConverter TOC
- * -------------------------------------------------------------
- */
-function smarty_modifier_rawurlencode($string)
-{
- return rawurlencode($string);
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.regex_replace.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.regex_replace.php
deleted file mode 100644
index a467dfba..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.regex_replace.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty regex_replace modifier plugin
- *
- * Type: modifier<br>
- * Name: regex_replace<br>
- * Purpose: regular epxression search/replace
- * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
- * regex_replace (Smarty online manual)
- * @param string
- * @param string|array
- * @param string|array
- * @return string
- */
-function smarty_modifier_regex_replace($string, $search, $replace)
-{
- return preg_replace($search, $replace, $string);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.replace.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.replace.php
deleted file mode 100644
index 590e11b4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.replace.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty replace modifier plugin
- *
- * Type: modifier<br>
- * Name: replace<br>
- * Purpose: simple search/replace
- * @link http://smarty.php.net/manual/en/language.modifier.replace.php
- * replace (Smarty online manual)
- * @param string
- * @param string
- * @param string
- * @return string
- */
-function smarty_modifier_replace($string, $search, $replace)
-{
- return str_replace($search, $replace, $string);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.spacify.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.spacify.php
deleted file mode 100644
index bcc5f941..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.spacify.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty spacify modifier plugin
- *
- * Type: modifier<br>
- * Name: spacify<br>
- * Purpose: add spaces between characters in a string
- * @link http://smarty.php.net/manual/en/language.modifier.spacify.php
- * spacify (Smarty online manual)
- * @param string
- * @param string
- * @return string
- */
-function smarty_modifier_spacify($string, $spacify_char = ' ')
-{
- return implode($spacify_char,
- preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY));
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.string_format.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.string_format.php
deleted file mode 100644
index 49903137..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.string_format.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty string_format modifier plugin
- *
- * Type: modifier<br>
- * Name: string_format<br>
- * Purpose: format strings via sprintf
- * @link http://smarty.php.net/manual/en/language.modifier.string.format.php
- * string_format (Smarty online manual)
- * @param string
- * @param string
- * @return string
- */
-function smarty_modifier_string_format($string, $format)
-{
- return sprintf($format, $string);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip.php
deleted file mode 100644
index fc675582..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty strip modifier plugin
- *
- * Type: modifier<br>
- * Name: strip<br>
- * Purpose: Replace all repeated spaces, newlines, tabs
- * with a single space or supplied replacement string.<br>
- * Example: {$var|strip} {$var|strip:"&nbsp;"}
- * Date: September 25th, 2002
- * @link http://smarty.php.net/manual/en/language.modifier.strip.php
- * strip (Smarty online manual)
- * @author Monte Ohrt <monte@ispi.net>
- * @version 1.0
- * @param string
- * @param string
- * @return string
- */
-function smarty_modifier_strip($text, $replace = ' ')
-{
- return preg_replace('!\s+!', $replace, $text);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip_tags.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip_tags.php
deleted file mode 100644
index 516a87fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.strip_tags.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty strip_tags modifier plugin
- *
- * Type: modifier<br>
- * Name: strip_tags<br>
- * Purpose: strip html tags from text
- * @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php
- * strip_tags (Smarty online manual)
- * @param string
- * @param boolean
- * @return string
- */
-function smarty_modifier_strip_tags($string, $replace_with_space = true)
-{
- if ($replace_with_space)
- return preg_replace('!<[^>]*?>!', ' ', $string);
- else
- return strip_tags($string);
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.truncate.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.truncate.php
deleted file mode 100644
index 775a20e8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.truncate.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty truncate modifier plugin
- *
- * Type: modifier<br>
- * Name: truncate<br>
- * Purpose: Truncate a string to a certain length if necessary,
- * optionally splitting in the middle of a word, and
- * appending the $etc string.
- * @link http://smarty.php.net/manual/en/language.modifier.truncate.php
- * truncate (Smarty online manual)
- * @param string
- * @param integer
- * @param string
- * @param boolean
- * @return string
- */
-function smarty_modifier_truncate($string, $length = 80, $etc = '...',
- $break_words = false)
-{
- if ($length == 0)
- return '';
-
- if (strlen($string) > $length) {
- $length -= strlen($etc);
- if (!$break_words)
- $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
-
- return substr($string, 0, $length).$etc;
- } else
- return $string;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.upper.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.upper.php
deleted file mode 100644
index 899f6bb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.upper.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty upper modifier plugin
- *
- * Type: modifier<br>
- * Name: upper<br>
- * Purpose: convert string to uppercase
- * @link http://smarty.php.net/manual/en/language.modifier.upper.php
- * upper (Smarty online manual)
- * @param string
- * @return string
- */
-function smarty_modifier_upper($string)
-{
- return strtoupper($string);
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.wordwrap.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.wordwrap.php
deleted file mode 100644
index fe4407fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/modifier.wordwrap.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Smarty wordwrap modifier plugin
- *
- * Type: modifier<br>
- * Name: wordwrap<br>
- * Purpose: wrap a string of text at a given length
- * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php
- * wordwrap (Smarty online manual)
- * @param string
- * @param integer
- * @param string
- * @param boolean
- * @return string
- */
-function smarty_modifier_wordwrap($string,$length=80,$break="\n",$cut=false)
-{
- return wordwrap($string,$length,$break,$cut);
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/outputfilter.trimwhitespace.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/outputfilter.trimwhitespace.php
deleted file mode 100644
index 1fa5fe17..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/outputfilter.trimwhitespace.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty trimwhitespace outputfilter plugin
- *
- * File: outputfilter.trimwhitespace.php<br>
- * Type: outputfilter<br>
- * Name: trimwhitespace<br>
- * Date: Jan 25, 2003<br>
- * Purpose: trim leading white space and blank lines from
- * template source after it gets interpreted, cleaning
- * up code and saving bandwidth. Does not affect
- * <<PRE>></PRE> and <SCRIPT></SCRIPT> blocks.<br>
- * Install: Drop into the plugin directory, call
- * <code>$smarty->load_filter('output','trimwhitespace');</code>
- * from application.
- * @author Monte Ohrt <monte@ispi.net>
- * @author Contributions from Lars Noschinski <lars@usenet.noschinski.de>
- * @version 1.3
- * @param string
- * @param Smarty
- */
- function smarty_outputfilter_trimwhitespace($source, &$smarty)
- {
- // Pull out the script blocks
- preg_match_all("!<script[^>]+>.*?</script>!is", $source, $match);
- $_script_blocks = $match[0];
- $source = preg_replace("!<script[^>]+>.*?</script>!is",
- '@@@SMARTY:TRIM:SCRIPT@@@', $source);
-
- // Pull out the pre blocks
- preg_match_all("!<pre>.*?</pre>!is", $source, $match);
- $_pre_blocks = $match[0];
- $source = preg_replace("!<pre>.*?</pre>!is",
- '@@@SMARTY:TRIM:PRE@@@', $source);
-
- // Pull out the textarea blocks
- preg_match_all("!<textarea[^>]+>.*?</textarea>!is", $source, $match);
- $_textarea_blocks = $match[0];
- $source = preg_replace("!<textarea[^>]+>.*?</textarea>!is",
- '@@@SMARTY:TRIM:TEXTAREA@@@', $source);
-
- // remove all leading spaces, tabs and carriage returns NOT
- // preceeded by a php close tag.
- $source = trim(preg_replace('/((?<!\?>)\n)[\s]+/m', '\1', $source));
-
- // replace script blocks
- smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $source);
-
- // replace pre blocks
- smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$_pre_blocks, $source);
-
- // replace textarea blocks
- smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$_textarea_blocks, $source);
-
- return $source;
- }
-
-function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) {
- $_len = strlen($search_str);
- $_pos = 0;
- for ($_i=0, $_count=count($replace); $_i<$_count; $_i++)
- if (($_pos=strpos($subject, $search_str, $_pos))!==false)
- $subject = substr_replace($subject, $replace[$_i], $_pos, $_len);
- else
- break;
-
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.escape_special_chars.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.escape_special_chars.php
deleted file mode 100644
index 72b8a48c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.escape_special_chars.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * escape_special_chars common function
- *
- * Function: smarty_function_escape_special_chars<br>
- * Purpose: used by other smarty functions to escape
- * special chars except for already escaped ones
- * @param string
- * @return string
- */
-function smarty_function_escape_special_chars($string)
-{
- if(!is_array($string)) {
- $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
- $string = htmlspecialchars($string);
- $string = str_replace(array('%%%SMARTY_START%%%','%%%SMARTY_END%%%'), array('&',';'), $string);
- }
- return $string;
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.make_timestamp.php b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.make_timestamp.php
deleted file mode 100644
index 25c7f5c8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/plugins/shared.make_timestamp.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-
-/**
- * Function: smarty_make_timestamp<br>
- * Purpose: used by other smarty functions to make a timestamp
- * from a string.
- * @param string
- * @return string
- */
-function smarty_make_timestamp($string)
-{
- if(empty($string)) {
- $string = "now";
- }
- $time = strtotime($string);
- if (is_numeric($time) && $time != -1)
- return $time;
-
- // is mysql timestamp format of YYYYMMDDHHMMSS?
- if (preg_match('/^\d{14}$/', $string)) {
- $time = mktime(substr($string,8,2),substr($string,10,2),substr($string,12,2),
- substr($string,4,2),substr($string,6,2),substr($string,0,4));
-
- return $time;
- }
-
- // couldn't recognize it, try to return a time
- $time = (int) $string;
- if ($time > 0)
- return $time;
- else
- return time();
-}
-
-/* vim: set expandtab: */
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.README b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.README
deleted file mode 100644
index bea956fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.README
+++ /dev/null
@@ -1,6 +0,0 @@
-Feel free to put the smarty icon on your site.
-You can cut-and-paste the following code, be sure
-to adjust the path to the image:
-
-<a href="http://smarty.php.net/">
-<img src="smarty_icon.gif" border="0" height="31" width="88" /></a>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.gif b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.gif
deleted file mode 100644
index 5d519699..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/misc/smarty_icon.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/TutorialHighlightParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/TutorialHighlightParser.inc
deleted file mode 100644
index ff7160ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/TutorialHighlightParser.inc
+++ /dev/null
@@ -1,491 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2004 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-/**
- * Source Code Highlighting
- *
- * The classes in this file are responsible for the dynamic @example, and
- * <programlisting role="tutorial"> tags output. Using the
- * WordParser, the phpDocumentor_TutorialHighlightParser
- * retrieves PHP tokens one by one from the array generated by
- * {@link WordParser} source retrieval functions
- * and then highlights them individually.
- *
- * It accomplishes this highlighting through the assistance of methods in
- * the output Converter passed to its parse() method, and then returns the
- * fully highlighted source as a string
- * @tutorial tags.example.pkg, tags.filesource.pkg
- * @package phpDocumentor
- * @subpackage Parsers
- * @since 1.3.0
- */
-
-/**
- * Highlights source code using {@link parse()}
- * @package phpDocumentor
- * @subpackage Parsers
- */
-class phpDocumentor_TutorialHighlightParser extends Parser
-{
- /**#@+ @access private */
- /**
- * Highlighted source is built up in this string
- * @var string
- */
- var $_output;
- /**
- * contents of the current source code line as it is parsed
- * @var string
- */
- var $_line;
- /**
- * Used to retrieve highlighted tokens
- * @var Converter a descendant of Converter
- */
- var $_converter;
- /**
- * Path to file being highlighted, if this is from a @filesource tag
- * @var false|string full path
- */
- var $_filesourcepath;
- /**
- * @var array
- */
- var $eventHandlers = array(
- TUTORIAL_EVENT_NOEVENTS => 'defaultHandler',
- TUTORIAL_EVENT_ITAG => 'defaultHandler',
- TUTORIAL_EVENT_ATTRIBUTE => 'attrHandler',
- TUTORIAL_EVENT_OPENTAG => 'defaultHandler',
- TUTORIAL_EVENT_CLOSETAG => 'defaultHandler',
- TUTORIAL_EVENT_ENTITY => 'defaultHandler',
- TUTORIAL_EVENT_COMMENT => 'defaultHandler',
- TUTORIAL_EVENT_SINGLEQUOTE => 'defaultHandler',
- TUTORIAL_EVENT_DOUBLEQUOTE => 'defaultHandler',
- );
- /**#@-*/
-
- /**
- * @uses Converter::SourceLine() encloses {@link $_line} in a
- * converter-specific format
- */
- function newLineNum()
- {
- $this->_line .= $this->_converter->flushHighlightCache();
- $this->_output .= $this->_converter->SourceLine($this->_pv_curline + 1, $this->_line, $this->_path);
- $this->_line = '';
- }
-
- /**
- * Start the parsing at a certain line number
- */
- function setLineNum($num)
- {
- $this->_wp->linenum = $num;
- }
-
- /**
- * Parse a new file
- *
- * The parse() method is a do...while() loop that retrieves tokens one by
- * one from the {@link $_event_stack}, and uses the token event array set up
- * by the class constructor to call event handlers.
- *
- * The event handlers each process the tokens passed to them, and use the
- * {@link _addoutput()} method to append the processed tokens to the
- * {@link $_line} variable. The word parser calls {@link newLineNum()}
- * every time a line is reached.
- *
- * In addition, the event handlers use special linking functions
- * {@link _link()} and its cousins (_classlink(), etc.) to create in-code
- * hyperlinks to the documentation for source code elements that are in the
- * source code.
- *
- * @uses setupStates() initialize parser state variables
- * @uses configWordParser() pass $parse_data to prepare retrieval of tokens
- * @param string
- * @param Converter
- * @param false|string full path to file with @filesource tag, if this
- * is a @filesource parse
- * @param false|integer starting line number from {@}source linenum}
- * @staticvar integer used for recursion limiting if a handler for
- * an event is not found
- * @return bool
- */
- function parse ($parse_data, &$converter, $filesourcepath = false, $linenum = false)
- {
- static $endrecur = 0;
- $parse_data = str_replace(array("\r\n", "\t"), array("\n", ' '), $parse_data);
- $this->_converter = &$converter;
- $converter->startHighlight();
- $this->_path = $filesourcepath;
- $this->setupStates($parse_data);
-
- $this->configWordParser(TUTORIAL_EVENT_NOEVENTS);
- if ($linenum !== false) $this->setLineNum($linenum);
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
-
- do
- {
- $lpevent = $pevent;
- $pevent = $this->_event_stack->getEvent();
- if ($lpevent != $pevent)
- {
- $this->_last_pevent = $lpevent;
- $this->configWordParser($pevent);
- }
- $this->_wp->setWhitespace(true);
-
- $dbg_linenum = $this->_wp->linenum;
- $dbg_pos = $this->_wp->getPos();
- $this->_pv_last_word = $word;
- $this->_pv_curline = $this->_wp->linenum;
- $word = $this->_wp->getWord();
-
- if (0)//PHPDOCUMENTOR_DEBUG == true)
- {
- echo "LAST: ";
- echo "|" . $this->_pv_last_word;
- echo "|\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo "LASTPEVENT: " . $this->getParserEventName($this->_last_pevent) . "\n";
-// echo "LINE: ".$this->_line."\n";
-// echo "OUTPUT: ".$this->_output."\n";
- echo $dbg_linenum.'-'.$dbg_pos . ": ";
- echo '|'.htmlspecialchars($word);
- echo "|\n";
- echo "-------------------\n\n\n";
- flush();
- }
- if (isset($this->eventHandlers[$pevent]))
- {
- $handle = $this->eventHandlers[$pevent];
- $this->$handle($word, $pevent);
- } else
- {
- debug('WARNING: possible error, no handler for event number '.$pevent);
- if ($endrecur++ == 25)
- {
- die("FATAL ERROR, recursion limit reached");
- }
- }
- } while (!($word === false));
- if (strlen($this->_line)) $this->newLineNum();
- return $this->_output;
- }
-
- /**#@+
- * Event Handlers
- *
- * All Event Handlers use {@link checkEventPush()} and
- * {@link checkEventPop()} to set up the event stack and parser state.
- * @access private
- * @param string|array token value
- * @param integer parser event from {@link Parser.inc}
- */
- /**
- * Most tokens only need highlighting, and this method handles them
- */
- function defaultHandler($word, $pevent)
- {
- if ($word == "\n") {
- $this->newLineNum();
- return;
- }
- if ($this->checkEventPush($word, $pevent)) {
- $this->_wp->backupPos($word);
- return;
- }
- $this->_addoutput($word);
- $this->checkEventPop($word, $pevent);
- }
-
- /**
- * Most tokens only need highlighting, and this method handles them
- */
- function attrHandler($word, $pevent)
- {
- if ($word == "\n") {
- $this->newLineNum();
- return;
- }
- if ($e = $this->checkEventPush($word, $pevent)) {
- if ($e == TUTORIAL_EVENT_SINGLEQUOTE || $e == TUTORIAL_EVENT_DOUBLEQUOTE) {
- $this->_addoutput($word);
- }
- return;
- }
- if ($this->checkEventPop($word, $pevent)) {
- $this->_wp->backupPos($word);
- return;
- }
- $this->_addoutput($word);
- }
-
- /**#@+
- * Output Methods
- * @access private
- */
- /**
- * This method adds output to {@link $_line}
- *
- * If a string with variables like "$test this" is present, then special
- * handling is used to allow processing of the variable in context.
- * @see _flush_save()
- */
- function _addoutput($word, $preformatted = false)
- {
- $type =
- array(
- TUTORIAL_EVENT_ATTRIBUTE => 'attribute',
- TUTORIAL_EVENT_SINGLEQUOTE => 'attributevalue',
- TUTORIAL_EVENT_DOUBLEQUOTE => 'attributevalue',
- TUTORIAL_EVENT_CLOSETAG => 'closetag',
- TUTORIAL_EVENT_ENTITY => 'entity',
- TUTORIAL_EVENT_ITAG => 'itag',
- TUTORIAL_EVENT_OPENTAG => 'opentag',
- TUTORIAL_EVENT_COMMENT => 'comment',
- );
- $a = $this->_event_stack->getEvent();
- if (in_array($a, array_keys($type))) {
- $this->_line .= $this->_converter->highlightTutorialSource($type[$a], $word);
- } else {
- $this->_line .= $this->_converter->flushHighlightCache();
- $this->_line .= $word;
- }
- }
- /**#@-*/
-
- /**
- * tell the parser's WordParser {@link $wp} to set up tokens to parse words by.
- * tokens are word separators. In English, a space or punctuation are examples of tokens.
- * In PHP, a token can be a ;, a parenthesis, or even the word "function"
- * @param $value integer an event number
- * @see WordParser
- */
-
- function configWordParser($e)
- {
- $this->_wp->setSeperator($this->tokens[($e + 100)]);
- }
- /**
- * this function checks whether parameter $word is a token for pushing a new event onto the Event Stack.
- * @return mixed returns false, or the event number
- */
-
- function checkEventPush($word,$pevent)
- {
- $e = false;
- if (isset($this->pushEvent[$pevent]))
- {
- if (isset($this->pushEvent[$pevent][strtolower($word)]))
- $e = $this->pushEvent[$pevent][strtolower($word)];
- }
- if ($e)
- {
- $this->_event_stack->pushEvent($e);
- return $e;
- } else {
- return false;
- }
- }
-
- /**
- * this function checks whether parameter $word is a token for popping the current event off of the Event Stack.
- * @return mixed returns false, or the event number popped off of the stack
- */
-
- function checkEventPop($word,$pevent)
- {
- if (!isset($this->popEvent[$pevent])) return false;
- if (in_array(strtolower($word),$this->popEvent[$pevent]))
- {
- return $this->_event_stack->popEvent();
- } else {
- return false;
- }
- }
-
- /**
- * Initialize all parser state variables
- * @param boolean true if we are highlighting an inline {@}source} tag's
- * output
- * @param false|string name of class we are going to start from
- * @uses $_wp sets to a new {@link phpDocumentor_HighlightWordParser}
- */
- function setupStates($parsedata)
- {
- $this->_output = '';
- $this->_line = '';
- unset($this->_wp);
- $this->_wp = new WordParser;
- $this->_wp->setup($parsedata);
- $this->_event_stack = new EventStack;
- $this->_event_stack->popEvent();
- $this->_event_stack->pushEvent(TUTORIAL_EVENT_NOEVENTS);
- $this->_pv_linenum = null;
- $this->_pv_next_word = false;
- }
-
- /**
- * Initialize the {@link $tokenpushEvent, $wordpushEvent} arrays
- */
- function phpDocumentor_TutorialHighlightParser()
- {
- $this->allowableInlineTags = $GLOBALS['_phpDocumentor_inline_tutorial_tags_allowed'];
- $this->inlineTagHandlers = array('*' => 'handleDefaultInlineTag');
- $this->tokens[STATE_TUTORIAL_NOEVENTS] = array("\n",'{@', '<!--', '</', '<', '&');
- $this->tokens[STATE_TUTORIAL_ITAG] = array("\n","}");
- $this->tokens[STATE_TUTORIAL_OPENTAG] = array("\n","\t"," ", '>', '/>');
- $this->tokens[STATE_TUTORIAL_CLOSETAG] = array("\n",'>');
- $this->tokens[STATE_TUTORIAL_COMMENT] = array("\n",'-->');
- $this->tokens[STATE_TUTORIAL_ENTITY] = array("\n",';');
- $this->tokens[STATE_TUTORIAL_ATTRIBUTE] = array("\n",'"',"'",'>','/>');
- $this->tokens[STATE_TUTORIAL_DOUBLEQUOTE] = array("\n",'"','&','{@');
- $this->tokens[STATE_TUTORIAL_SINGLEQUOTE] = array("\n","'",'&','{@');
-/**************************************************************/
-
- $this->pushEvent[TUTORIAL_EVENT_NOEVENTS] =
- array(
- "{@" => TUTORIAL_EVENT_ITAG,
- '<' => TUTORIAL_EVENT_OPENTAG,
- '</' => TUTORIAL_EVENT_CLOSETAG,
- '&' => TUTORIAL_EVENT_ENTITY,
- '<!--' => TUTORIAL_EVENT_COMMENT,
- );
-/**************************************************************/
-
- $this->pushEvent[TUTORIAL_EVENT_OPENTAG] =
- array(
- " " => TUTORIAL_EVENT_ATTRIBUTE,
- "\n" => TUTORIAL_EVENT_ATTRIBUTE,
- );
-/**************************************************************/
-
- $this->pushEvent[TUTORIAL_EVENT_ATTRIBUTE] =
- array(
- "'" => TUTORIAL_EVENT_SINGLEQUOTE,
- '"' => TUTORIAL_EVENT_DOUBLEQUOTE,
- );
-/**************************************************************/
-
- $this->pushEvent[TUTORIAL_EVENT_SINGLEQUOTE] =
- array(
- '&' => TUTORIAL_EVENT_ENTITY,
- '{@' => TUTORIAL_EVENT_ITAG,
- );
-/**************************************************************/
-
- $this->pushEvent[TUTORIAL_EVENT_DOUBLEQUOTE] =
- array(
- '&' => TUTORIAL_EVENT_ENTITY,
- '{@' => TUTORIAL_EVENT_ITAG,
- );
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_ENTITY] = array(';');
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_SINGLEQUOTE] = array("'");
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_DOUBLEQUOTE] = array('"');
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_OPENTAG] = array('>', '/>');
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_CLOSETAG] = array('>');
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_COMMENT] = array('-->');
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_ATTRIBUTE] = array('>','/>');
-/**************************************************************/
-
- $this->popEvent[TUTORIAL_EVENT_ITAG] = array('}');
-/**************************************************************/
- }
-
- function getParserEventName ($value)
- {
- $lookup = array(
- TUTORIAL_EVENT_NOEVENTS => "TUTORIAL_EVENT_NOEVENTS",
- TUTORIAL_EVENT_ITAG => "TUTORIAL_EVENT_ITAG",
- TUTORIAL_EVENT_OPENTAG => "TUTORIAL_EVENT_OPENTAG",
- TUTORIAL_EVENT_ATTRIBUTE => "TUTORIAL_EVENT_ATTRIBUTE",
- TUTORIAL_EVENT_CLOSETAG => "TUTORIAL_EVENT_CLOSETAG",
- TUTORIAL_EVENT_ENTITY => "TUTORIAL_EVENT_ENTITY",
- TUTORIAL_EVENT_COMMENT => "TUTORIAL_EVENT_COMMENT",
- TUTORIAL_EVENT_SINGLEQUOTE => "TUTORIAL_EVENT_SINGLEQUOTE",
- TUTORIAL_EVENT_DOUBLEQUOTE => "TUTORIAL_EVENT_DOUBLEQUOTE",
- );
- if (isset($lookup[$value]))
- return $lookup[$value];
- else return $value;
- }
-}
-
-
-/** starting state */
-define("TUTORIAL_EVENT_NOEVENTS" , 1);
-/** currently in starting state */
-define("STATE_TUTORIAL_NOEVENTS" , 101);
-
-/** used when an {@}inline tag} is found */
-define("TUTORIAL_EVENT_ITAG" , 2);
-/** currently parsing an {@}inline tag} */
-define("STATE_TUTORIAL_ITAG" , 102);
-
-/** used when an open <tag> is found */
-define("TUTORIAL_EVENT_OPENTAG" , 3);
-/** currently parsing an open <tag> */
-define("STATE_TUTORIAL_OPENTAG" , 103);
-
-/** used when a <tag attr="attribute"> is found */
-define("TUTORIAL_EVENT_ATTRIBUTE" , 4);
-/** currently parsing an open <tag> */
-define("STATE_TUTORIAL_ATTRIBUTE" , 104);
-
-/** used when a close </tag> is found */
-define("TUTORIAL_EVENT_CLOSETAG" , 5);
-/** currently parsing a close </tag> */
-define("STATE_TUTORIAL_CLOSETAG" , 105);
-
-/** used when an &entity; is found */
-define("TUTORIAL_EVENT_ENTITY" , 6);
-/** currently parsing an &entity; */
-define("STATE_TUTORIAL_ENTITY" , 106);
-
-/** used when a <!-- comment --> is found */
-define("TUTORIAL_EVENT_COMMENT" , 7);
-/** currently parsing a <!-- comment --> */
-define("STATE_TUTORIAL_COMMENT" , 107);
-
-/** used when a <!-- comment --> is found */
-define("TUTORIAL_EVENT_SINGLEQUOTE" , 8);
-/** currently parsing a <!-- comment --> */
-define("STATE_TUTORIAL_SINGLEQUOTE" , 108);
-
-/** used when a <!-- comment --> is found */
-define("TUTORIAL_EVENT_DOUBLEQUOTE" , 9);
-/** currently parsing a <!-- comment --> */
-define("STATE_TUTORIAL_DOUBLEQUOTE" , 109);
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/WordParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/WordParser.inc
deleted file mode 100644
index e0853370..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/WordParser.inc
+++ /dev/null
@@ -1,325 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: WordParser.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- * @package phpDocumentor
- * @subpackage WordParsers
- */
-/**
- * Retrieves tokens from source code for use by the Parser
- * @see Parser
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @version $Id: WordParser.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
- * @package phpDocumentor
- * @subpackage WordParsers
- */
-class WordParser
-{
- /*
- New lines around the world
- Macintosh: \r
- Unix : \n
- Windows : \r\n
- */
-
- /**#@+
- * @access private
- */
- /**
- * List of text that separates tokens, used to retrieve tokens
- * @var array
- */
- var $wordseperators = array();
-
- /**
- * Position within input of the cursor pointing to the next text to be
- * retrieved as a token
- * @var integer
- */
- var $pos = 0;
-
- /**
- * Size of the input source code
- * @var integer
- */
- var $size;
-
- /**
- * Source code
- * @var string
- */
- var $data;
-
- var $cache;
- /**
- * Current line number
- * @var integer
- */
- var $linenum = 0;
- /**
- * Position the cursor was at the last time line numbers were counted, used
- * to guarantee that line numbers are incremented
- * @var integer
- */
- var $linenumpos = 0;
-
- /**
- * Used for {@}source} tag, contains currently parsed function source
- * @var string
- */
- var $source = '';
- /**
- * flag, determines whether tokens are added to {@link $source}
- * @var boolean
- */
- var $getsource = false;
-
- /**
- * If true, then white space is returned as a part of tokens, otherwise
- * tokens are trimmed
- * @var boolean
- */
- var $returnWhiteSpace = false;
- /**#@-*/
-
- /**
- * Initialize the WordParser
- * @param string source code
- */
- function setup(&$input)
- {
- $this->size = strlen($input);
- $this->data = & $input;
- $this->pos = 0;
- $this->linenum = 0;
- $this->linenumpos = 0;
- $this->cache = array();
- //$this->run = 0;
- //$this->word = WORD_PARSER_RET_WORD;
- }
-
- /**
- * Retrieve source code for the last function/method
- * @return string
- */
- function getSource()
- {
- $source = $this->source;
- $this->source = '';
- $this->getsource = false;
- return $source;
- }
-
- /**
- * Used to tell the WordParser to start retrieving source code
- * @access private
- */
- function retrievesource($word = '')
- {
- $this->source = $word;
- $this->getsource = true;
- }
-
- /**
- * Retrieve a token from the token list
- *
- * The {@link Parser} class relies upon this method to retrieve the next
- * token. The {@link $wordseperators} array is a collection of strings
- * that delineate tokens for the current parser state. $wordseperators
- * is set by the parser with a call to {@link Parser::configWordParser()}
- * every time a new parser state is reached.
- *
- * For example, while parsing the source code for a class, the word
- * <code>var</code> is a token, and <code>global</code> is not,
- * but inside a function, the reverse is true. The parser state
- * {@link PARSER_STATE_CLASS} has a token list that includes whitespace,
- * code delimiters like ; and {}, and comment/DocBlock indicators
- *
- * If the whitespace option has been turned off using
- * {@link setWhitespace()}, then no whitespace is returned with tokens
- *
- * {@internal
- * In the first segment of the function, the code attempts to find the next
- * token. A cache is used to speed repetitious tasks. The $tpos variable
- * is used to hold the position of the next token. $npos is used to
- * hold the end of the token, and so $npos - $tpos will give the length
- * of the token. This is used to allow tokens that contain whitespace,
- * should that option be desired.
- *
- * {@link $data} is of course the string containing the PHP code to be
- * parsed, and {@link $pos} is the cursor, or current location within the
- * parsed data.
- * }}
- * @return string|false the next token, an empty string if there are no
- * token separators in the $wordseperators array,
- * or false if the end of input has been reached
- */
- function getWord()
- {
- //$st = $this->mtime();
- if ($this->size == $this->pos)
- {
- return false;
- }
-
- // assume, for starting, that the token is from $this->pos to the end
- $npos = $this->size;
- if (is_array($this->wordseperators))
- {
- //$this->wordseperators = array();
- foreach($this->wordseperators as $sep)
- {
- // cache is set if this separator has been tested
- if (isset($this->cache[$sep]))
- $tpos = $this->cache[$sep];
- else
- $tpos = false;
- if ($tpos < $this->pos || !is_int($tpos))
- {
- // find the position of the next token separator
- $tpos = strpos($this->data,$sep,$this->pos);
- }
-
- // was a token separator found that is closer to the current
- // location?
- if ( ($tpos < $npos) && !($tpos === false))
- {
- //echo trim($sep) . "=$tpos\n";
- // set the length of the token to be from $this->pos to
- // the next token separator
- $npos = $tpos;
- $seplen = strlen($sep);
- }
- else if (!($tpos === false))
- {
- $this->cache[$sep] = $tpos;
- }
- }
- } else {
- // no token separators, tell the parser to choose a new state
- return "";
- }
-
- $len = $npos - $this->pos;
- if ($len == 0)
- {
- $len = $seplen;
- }
-
- //$st3 = $this->mtime();
- $word = substr($this->data,$this->pos,$len);
-
- // Change random other os newlines to the unix one
- if ($word == "\r" || $word == "\r\n")
- {
- $word = "\n";
- }
-
- if ($this->linenumpos <= $this->pos)
- {
- $this->linenumpos = $this->pos + $len;
- $this->linenum += count(explode("\n",$word)) - 1;
- }
-
- if ($this->getsource)
- {
- $this->source .= $word;
- }
- $this->pos = $this->pos + $len;
- //$this->word = WORD_PARSER_RET_SEP;
-
- // Things like // commenats rely on the newline to find their end so im going to have to return them
- // never return worthless white space /t ' '
- if ($this->returnWhiteSpace == false)
- {
- if (strlen(trim($word)) == 0 && $word != "\n")
- {
- $word = $this->getWord();
- }
- }
- //$this->time3 = $this->time3 + ($this->mtime() - $st3);
- //$this->time = $this->time + ($this->mtime() - $st);
- return $word;
- }
-
-
- /**
- * Returns the current pointer position, or 1 character after the end of the word
- */
- function getPos()
- {
- return $this->pos;
- }
-
- /**
- * Unused
- *
- * {@source}
- * @param integer starting position
- * @param integer length of block to retrieve
- */
- function getBlock($start,$len)
- {
- return substr($this->data,$start,$len);
- }
-
- /**
- * @uses $wordseperators
- * @param array array of strings that separate tokens
- */
- function setSeperator(&$seps)
- {
- $this->wordseperators = &$seps;
- }
-
- /**
- * Set the internal cursor within the source code
- * @param integer
- */
- function setPos($pos)
- {
- $this->pos = $pos;
- }
-
- /**
- * Backup to the previous token so that it can be retrieved again in a new
- * context.
- *
- * Occasionally, a word will be passed to an event handler that should be
- * handled by another event handler. This method allows that to happen.
- * @param string token to back up to
- */
- function backupPos($word)
- {
- if ($this->getsource) $this->source = substr($this->source,0,strlen($this->source) - 1);
- $this->pos = $this->pos - strlen($word);
- }
-
- /**
- * set parser to return or strip whitespace
- * @param boolean
- */
- function setWhitespace($val = false)
- {
- $this->returnWhiteSpace = $val;
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc
deleted file mode 100644
index 59a3f557..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc
+++ /dev/null
@@ -1,554 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.2
- */
-/** when <programlisting> is found */
-define('PHPDOCUMENTOR_PDP_EVENT_PROGRAMLISTING', 600);
-/** when <programlisting> is found */
-define('PHPDOCUMENTOR_PDP_STATE_PROGRAMLISTING', 700);
-/** when a DocBook <tag> is found */
-define('PHPDOCUMENTOR_PDP_EVENT_TAG', 601);
-/** when a DocBook <tag> is found */
-define('PHPDOCUMENTOR_PDP_STATE_TAG', 701);
-/** when <![CDATA[ ]]> is found */
-define('PHPDOCUMENTOR_PDP_EVENT_CDATA', 602);
-/** when <![CDATA[ ]]> is found */
-define('PHPDOCUMENTOR_PDP_STATE_CDATA', 702);
-/** when tag attributes name="value" are found */
-define('PHPDOCUMENTOR_PDP_EVENT_ATTRIBUTES', 603);
-/** when tag attributes name="value" are found */
-define('PHPDOCUMENTOR_PDP_STATE_ATTRIBUTES', 703);
-/** when tag attributes name="value" are found */
-define('PHPDOCUMENTOR_PDP_EVENT_ENTITY', 604);
-/** when tag attributes name="value" are found */
-define('PHPDOCUMENTOR_PDP_STATE_ENTITY', 704);
-
-/**
- * Used to parse XML DocBook-based tutorials
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @since 1.2
- */
-class XMLPackagePageParser extends Parser
-{
- /** @var array */
- var $eventHandlers = array(
- PHPDOCUMENTOR_PDP_EVENT_TAG => 'handleTag',
- PHPDOCUMENTOR_PDP_EVENT_ATTRIBUTES => 'handleAttributes',
- PHPDOCUMENTOR_PDP_EVENT_CDATA => 'handleCData',
- PARSER_EVENT_NOEVENTS => 'defaultHandler',
- PARSER_EVENT_COMMENTBLOCK => 'ignoreHandler',
- PARSER_EVENT_OUTPHP => 'ignoreHandler',
- PARSER_EVENT_QUOTE => 'handleQuote',
- PHPDOCUMENTOR_PDP_EVENT_ENTITY => 'handleEntity',
- );
-
- /**
- * @var array
- */
- var $pars = array();
-
- var $refsect1id = false;
- var $refsect2id = false;
- var $refsect3id = false;
- /**
- * @var array the tag stack
- */
- var $context;
- /**#@+ @access private */
- var $_gettoc = false;
- var $_toc = array();
- var $_cursection = 0;
- /**#@-*/
- /**
- * Set up the wordparser
- *
- * {@source}
- * @uses ObjectWordParser
- */
- function XMLPackagePageParser()
- {
- $this->wp = new ObjectWordParser(true);
- }
- /**
- * Parse a new file
- *
- * @param string $parse_data
- * @param array $tutorial for format, see {@link Io::getTutorials()}
- * @staticvar integer used for recursion limiting if a handler for an event is not found
- * @return bool
- * @uses parserTutorial using {@link Publisher::PublishEvent()}, a new tutorial
- * is created from the file parsed, and passed to the
- * Intermediate Parser
- */
- function parse ($parse_data, $tutorial)
- {
- $tempparse = new ppageParser;
- $parse_data = $tempparse->parse($parse_data,true,$tutorial['package'],$tutorial['subpackage'],
- basename($tutorial['path']),$tutorial['category'], $tutorial['path']);
- unset($tempparse);
- static $endrecur = 0;
- if (!is_array($parse_data) || count($parse_data) == 0)
- {
- return false;
- }
- $this->setupStates();
-
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
- $this->p_vars['start'] = true;
- $this->p_vars['event_stack'] = new EventStack;
-
- $this->wp->setup($parse_data,false);
- $this->wp->setWhitespace(true);
- $this->context = array();
- if (isset($this->curtag)) unset($this->curtag);
-
- do
- {
- $lpevent = $pevent;
- $pevent = $this->p_vars['event_stack']->getEvent();
- if ($lpevent != $pevent)
- {
- $this->p_vars['last_pevent'] = $lpevent;
- }
-
- if ($this->p_vars['last_pevent'] != $pevent)
- {
- // its a new event so the word parser needs to be reconfigured
- $this->configWordParser($pevent);
- }
-
-
- $this->p_vars['last_word'] = $word;
- $word = $this->wp->getWord();
-
- if (0)//PHPDOCUMENTOR_DEBUG == true)
- {
- echo "----------------\n";
- echo "LAST: |" . $this->p_vars['last_word'] . "|\n";
-// echo "INDEX: ".$this->p_vars['curpar']."\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo "LASTPEVENT: " . $this->getParserEventName($this->p_vars['last_pevent']) . "\n";
- echo $this->wp->getPos() . " WORD: |$word|\n\n";
-// echo '"'.$this->p_vars['quote_data']."\"\n";
- }
- if (isset($this->eventHandlers[$pevent]))
- {
- $handle = $this->eventHandlers[$pevent];
- if ($word !== false) $this->$handle($word, $pevent);
- } else
- {
- debug('WARNING: possible error, no XMLPackagePageParser handler for event number '.$pevent);
- if ($endrecur++ == 25)
- {
- die("FATAL ERROR, recursion limit reached");
- }
- }
- $this->p_vars['start'] = false;
- } while (!($word === false));
- if (count($this->_toc) && isset($this->p_vars['toc']))
- {
- $a = $this->curtag->getTOC($this->p_vars['toc']);
- $a->setTOC($this->_toc);
- $a->setPath($tutorial['path']);
- $this->curtag->setTOC($this->p_vars['toc'],$a);
- }
- $this->PublishEvent(PHPDOCUMENTOR_EVENT_TUTORIAL,new parserTutorial($this->curtag, $tutorial));
- return $this->curtag;
- }
-
- /**#@+
- * @access private
- * @param string|parserInlineTag token
- * @param integer parser event
- */
- function defaultHandler($word, $pevent)
- {
- if (is_string($word) && $this->checkEventPush($word, $pevent))
- {
- return;
- }
- }
-
- function ignoreHandler($word, $pevent)
- {
- $this->checkEventPop($word, $pevent);
- }
-
- /**
- * handler for QUOTE.
- * this handler recognizes strings defined with double quotation marks (") and handles them correctly
- * in any place that they legally appear in php code
- */
-
- function handleQuote($word, $pevent)
- {
- if ($this->p_flags['reset_quote_data'] === true)
- {
- $this->p_flags['reset_quote_data'] = false;
- $this->p_vars['quote_data'] = "";
- }
- if (!is_object($word)) $this->checkEventPush( $word, $pevent);
- if ($word != "\"")
- {
- if (is_object($word))
- {
- $this->p_vars['quote_data'] = $word;
- }
- else
- {
- if (!is_object($this->p_vars['quote_data']))
- $this->p_vars['quote_data'] .= $word;
- }
- }
- if (!is_object($word))
- {
- if ($word == '>')
- {
- if (is_object($this->p_vars['quote_data'])) $this->p_vars['quote_data'] = '{@id '.$this->p_vars['quote_data']->id.'}';
- addErrorDie(PDERROR_UNTERMINATED_ATTRIB,$this->curtag->name,$this->p_vars['attrname'],$this->p_vars['quote_data']);
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->p_flags['reset_quote_data'] = true;
- }
- }
- }
-
- /**
- * Handles all XML DocBook tags
- */
- function handleTag($word, $pevent)
- {
- if (isset($this->curtag) && $this->curtag->hasTitle() && $this->_gettoc && $this->_gettoc->name == $this->curtag->name)
- {
- if (isset($this->_toc[$this->_cursection]))
- {
- $this->_toc[$this->_cursection]['title'] = $this->curtag->_title;
- $this->_cursection++;
- }
- $this->_gettoc = false;
- }
- if ($this->p_vars['last_word'] == '<')
- { // get tag name
- $this->p_flags['begin_tag'] = true;
- array_push($this->context,$word);
-// if (isset($this->curtag)) debug("pushed ".$this->curtag->name);
- if (isset($this->curtag))
- {
- array_push($this->pars,$this->curtag);
- }
- $this->curtag = new parserXMLDocBookTag($word);
- } elseif ($this->p_vars['last_word'] == '</' || $word == '/>')
- {
- $tag = array_pop($this->context);
- if ($word == '/>') {
- // all is OK
- $this->checkEventPop($word, $pevent);
- $word = $tag;
- }
- if ($tag != $word)
- {
- addErrorDie(PDERROR_UNMATCHED_TUTORIAL_TAG,$tag,$word,$this->curtag->getString());
- }
- if (in_array($this->curtag->name, array('refentry', 'refsect1', 'refsect2', 'refsect3')))
- {
- if (!isset($this->curtag->_id))
- {
- $title = '';
- if (isset($this->curtag->_title))
- {
- $title = $this->curtag->_title->getString();
- }
- addWarning(PDERROR_NO_DOCBOOK_ID, $this->curtag->name, $title);
- }
- }
- $this->p_flags['begin_tag'] = false;
- $curtag = @array_pop($this->pars);
-// debug("popped $tag ".$curtag->name.' I am '.$this->curtag->name);
- if ($curtag)
- {
- if ($this->curtag->name == 'refsect1') $this->refsect1id = false;
- if ($this->curtag->name == 'refsect2') $this->refsect2id = false;
- if ($this->curtag->name == 'refsect3') $this->refsect3id = false;
- $curtag->add($this->curtag);
-// debug("added ".$this->curtag->name." to ".$curtag->name.' '.$curtag->id);
- $this->curtag = $curtag;
- } else
- {
-// debug("here");
- }
- } elseif (is_string($word))
- {
- if (!($e = $this->checkEventPush($word, $pevent)))
- {
- if ($this->checkEventPop($word, $pevent))
- {
- if ($this->p_flags['begin_tag'])
- {
- $this->p_vars['event_stack']->pushEvent(PHPDOCUMENTOR_PDP_EVENT_TAG);
- $this->p_vars['event_stack']->pushEvent(PHPDOCUMENTOR_PDP_EVENT_CDATA);
- $this->p_vars['last_tag'] = array_pop($this->context);
- array_push($this->context,$this->p_vars['last_tag']);
- $this->p_flags['in_cdata'] = false;
- }
- return;
- }
- } else
- {
- $this->p_flags['start_attr'] = true;
- $this->p_flags['end_attr'] = false;
- }
- } else addErrorDie(PDERROR_CANT_HAVE_INLINE_IN_TAGNAME);
- }
-
- /**
- * Handle CData sections
- */
- function handleCData($word, $pevent)
- {
- if ($this->curtag->name == 'refentry' && phpDocumentor_get_class($word) == 'parsertocinlinetag')
- {
- $this->p_vars['toc'] = $this->curtag->getTOC();
- }
- if (is_string($word) && !$this->p_flags['in_cdata'])
- {
- if ($this->checkEventPop($word, $pevent))
- {
- return;
- }
- if ($this->checkEventPush($word, $pevent))
- {
- return;
- }
- }
- if ($word == '<![CDATA[')
- {
- $this->curtag->startCData();
- $this->p_flags['in_cdata'] = true;
- } elseif ($this->p_flags['in_cdata'] && $word == ']]>')
- {
- $this->curtag->endCData();
- $this->p_flags['in_cdata'] = false;
- } else
- {
- if ($this->p_flags['in_cdata'])
- $this->curtag->addCData($word);
- else
- $this->curtag->add($word);
- }
- }
-
- /**
- * Handle Entities like &rdquo;
- */
- function handleEntity($word, $pevent)
- {
- if (!$word)
- {
- if (!isset($this->p_vars['entity_name']))
- $this->p_vars['entity_name'] = '';
- addErrorDie(PDERROR_UNTERMINATED_ENTITY,$this->p_vars['entity_name']);
- }
- $e = $this->checkEventPop($word, $pevent);
- if ($word && !$e) $this->p_vars['entity_name'] = $word;
- if ($e)
- {
- $entity = new parserEntity($this->p_vars['entity_name']);
- unset($this->p_vars['entity_name']);
- $this->curtag->add($entity);
- }
- }
-
- /**
- * Handle Tag attributes name="value"
- */
- function handleAttributes($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent)) return;
- if ($word == '=')
- {
- $this->p_flags['start_attr'] = false;
- $this->p_vars['end_attr'] = true;
- } else
- {
- if ($this->p_flags['start_attr'])
- {
- $this->p_vars['attrname'] = $word;
- } else
- {
- if (isset($this->p_vars['attrname']))
- {
- $value = $this->p_vars['quote_data'];
- if (phpDocumentor_get_class($value) == 'parseridinlinetag')
- { // "inherit" the parent section's id, so
- // <refsect1 id="{@id test"}> <!-- id is 'test' -->
- // ...
- // <refsect2 id="{@id me}"> <!-- id is 'test.me' -->
- // ...
- // <refsect3 id="{@id out}"> <!-- id is 'test.me.out' -->
- // <example id="{@id withexample}"> <!-- id is 'test.me.out.withexample' -->
- $a = ($this->refsect1id ? $this->refsect1id . '.' : '');
- $a .= ($this->refsect2id ? $this->refsect2id . '.' : '');
- $a .= ($this->refsect3id ? $this->refsect3id . '.' : '');
- if ($this->curtag->name == 'refsect1')
- {
- $this->refsect1id = $value->id;
- }
- if ($this->curtag->name == 'refsect2')
- {
- $this->refsect2id = $value->id;
- }
- if ($this->curtag->name == 'refsect3')
- {
- $this->refsect3id = $value->id;
- }
-// debug($value->id.' is now '.$a.$value->id);
- $value->id = $a . $value->id;
- if ($value->id != '')
- {
- if (isset($this->_toc[$this->_cursection]))
- {
- $this->_cursection++;
- }
- $this->_toc[$this->_cursection]['id'] = $value;
- $this->_toc[$this->_cursection]['tag'] = new parserXMLDocBookTag($this->curtag->name);
-// debug("set gettoc to ".$this->curtag->name .' '. $value->id);
- $this->_gettoc = $this->curtag;
- }
- }
- $this->curtag->addAttribute($this->p_vars['attrname'],$value);
- unset($this->p_vars['attrname']);
- $this->p_flags['end_attr'] = false;
- }
- }
- }
- if (is_string($word) && $this->checkEventPop($word, $pevent))
- {
- $this->p_flags['start_attr'] = true;
- $this->p_flags['end_attr'] = false;
- $this->wp->setPos($this->wp->getPos() - strlen($word));
- }
- }
- /**#@-*/
-
- /**
- * setup the parser tokens, and the pushEvent/popEvent arrays
- * @see $tokens, $pushEvent, $popEvent
- */
-
- function setupStates()
- {
- $this->_gettoc = false;
- $this->_toc = array();
- $this->_cursection = 0;
- if (isset($this->p_vars['toc'])) unset($this->p_vars['toc']);
-
- $this->tokens[STATE_NOEVENTS] = array('</','<','<!--','<?');
- $this->tokens[STATE_COMMENTBLOCK] = array('-->');
- $this->tokens[STATE_OUTPHP] = array('?>');
- $this->tokens[STATE_QUOTE] = array("\\\"","\\\\","\"",'>');
- $this->tokens[STATE_ESCAPE] = false;// this tells the word parser to just cycle
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_TAG] = array('>',' ','/>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_CDATA] = array('&','<!--','</','<![CDATA[','<',']]>');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_ATTRIBUTES] = array('=','>','/>','"');
- $this->tokens[PHPDOCUMENTOR_PDP_STATE_ENTITY] = array(';');
-
- // For each event word to event mapings
- $this->pushEvent[PARSER_EVENT_NOEVENTS] =
- array(
- "<" => PHPDOCUMENTOR_PDP_EVENT_TAG,
- "</" => PHPDOCUMENTOR_PDP_EVENT_TAG,
- '<!--' => PARSER_EVENT_COMMENTBLOCK,
- '<?' => PARSER_EVENT_OUTPHP,
- '&' => PHPDOCUMENTOR_PDP_EVENT_ENTITY,
- );
-##########################
-
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_TAG] =
- array(
- ' ' => PHPDOCUMENTOR_PDP_EVENT_ATTRIBUTES,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_TAG] = array(">","/>");
-##########################
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_ATTRIBUTES] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- );
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_ATTRIBUTES] = array(">","/>");
-##########################
-
- $this->popEvent[PARSER_EVENT_COMMENTBLOCK] = array("-->");
-##########################
- $this->pushEvent[PARSER_EVENT_QUOTE] =
- array(
- "\\" => PARSER_EVENT_ESCAPE
- );
- $this->popEvent[PARSER_EVENT_QUOTE] = array("\"");
-##########################
-
- $this->popEvent[PARSER_EVENT_OUTPHP] = array("?>");
-##########################
-
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_ENTITY] = array(";");
-##########################
-
- $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_CDATA] =
- array(
- "<" => PHPDOCUMENTOR_PDP_EVENT_TAG,
- '<!--' => PARSER_EVENT_COMMENTBLOCK,
- '<?' => PARSER_EVENT_OUTPHP,
- '&' => PHPDOCUMENTOR_PDP_EVENT_ENTITY,
- );
- $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_CDATA] = array("</");
- }
-
- /**
- * debugging function
- *
- * {@source}
- * @static
- */
- function getParserEventName ($value)
- {
- $lookup = array(
- PARSER_EVENT_NOEVENTS => "PARSER_EVENT_NOEVENTS",
- PHPDOCUMENTOR_PDP_EVENT_TAG => "PHPDOCUMENTOR_PDP_EVENT_TAG",
- PHPDOCUMENTOR_PDP_EVENT_ATTRIBUTES => "PHPDOCUMENTOR_PDP_EVENT_ATTRIBUTES",
- PHPDOCUMENTOR_PDP_EVENT_CDATA => "PHPDOCUMENTOR_PDP_EVENT_CDATA",
- PHPDOCUMENTOR_PDP_EVENT_LIST => "PHPDOCUMENTOR_PDP_EVENT_LIST",
- PARSER_EVENT_QUOTE => "PARSER_EVENT_QUOTE",
- PHPDOCUMENTOR_PDP_EVENT_ENTITY => "PHPDOCUMENTOR_PDP_EVENT_ENTITY",
- );
- if (isset($lookup[$value]))
- return $lookup[$value];
- else return $value;
- }
-}
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php b/buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php
deleted file mode 100644
index fbc308ef..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-/**
- * Clone an object in PHP 4
- * @param object
- * @return object
- */
-function phpDocumentor_clone($obj)
-{
- return $obj;
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php b/buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php
deleted file mode 100644
index 20919a99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-/**
- * Clone an object in PHP 5
- * @param object
- * @return object
- * @ignore
- */
-function phpDocumentor_clone($obj)
-{
- return clone $obj;
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/common.inc.php b/buildscripts/PhpDocumentor/phpDocumentor/common.inc.php
deleted file mode 100644
index f86ed5da..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/common.inc.php
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Common variables/functions used by other files in phpDocumentor
- * @package phpDocumentor
- * @filesource
- */
-/** phpDocumentor version */
-if ('@VER@' != '@'.'VER@')
-{
- define("PHPDOCUMENTOR_VER","@VER@");
-} else {
- define("PHPDOCUMENTOR_VER","1.3.0RC4");
-}
-/** phpDocumentor version */
-define("PHPDOCUMENTOR_WEBSITE","http://www.phpdoc.org");
-define('SMART_PATH_DELIMITER', DIRECTORY_SEPARATOR ); // set the correct path delimiter
-define('tokenizer_ext', extension_loaded('tokenizer') && version_compare(phpversion(),"4.3.0",">="));
-// we just replace all the \ with / so that we can just operate on /
-define('PATH_DELIMITER', '/' ); // set the correct path delimiter
-define('PHPDOCUMENTOR_WINDOWS',substr(PHP_OS, 0, 3) == 'WIN');
-define('_IN_PHP5', phpversion() == '5.0.0RC1-dev' || phpversion() == '5.0.0RC2-dev' ||
- version_compare(phpversion(), '5.0.0', 'ge'));
-if (/*@donotremove@*/0)
-{
- if (_IN_PHP5) {
- require_once 'PhpDocumentor/phpDocumentor/clone5.inc.php';
- } else {
- require_once 'PhpDocumentor/phpDocumentor/clone.inc.php';
- }
-} else {
- if (_IN_PHP5) {
- require_once dirname(__FILE__) . '/clone5.inc.php';
- } else {
- require_once dirname(__FILE__) . '/clone.inc.php';
- }
-}
-if (isset($_SERVER['argv'])) {
- $argv = $_SERVER['argv'];
- $argc = $_SERVER['argc'];
-}
-
-/** used in phpdoc.php and new_phpdoc.php */
-function phpDocumentor_ConfigFileList($directory)
-{
- $ret = array();
- if (@is_dir($directory))
- {
- $ret = array();
- $d = @dir($directory); // thanks to Jason E Sweat (jsweat@users.sourceforge.net) for fix
- while($d && $entry=$d->read())
- {
- $getentry = false;
- if (strcmp($entry,".") != 0 && strcmp($entry,"..") != 0)
- {
- if (substr($entry,0,1) != ".") $getentry = true;
- }
- if ($getentry == true)
- {
- if (strpos($entry,'.ini'))
- if (is_file($directory . PATH_DELIMITER . $entry))
- {
- $ret[] = str_replace('.ini','',$entry);
- }
- }
- }
- if ($d) $d->close();
- } else
- {
- }
- return $ret;
-}
-
-
-/**
- * Parse an .ini file
- *
- * Works like {@link parse_ini_file}, except it will take a section like:
- *
- * <pre>
- * [MYVAR]
- * value1
- * value2
- * value3
- * </pre>
- *
- * and return an associative array(MYVAR => array(value1, value2, value3))
- * @return array
- * @param string full path to the ini file
- * @param boolean add an associative index for each section [in brackets]
- */
-function phpDocumentor_parse_ini_file($filename, $process_sections = false)
-{
- $ini_array = array();
- $sec_name = "";
- $lines = @file($filename);
- if( !$lines) return $lines;
- foreach($lines as $line)
- {
- // code by Greg Beaver, ignore comments
- if ($line[0] == ';') continue;
- $line = trim($line);
-
- if($line == "")
- {
- continue;
- }
- if($line[0] == "[" && $line[strlen($line) - 1] == "]")
- {
- $sec_name = substr($line, 1, strlen($line) - 2);
- } else
- {
- if (strpos($line,"="))
- {
- $pos = strpos($line, "=");
- $property = trim(substr($line, 0, $pos));
- // code by Greg Beaver
- if (substr($property, 0, 1) == '"' && substr($property, -1) == '"') {
- $property = stripcslashes(substr($property,1,count($property) - 2));
- }
- $value = trim(substr($line, $pos + 1));
- if ($value == 'false') $value = false;
- if ($value == 'true') $value = true;
- if (substr($value, 0, 1) == '"' && substr($value,-1) == '"')
- {
- $value = stripcslashes(substr($value,1,count($value) - 2));
- }
- // done additions
-
- if($process_sections)
- {
- if ($sec_name != '')
- $ini_array[$sec_name][$property] = $value;
- else
- $ini_array[$property] = $value;
- } else
- {
- $ini_array[$property] = $value;
- }
- } else
- {
- // code by Greg Beaver
- if (trim($line[0]) == ';') continue;
- if($process_sections)
- {
- $ini_array[$sec_name][] = trim($line);
- }
- // done additions
- }
- }
- }
- return $ini_array;
-}
-
-
-if (!function_exists('array_key_exists'))
-{
-/** @ignore */
-function array_key_exists($key, $search)
-{
- foreach($search as $keys => $nul)
- {
- if ($key == $keys) return true;
- }
- return false;
-}
-}
-if (!function_exists('is_a'))
-{
-/** @ignore */
-function is_a($classname, $classquery)
-{
- $father = get_parent_class($classname);
- if (strtolower($father) == strtolower($classquery))
- {
- return true;
- } elseif (!empty($father))
- {
- return is_a($father, $classquery);
- } else
- {
- return false;
- }
-}
-}
-
-
-/** Debugging output */
-function debug($s)
-{
- echo "$s\n";
-}
-
-/**
- * Returns a formatted var_dump for debugging purposes.
- * @param string $s string to display
- * @param mixed $v variable to display with var_dump()
- * @param mixed $v... unlimited number of additional variables to display with var_dump()
- */
-function fancy_debug($s,$v)
-{
- if (isset($GLOBALS['dont_debug']) && $GLOBALS['dont_debug']) return;
- debug($s."\n\n</pre><blockquote><pre>");
- var_dump($v);
- if (func_num_args()>2)
- {
- for($i=2;$i<func_num_args();$i++)
- {
- $a = func_get_arg($i);
-// debug(" ");
- var_dump($a);
- }
- }
- debug("</pre></blockquote><pre>\n\n");
-}
-
-/**
- * Returns a lower-cased version of get_class for PHP 5
- *
- * get_class() returns case as declared in the file in PHP 5
- */
-function phpDocumentor_get_class($object)
-{
- if(is_object($object))
- return strtolower(get_class($object));
- return false;
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/find_phpdoc.php b/buildscripts/PhpDocumentor/phpDocumentor/find_phpdoc.php
deleted file mode 100644
index 031a4796..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/find_phpdoc.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * Utility file: used to find location of phpDocumentor
- * @filesource
- * @package phpDocumentor
- * @subpackage setup
- */
-/**
- * Dummy value
- */
-//@include('');
-// value used to test whether include worked
-return 6;
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc
deleted file mode 100644
index 24a816e9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc
+++ /dev/null
@@ -1,2615 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@users.sourceforge.net>
- * @version $Revision: 1.2 $
- */
-/**
- * Tokenizer-based parser for PHP source code
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@users.sourceforge.net>
- * @version $Revision: 1.2 $
- */
-class phpDocumentorTParser extends Parser
-{
- /**#@+
- * @access private
- */
- /**
- * @var EventStack
- */
- var $_event_stack;
- /**
- * last event triggered before the current event
- * @var integer
- */
- var $_last_pevent;
- /**
- * last word parsed
- * @var integer
- */
- var $_last_word;
- /**
- * full path of the currently parsed file
- * @var string
- */
- var $_path;
- /**#@-*/
- /**#@+
- * Parser Variables
- * @access private
- */
- var $_pv_class;
- var $_pv_cur_class;
- var $_pv_define;
- var $_pv_define_name;
- var $_pv_define_value;
- var $_pv_define_params_data;
- var $_pv_dtype;
- var $_pv_docblock;
- var $_pv_dtemplate;
- var $_pv_func;
- var $_pv_findglobal;
- var $_pv_global_name;
- var $_pv_global_val;
- var $_pv_globals;
- var $_pv_global_count;
- var $_pv_include_params_data;
- var $_pv_include_name;
- var $_pv_include_value;
- var $_pv_linenum;
- var $_pv_periodline;
- var $_pv_paren_count = 0;
- var $_pv_statics;
- var $_pv_static_count;
- var $_pv_static_val;
- var $_pv_quote_data;
- var $_pv_function_data;
- var $_pv_var;
- var $_pv_varname;
- var $_pv_var_value;
- /**#@-*/
- /**#@+
- * Parser Flags
- * @access private
- */
- var $_pf_definename_isset = false;
- var $_pf_includename_isset = false;
- var $_pf_get_source = false;
- var $_pf_getting_source = false;
- var $_pf_internal = false;
- var $_pf_in_class = false;
- var $_pf_in_define = false;
- var $_pf_in_global = false;
- var $_pf_in_include = false;
- var $_pf_in_var = false;
- var $_pf_funcparam_val = false;
- var $_pf_quote_active = false;
- var $_pf_reset_quote_data = true;
- var $_pf_useperiod = false;
- var $_pf_set_var_value = false;
- var $_pf_var_equals = false;
- /**#@-*/
- /**
- * relative path of the parsed file from the base parse directory
- * @var string
- */
- var $source_location;
- var $eventHandlers = array(
- PARSER_EVENT_ARRAY => 'handleArray',
- PARSER_EVENT_VAR_ARRAY => 'handleArray',
- PARSER_EVENT_VAR_ARRAY_COMMENT => 'handleVarArrayComment',
- PARSER_EVENT_CLASS => 'handleClass',
- PARSER_EVENT_COMMENT => 'handleComment',
- PARSER_EVENT_DOCBLOCK_TEMPLATE => 'handleDocBlockTemplate',
- PARSER_EVENT_END_DOCBLOCK_TEMPLATE => 'handleEndDocBlockTemplate',
- PARSER_EVENT_LOGICBLOCK => 'handleLogicBlock',
- PARSER_EVENT_NOEVENTS => 'defaultHandler',
- PARSER_EVENT_OUTPHP => 'defaultHandler',
- PARSER_EVENT_DEFINE => 'handleDefine',
- PARSER_EVENT_DEFINE_PARAMS => 'handleDefineParams',
- PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS => 'handleDefineParamsParenthesis',
- PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS => 'handleIncludeParamsParenthesis',
- PARSER_EVENT_DOCBLOCK => 'handleDocBlock',
- PARSER_EVENT_TAGS => 'handleTags',
- PARSER_EVENT_DESC => 'handleDesc',
- PARSER_EVENT_DOCKEYWORD => 'handleTag',
- PARSER_EVENT_DOCKEYWORD_EMAIL => 'handleDockeywordEmail',
- PARSER_EVENT_EOFQUOTE => 'handleHereDoc',
- PARSER_EVENT_FUNCTION => 'handleFunction',
- PARSER_EVENT_FUNCTION_PARAMS => 'handleFunctionParams',
- PARSER_EVENT_FUNC_GLOBAL => 'handleFuncGlobal',
- PARSER_EVENT_DEFINE_GLOBAL => 'handleGlobal',
- PARSER_EVENT_GLOBAL_VALUE => 'handleGlobalValue',
- PARSER_EVENT_INLINE_DOCKEYWORD => 'handleInlineDockeyword',
- PARSER_EVENT_INCLUDE => 'handleInclude',
- PARSER_EVENT_INCLUDE_PARAMS => 'handleIncludeParams',
- PARSER_EVENT_QUOTE => 'handleQuote',
- PARSER_EVENT_PHPCODE => 'handlePhpCode',
- PARSER_EVENT_SINGLEQUOTE => 'handleSingleQuote',
- PARSER_EVENT_STATIC_VAR => 'handleStaticVar',
- PARSER_EVENT_STATIC_VAR_VALUE => 'handleStaticValue',
- PARSER_EVENT_VAR => 'handleVar',
- PARSER_EVENT_ACCESS_MODIFIER => 'handleAccessModifier',
- PARSER_EVENT_IMPLEMENTS => 'handleImplements',
- PARSER_EVENT_CLASS_CONSTANT => 'handleClassConstant',
- );
-
- var $inlineTagHandlers = array(
- '*' => 'handleDefaultInlineTag',
- 'link' => 'handleLinkInlineTag',
- );
-
- function phpDocumentorTParser()
- {
- $this->allowableTags = $GLOBALS['_phpDocumentor_tags_allowed'];
- $this->allowableInlineTags = $GLOBALS['_phpDocumentor_inline_doc_tags_allowed'];
- $this->subscribe(PHPDOCUMENTOR_EVENT_NEWLINENUM,$GLOBALS['phpDocumentor_errors']);
- $this->subscribe(PHPDOCUMENTOR_EVENT_NEWFILE,$GLOBALS['phpDocumentor_errors']);
- $this->tagHandlers['author'] = 'authorTagHandler';
- $this->tagHandlers['filesource'] = 'filesourceTagHandler';
- $this->setupEventStates();
- }
-
- /**
- * Parse a new file
- *
- * @param string $parse_data
- * @param string $path
- * @param int $base number of directories to drop off the bottom when creating names using path
- * @staticvar integer used for recursion limiting if a handler for an event is not found
- * @return bool
- */
- function parse (&$parse_data, $path, $base = 0, $packages = false)
- {
- global $_phpDocumentor_options;
- static $endrecur = 0;
- $this->setupStates();
- if (strlen($parse_data) == 0)
- {
- return false;
- }
-
- $this->configWordParser($parse_data);
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
-
- $page = new ParserPage;
- $page->setSource($this->_wp->getFileSource());
- $page->setPath($path);
- $this->_path = $path;
- $page->setPackageOutput($packages);
- $page->setFile(basename($path));
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWFILE,basename($path));
- //$name = str_replace("/","_",dirname($path)) . "_" . array_shift(explode(".",$page->getFile()));
- // fc@fc.clever-soft.com 11/29/2001
- $name = str_replace(PATH_DELIMITER,"_",dirname($path)) . "_" . str_replace(".","_",$page->getFile());
- $tmp = explode("_",$name);
- $name = str_replace(':','_',implode("_",array_slice($tmp,$base)));
- // if base is '', drive letter is present in windows
-
- $page->setName($name);
- $temploc = $_phpDocumentor_options['Program_Root'] . PATH_DELIMITER. implode(PATH_DELIMITER,
- array_slice(explode(PATH_DELIMITER,$path),$base));
-
- if ($temploc == $_phpDocumentor_options['Program_Root'] . PATH_DELIMITER) $temploc .= $path;
-
- $this->source_location = $source_location = $temploc;
- $page->setSourceLocation($source_location);
-
- $this->publishEvent(PHPDOCUMENTOR_EVENT_PAGE,$page);
- unset($page);
- do
- {
- $lpevent = $pevent;
- $pevent = $this->_event_stack->getEvent();
- if ($lpevent != $pevent)
- {
- $this->_last_pevent = $lpevent;
- }
-
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,($pevent + 100));
-
- $this->_pv_last_word = $word;
- $word = $this->_wp->getWord();
- if (isset($this->_pv_findglobal) && $word == $this->_pv_findglobal)
- {
- $this->_last_pevent = $pevent;
- $this->_event_stack->pushEvent($pevent = PARSER_EVENT_DEFINE_GLOBAL);
- }
- // in wordparser, have to keep track of lines
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWLINENUM, $this->_wp->linenum);
- if ($this->_pf_get_source)
- {
- if ($word[0] == T_FUNCTION)
- {
- $this->_wp->retrievesource($word);
- $this->_pf_get_source = false;
- $this->_pf_getting_source = true;
- }
- }
-
- if (0)//PHPDOCUMENTOR_DEBUG == true)
- {
- echo "LAST: ";
- if (is_array($this->_pv_last_word))
- {
- echo token_name($this->_pv_last_word[0]). ' => |'.htmlspecialchars($this->_pv_last_word[1]);
- } else echo "|" . $this->_pv_last_word;
- echo "|\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo "LASTPEVENT: " . $this->getParserEventName($this->_last_pevent) . "\n";
- echo $this->_wp->getPos() . ": ";
- if (is_array($word))
- {
- echo token_name($word[0]).' => |'.htmlspecialchars($word[1]);
- } else echo '|'.htmlspecialchars($word);
- echo "|\n-------------------\n\n\n";
- }
- if (0)//$this->_pf_getting_source && ($pevent == PARSER_EVENT_DOCBLOCK) || ($pevent == PARSER_EVENT_NOEVENTS))
- {
- addError(PDERROR_SOURCE_TAG_FUNCTION_NOT_FOUND);
- // throw away source
- $this->_wp->getSource();
- }
- if (isset($this->eventHandlers[$pevent]))
- {
- $handle = $this->eventHandlers[$pevent];
- $this->$handle($word, $pevent);
- } else
- {
- debug('WARNING: possible error, no handler for event number '.$pevent);
- if ($endrecur++ == 25)
- {
- die("FATAL ERROR, recursion limit reached");
- }
- }
- } while (!($word === false));
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,PHPDOCUMENTOR_EVENT_END_PAGE);
- }
-
- /**#@+
- * @access private
- */
- /**
- * handler for COMMENT
- */
- function handleComment($word, $pevent)
- {
- $this->_wp->backupPos();
- $this->_event_stack->popEvent();
- }
- /**
- * handler for PHPCODE.
- * this handler recognizes the <code><?</code> php processor directive, and begins parsing php code
- */
-
- function handlePhpCode($word, $pevent)
- {
- $e = $this->checkEventPush( $word, $pevent);
- if (isset($this->_pv_findglobal) && $e)
- {
- if ($e != PARSER_EVENT_DEFINE_GLOBAL && $e != PARSER_EVENT_ARRAY && $e != PARSER_EVENT_QUOTE && $e != PARSER_EVENT_SINGLEQUOTE && $e != PARSER_EVENT_COMMENT && $e != PARSER_EVENT_COMMENTBLOCK)
- {
- addError(PDERROR_GLOBAL_NOT_FOUND,$this->_pv_findglobal);
- $this->_wp->findGlobal(false);
- unset($this->_pv_findglobal);
- }
- }
- }
-
- /**
- * handler for FUNC_GLOBAL.
- * this handler recognizes "global $var1, $var2" declarations in a function, and parses them
- */
-
- function handleFuncGlobal($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent))
- {
- return;
- }
- if (!$this->checkEventPush($word, $pevent))
- {
- if ($word == ',')
- { // another variable
- $this->_pv_global_count++;
- } else
- {
- if (!isset($this->_pv_globals[$this->_pv_global_count]))
- $this->_pv_globals[$this->_pv_global_count] = '';
-// if (!empty($this->_pv_globals[$this->_pv_global_count])) $this->_pv_global_count++;
- if (is_array($word)) $word = $word[1];
- $this->_pv_globals[$this->_pv_global_count] .= $word;
- }
- }
- }
-
- /**
- * handler for STATIC_VAR.
- * this handler recognizes "static $var1, $var2 = 6" declarations in a function, and parses them
- */
-
- function handleStaticVar($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent))
- {
- $this->_pv_static_count++;
- return;
- }
- if (!$this->checkEventPush($word, $pevent))
- {
- if ($word == ',')
- {
- $this->_pv_static_count++;
- return;
- }
- if (!isset($this->_pv_statics[$this->_pv_static_count]))
- $this->_pv_statics[$this->_pv_static_count] = '';
- if (!empty($this->_pv_statics[$this->_pv_static_count])) $this->_pv_static_count++;
- if (is_array($word)) $word = $word[1];
- $this->_pv_statics[$this->_pv_static_count] = $word;
- }
- }
-
- /**
- * handler for STATIC_VAR_VALUE.
- * this handler parses the 6 in "static $var1, $var2 = 6"
- */
-
- function handleStaticValue($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent))
- {
- return;
- }
- if (!isset($this->_pv_static_val[$this->_pv_static_count])) $this->_pv_static_val[$this->_pv_static_count] = '';
- if ($this->_last_pevent == PARSER_EVENT_QUOTE)
- {
- $this->_pv_static_val[$this->_pv_static_count] .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if ($this->_last_pevent == PARSER_EVENT_ARRAY)
- {
- $this->_pv_static_val[$this->_pv_static_count] .= $this->_pv_function_data;
- $this->_pv_function_data = '';
- }
- if ($this->checkEventPop($word, $pevent))
- {
- $this->_pv_static_val[$this->_pv_static_count] = trim($this->_pv_static_val[$this->_pv_static_count]);
- $this->_wp->backupPos($word);
- return;
- } else
- {
- if (is_array($word)) $word = $word[1];
- $this->_pv_static_val[$this->_pv_static_count] .= $word;
- }
- }
-
- /**
- * handler for LOGICBLOCK
- *
- * Logic Blocks are the stuff between { and } in a function/method. A
- * logic block can clearly contain other logic blocks, as in:
- *
- * <code>
- * function test($a)
- * {
- * if (testcondition)
- * { // nested logic block
- * }
- * }
- * </code>
- *
- * So, the exit portion of the logic block handler must check to see if the
- * logic block being exited is the top-level, and it does this by retrieving
- * the last event from the stack. If it is a function (and not a logic block)
- * then it backs up the word parser so that the function will exit properly.
- *
- * {@source 11}
- */
-
- function handleLogicBlock($word, $pevent)
- {
- $a = $this->checkEventPush( $word, $pevent);
- if ($this->checkEventPop($word,$pevent))
- {
- $e = $this->_event_stack->popEvent();
- $this->_event_stack->pushEvent($e);
- if ($e == PARSER_EVENT_FUNCTION)
- {
- $this->_wp->backupPos();
- }
- }
- }
-
- /**
- * handler for FUNCTION.
- * this handler recognizes function declarations, and parses them. The body
- * of the function is parsed by handleLogicBlock()
- * @see handleLogicBlock()
- */
-
- function handleFunction($word, $pevent)
- {
- if ($e = $this->checkEventPush( $word, $pevent))
- {
- $this->_pv_function_data = '';
- if ($e == PARSER_EVENT_FUNCTION_PARAMS && !is_object($this->_pv_func))
- {
- addErrorDie(PDERROR_FUNCTION_HAS_NONAME);
- }
- if ($e == PARSER_EVENT_COMMENT || $e == PARSER_EVENT_COMMENTBLOCK || $e == PARSER_EVENT_FUNCTION_PARAMS) return;
- }
-
- if (!isset($this->_pv_func)) $this->_pv_func = false;
- if (! is_object($this->_pv_func))
- {
- $this->_pv_globals = array();
- $this->_pv_global_count = $this->_pv_static_count = 0;
- if ($this->_pf_in_class)
- {
- $this->_pv_func = new parserMethod($this->_pv_cur_class);
- } else
- {
- $this->_pv_func = new parserFunction;
- }
- if (isset($this->_accessModifiers))
- {
- $this->_pv_func->setModifiers($this->_accessModifiers);
- unset($this->_accessModifiers);
- }
- $this->_pv_func->setLineNumber($this->_wp->linenum + 1);
- if (is_string($word) && $word == '&')
- $this->_pv_func->setReturnsReference();
- if (is_array($word) && $word[0] == T_STRING)
- $this->_pv_func->setName($word[1]);
- } else
- {
- if ($this->_pv_func->getReturnsReference())
- {
- if (is_array($word) && $word[0] == T_STRING)
- {
- $this->_pv_func->setName($word[1]);
- }
- }
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_pv_func->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_func->addGlobals($this->_pv_globals);
- $this->_pv_func->addStatics($this->_pv_statics,$this->_pv_static_val);
- $this->_pv_globals = array();
- $this->_pv_global_count = 0;
- if ($this->_pf_getting_source)
- {
- $x = $this->_wp->getSource();
- $this->_pv_func->addSource($x);
- $this->_pf_get_source = false;
- $this->_pf_getting_source = false;
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_FUNCTION,$this->_pv_func);
- $this->_pv_func = false;
- unset($this->_pv_quote_data); // subtle bug fixed by this, sometimes string
- // from function body was picked up
- // by the next function as a default value
- // for a parameter!
- }
- }
-
- /**
- * Helper function for {@link handleFunctionParams()}
- *
- * This function adds a new parameter to the parameter list
- */
- function endFunctionParam($word)
- {
- if (isset($this->_pv_quote_data))
- {
- $this->_pv_function_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (isset($this->_pv_function_param))
- {
- $this->_pv_func->addParam($this->_pv_function_param,$this->_pv_function_data,
- $this->_pf_funcparam_val, $this->_pv_function_param_type);
- unset($this->_pv_function_param);
- $this->_pv_function_data = '';
- $this->_pf_funcparam_val = false;
- $this->_pv_function_param_type = null;
- }
- }
- /**
- * handler for FUNCTION_PARAMS.
- * this handler recognizes the parameters of a function within parentheses like function(param, param = default_value)
- * and parses them
- * @see endFunctionParam()
- */
-
- function handleFunctionParams($word, $pevent)
- {
- //echo $this->wp->getPos() . ": word=|$word|\t\t\tlastword=|".$this->_pv_last_word."|\n";
- //echo "function_param = '".$this->_pv_function_param."'\n";
- //echo "function_data = '".$this->_pv_function_data."'\n";
- $e1 = $this->checkEventPush( $word, $pevent);
-
- if (!$e1)
- {
- if ($word == ',' || $this->checkEventPop($word,$pevent))
- {
- $this->endFunctionParam($word);
- } elseif ($word == '=')
- {
- $this->_pf_funcparam_val = true;
- } else
- {
- if ($this->_pf_funcparam_val)
- {
- if (isset($this->_pv_quote_data))
- {
- $this->_pv_function_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (is_array($word)) $word = $word[1];
- $this->_pv_function_data .= $word;
- } else
- {
- if (!isset($this->_pv_function_param)) $this->_pv_function_param = '';
- if (is_array($word))
- {
- if ($word[0] == T_STRING)
- {
- $this->_pv_function_param_type = $word[1];
- return;
- }
- $word = $word[1];
- }
- $this->_pv_function_param .= $word;
- }
- }
- } elseif ($e1 == PARSER_EVENT_ARRAY)
- {
- $this->_wp->setWhiteSpace(true);
- }
- }
-
- /**
- * handler for ARRAY.
- * this event handler parses arrays in default values of function and var definitions
- */
-
- function handleArray($word, $pevent)
- {
- $e = $this->checkEventPush( $word, $pevent);
- if ($e) return;
-
- if (!isset($this->_pv_function_data) || (isset($this->_pv_function_data) && empty($this->_pv_function_data)))
- {
- $this->_pv_function_data = "array";
- }
-
- if ($word == '(' && $this->_pv_paren_count++)
- { // need extra parentheses help
- $this->_event_stack->pushEvent($pevent);
- }
- if (is_array($word))
- {
- $this->_pv_function_data .= $word[1];
- } else
- $this->_pv_function_data .= $word;
- //echo "function_data = |$this->_pv_function_data|\n";
-
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_pv_paren_count--;
- $this->_wp->setWhiteSpace(false);
- }
- }
-
- /**
- * handler for HEREDOC in a function logic block.
- * this handler recognizes function declarations, and parses them. The body
- * of the function is parsed by handleLogicBlock()
- * @see handleLogicBlock()
- */
-
- function handleHereDoc($word, $pevent)
- {
- if (is_array($this->_pv_last_word) && $this->_pv_last_word[0] == T_START_HEREDOC)
- {
- $save = $word;
- if (is_array($word)) $word = $word[1];
- $this->_pv_quote_data = $this->_pv_last_word[1] . $word;
- $this->_pf_quote_active = true;
- } elseif (!$this->_pf_quote_active)
- {
- $this->_pv_quote_data = $this->_pv_last_word[1];
- $this->_event_stack->popEvent();
- $this->_wp->backupPos();
- return;
- }
- $save = $word;
- if (is_array($word)) $word = $word[1];
- $this->_pv_quote_data .= $word;
- if ($this->checkEventPop($save, $pevent))
- {
- $this->_pf_quote_active = false;
- }
- }
-
- /**
- * handler for QUOTE.
- * this handler recognizes strings defined with double quotation marks (")
- * and single quotation marks and handles them correctly
- * in any place that they legally appear in php code
- */
-
- function handleQuote($word, $pevent)
- {
- if ($this->_pv_last_word == '"' || $this->_pv_last_word == "'" && $this->_last_pevent != PARSER_EVENT_QUOTE)
- {
- $save = $word;
- if (is_array($word)) $word = $word[1];
- $this->_pv_quote_data = $this->_pv_last_word . $word;
- $this->_pf_quote_active = true;
- $this->checkEventPop($save, $pevent);
- } elseif (!$this->_pf_quote_active)
- {
- $this->_pv_quote_data = $this->_pv_last_word[1];
- $this->_event_stack->popEvent();
- $this->_wp->backupPos();
- return;
- }
- $save = $word;
- if (is_array($word)) $word = $word[1];
- $this->_pv_quote_data .= $word;
- if ($this->checkEventPop($save, $pevent))
- {
- $this->_pf_quote_active = false;
- }
- }
-
- /**
- * handler for INCLUDE.
- * this handler recognizes include/require/include_once/include_once statements, and publishes the
- * data to Render
- */
-
- function handleInclude($word, $pevent)
- {
- if (!$this->_pf_in_include)
- {
- $this->_pv_linenum = $this->_wp->linenum;
- }
- $this->_pf_in_include = true;
- $a = $this->checkEventPush( $word, $pevent);
- if (!$this->_pf_includename_isset)
- {
- $this->_pf_includename_isset = true;
- $w = $this->_pv_last_word;
- if (is_array($w)) $w = $w[1];
- $this->_pv_include_name = $w;
- if ($a)
- $this->_pv_include_value = '';
- else
- {
- if (is_array($word)) $word = $word[1];
- $this->_pv_include_value = $word;
- }
- unset($this->_pv_quote_data);
- } else
- {
- if (!$a)
- {
- if (empty($this->_pv_include_params_data))
- {
- if ($word != ';')
- {
- if (is_array($word)) $word = $word[1];
- $this->_pv_include_value .= $word;
- }
- }
- } else
- {
- $this->_pv_include_params_data = '';
- }
- }
-
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_pv_include = new parserInclude;
- $this->_pv_include->setLineNumber($this->_pv_linenum + 1);
- $this->_pf_in_include = false;
- $this->_pv_include->setName($this->_pv_include_name);
- $this->_pv_include->setValue($this->_pv_include_value);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_INCLUDE,$this->_pv_include);
- $this->_pf_includename_isset = false;
- unset($this->_pv_include);
- unset($this->_pv_include_name);
- unset($this->_pv_include_value);
- unset($this->_pv_include_params_data);
- }
- }
-
- /**
- * handler for INCLUDE_PARAMS.
- * this handler parses the contents of ( ) in include/require/include_once/include_once statements
- */
-
- function handleIncludeParams($word, $pevent)
- {
- $e = $this->checkEventPush( $word, $pevent);
- if ($e == PARSER_EVENT_COMMENT) return;
-
- if(!isset($this->_pv_include_params_data)) $this->_pv_include_params_data = '';
-
- if ($this->checkEventPop($word,$pevent))
- {
- if (!empty($this->_pv_include_params_data))
- $this->_pv_include_value = $this->_pv_include_params_data;
- else
- {
- $w = $this->_pv_last_word;
- if (is_array($w)) $w = $w[1];
- $this->_pv_include_value = $w;
- }
- }
- if (is_array($word)) $word = $word[1];
- $this->_pv_include_params_data .= $word;
- }
-
- /**
- * handler for INCLUDE_PARAMS_PARENTHESIS.
- * this handler takes all parenthetical statements within file in:
- * include statement include(file), and handles them properly
- */
-
- function handleIncludeParamsParenthesis($word, $pevent)
- {
- $this->checkEventPush( $word, $pevent);
- $this->checkEventPop( $word, $pevent);
- if (is_array($word)) $word = $word[1];
- $this->_pv_include_params_data .= $word;
- }
-
- /**
- * handler for DEFINE.
- * handles define(constant, value); statements
- */
-
- function handleDefine($word, $pevent)
- {
- if (!$this->_pf_in_define)
- {
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_define = true;
- $this->checkEventPush( $word, $pevent);
-
- $this->_pf_definename_isset = false;
- $this->_pv_define_params_data = '';
- unset($this->_pv_quote_data);
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_pf_in_define = false;
- $this->_pv_define = new parserDefine;
- $this->_pv_define->setLineNumber($this->_pv_linenum);
- $this->_pv_define->setName($this->_pv_define_name);
- $this->_pv_define->setValue($this->_pv_define_value);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DEFINE,$this->_pv_define);
- $this->_pf_definename_isset = false;
- unset($this->_pv_define);
- unset($this->_pv_define_name);
- unset($this->_pv_define_value);
- $this->_pf_in_define = false;
- $this->_pv_define_params_data = '';
- }
- }
-
- /**
- * handler for DEFINE_PARAMS.
- * handles the parsing of constant and value in define(constant, value);
- */
-
- function handleDefineParams($word, $pevent)
- {
- $e = $this->checkEventPush( $word, $pevent);
- if ($e && $e != PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS) return;
-
- if(!isset($this->_pv_define_params_data)) $this->_pv_define_params_data = '';
-
- if ($this->checkEventPop($word,$pevent))
- {
- if ($this->_last_pevent == PARSER_EVENT_QUOTE ||
- $this->_last_pevent == PARSER_EVENT_EOFQUOTE)
- {
- $this->_pv_define_params_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (is_array($word)) $word = $word[1];
- if (!empty($this->_pv_define_params_data))
- {
- //echo $this->_pv_define_params_data."\n";
- $this->_pv_define_value = $this->_pv_define_params_data;
- }
- else
- {
- $w = $this->_pv_last_word;
- if (is_array($this->_pv_last_word)) $w = $this->_pv_last_word[1];
- if (!empty($w))
- {
- $this->_pv_define_value = $w;
- }
- else
- {
- $this->_pv_define_value = "";
- switch ($w) {
- case 0:
- $this->_pv_define_value = "0";
- break;
- case null:
- $this->_pv_define_value = "null";
- break;
- case "":
- $this->_pv_define_value = "";
- break;
- }
- }
- }
- }
- if ($this->_pf_definename_isset)
- {
- if (is_array($word)) $word = $word[1];
- $this->_pv_define_params_data .= $word;
- } else
- {
- if ($word != ",")
- {
- if (is_array($word)) $word = $word[1];
- $this->_pv_define_params_data .= $word;
- } else
- {
- if (substr($this->_pv_define_params_data,0,1) ==
- substr($this->_pv_define_params_data,strlen($this->_pv_define_params_data) - 1) &&
- in_array(substr($this->_pv_define_params_data,0,1),array('"',"'")))
- { // remove leading and ending quotation marks if there are only two
- $a = substr($this->_pv_define_params_data,0,1);
- $b = substr($this->_pv_define_params_data,1,strlen($this->_pv_define_params_data) - 2);
- if (strpos($b,$a) === false)
- {
- $this->_pv_define_params_data = $b;
- }
- }
- $this->_pf_definename_isset = true;
- $this->_pv_define_name = $this->_pv_define_params_data;
- $this->_pv_define_params_data = '';
- }
- }
- }
-
- /**
- * handler for DEFINE_PARAMS_PARENTHESIS.
- * this handler takes all parenthetical statements within constant or value in:
- * define(constant, value) of a define statement, and handles them properly
- */
-
- function handleDefineParamsParenthesis($word, $pevent)
- {
- $e = $this->checkEventPush( $word, $pevent);
- $this->checkEventPop( $word, $pevent);
- if ($this->_last_pevent == PARSER_EVENT_QUOTE)
- {
- $this->_pv_define_params_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (is_array($word)) $word = $word[1];
- $this->_pv_define_params_data .= $word;
- }
-
- /**
- * handler for IMPLEMENTS.
- * this handler parses a class statement's implements clause (PHP 5)
- */
-
- function handleImplements($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent))
- {
- $this->_wp->backupPos();
- return;
- }
- if (is_array($word) && $word[0] == T_STRING)
- {
- $this->_pv_class->addImplements($word[1]);
- }
- }
-
- /**
- * handler for ACCESS_MODIFIER.
- * this handler parses public/private/protected/static/abstract PHP 5 modifiers
- */
-
- function handleAccessModifier($word, $pevent)
- {
- if (!isset($this->_accessModifiers))
- {
- $this->_accessModifiers = array();
- }
- $this->_wp->backupPos();
- $this->_event_stack->popEvent();
- if ($word[0] == T_VARIABLE) {
- // this is a PHP5-style variable with no "var"
- $this->_event_stack->pushEvent(PARSER_EVENT_VAR);
- }
- $this->_accessModifiers[] = strtolower($this->_pv_last_word[1]);
- }
-
- /**
- * handler for CLASS.
- * this handler parses a class/interface statement
- */
-
- function handleClass($word, $pevent)
- {
- if (!$this->_pf_in_class)
- {
- $this->_pf_in_class = true;
- if ($this->_pv_last_word[0] == T_INTERFACE)
- {
- $this->_pf_interface = true;
- } else
- {
- $this->_pf_interface = false;
- }
- }
- $a = $this->checkEventPush( $word, $pevent);
-
- if (!isset($this->_pv_class)) $this->_pv_class = false;
- if (!is_subclass_of($this->_pv_class,"parserBase"))
- {
- $this->_pv_class = new parserClass;
- if (isset($this->_accessModifiers))
- {
- $this->_pv_class->setModifiers($this->_accessModifiers);
- unset($this->_accessModifiers);
- }
- if ($this->_pf_interface)
- {
- $this->_pv_class->setInterface();
- }
- $this->_pv_class->setLineNumber($this->_wp->linenum + 1);
- $this->_pv_class->setname($word[1]);
- $this->_pv_cur_class = $word[1];
- $this->_pv_class->setSourceLocation($this->source_location);
- }
-
- if (is_array($this->_pv_last_word) && $this->_pv_last_word[0] == T_EXTENDS)
- {
- // I don't know why I am so nice, this fixes 1150809
- if ($word[1] == $this->_pv_class->getName()) {
- addErrorDie(PDERROR_CANNOT_EXTEND_SELF, $word[1]);
- }
- $this->_pv_class->setExtends($word[1]);
- }
-
- if ($word == "{")
- {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_CLASS,$this->_pv_class);
- }
- //echo $this->wp->getPos() . ": |$word|\n";
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_pv_class->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pf_in_class = $this->_pf_interface = false;
- // throw an event when class is done
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,STATE_END_CLASS);
- $this->_pv_class = false;
- }
- }
-
- /**
- * handler for VAR_ARRAY_COMMENT
- * if parsing a default value, add the comment to the text
- */
- function handleVarArrayComment($word, $pevent)
- {
- $this->_pv_function_data .= $this->_pv_last_word[1];
- return $this->handleComment($word, $pevent);
- }
-
- /**
- * handler for VAR.
- * handle a var $varname = default_value; or var $varname; statement in a class definition
- */
-
- function handleVar($word, $pevent)
- {
- if (!$this->_pf_in_var)
- {
- $this->_pf_set_var_value = false;
- $this->_pv_var_value = '';
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_var = true;
- //echo $word."\n";
- $e = $this->checkEventPush( $word, $pevent);
-
- if (!isset($this->_pv_var)) $this->_pv_var = false;
- if ($word == '=' || $word == ';' || $word == ',')
- {
- $this->_wp->setWhitespace(true);
- $this->_pf_var_equals = true;
- $this->_pv_var = new parserVar($this->_pv_cur_class);
- $this->_pv_var->setName($this->_pv_varname);
- }
- if ($this->_last_pevent == PARSER_EVENT_VAR_ARRAY)
- {
- if (isset($this->_pv_function_data))
- $this->_pv_var->setValue($this->_pv_function_data);
- $this->_pf_set_var_value = true;
- unset($this->_pv_function_data);
- } elseif ($this->_pf_var_equals && $word != ';' && $word != '=' && $word != ',' && !$e)
- {
- if (is_array($word)) $word = $word[1];
- $this->_pv_var_value .= $word;
- }
- if ($word == ',')
- {
- if (!$this->_pf_set_var_value)
- $this->_pv_var->setValue($this->_pv_var_value);
- $this->_pf_set_var_value = false;
- unset($this->_pv_var_value);
- $this->_pv_var->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_var->setLineNumber($this->_pv_linenum);
- if (isset($this->_accessModifiers))
- {
- $this->_pv_var->setModifiers($this->_accessModifiers);
- unset($this->_accessModifiers);
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_VAR,$this->_pv_var);
- unset($this->_pv_var);
- $this->_pf_in_var = false;
- $this->_pf_var_equals = false;
- $this->_pv_varname = '';
- return;
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_wp->setWhitespace(false);
- if (!$this->_pf_set_var_value)
- $this->_pv_var->setValue($this->_pv_var_value);
- $this->_pf_set_var_value = false;
- unset($this->_pv_var_value);
- $this->_pv_var->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_var->setLineNumber($this->_pv_linenum);
- if (isset($this->_accessModifiers))
- {
- $this->_pv_var->setModifiers($this->_accessModifiers);
- unset($this->_accessModifiers);
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_VAR,$this->_pv_var);
- unset($this->_pv_var);
- $this->_pf_in_var = false;
- $this->_pf_var_equals = false;
- $this->_pv_varname = '';
- return;
- }
- if ($word[0] == T_VARIABLE)
- {
- $this->_pv_varname = $word[1];
- }
-
- }
-
- /**
- * handler for CLASS_CONSTANT.
- * handle a const constname = default_value; statement in a class definition
- */
-
- function handleClassConstant($word, $pevent)
- {
- if (!$this->_pf_in_const)
- {
- $this->_pf_set_const_value = false;
- $this->_pv_const_value = '';
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_const = true;
- //echo $word."\n";
- $e = $this->checkEventPush( $word, $pevent);
-
- if (!isset($this->_pv_const)) $this->_pv_const = false;
- if ($word == '=' || $word == ';' || $word == ',')
- {
- $this->_wp->setWhitespace(true);
- $this->_pf_const_equals = true;
- $this->_pv_const = new parserConst($this->_pv_cur_class);
- $this->_pv_const->setName($this->_pv_constname);
- }
- if ($this->_last_pevent == PARSER_EVENT_VAR_ARRAY)
- {
- if (isset($this->_pv_function_data))
- $this->_pv_const->setValue($this->_pv_function_data);
- $this->_pf_set_const_value = true;
- unset($this->_pv_function_data);
- } elseif ($this->_pf_const_equals && $word != ';' && $word != '=' && $word != ',' && !$e)
- {
- if (is_array($word)) $word = $word[1];
- $this->_pv_const_value .= $word;
- }
- if ($word == ',')
- {
- if (!$this->_pf_set_const_value)
- {
- $this->_pv_const->setValue($this->_pv_const_value);
- }
- $this->_pf_set_const_value = false;
- unset($this->_pv_const_value);
- $this->_pv_const->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_const->setLineNumber($this->_pv_linenum);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_CONST,$this->_pv_const);
- unset($this->_pv_const);
- $this->_pf_in_const = false;
- $this->_pf_const_equals = false;
- $this->_pv_constname = '';
- return;
- }
- if ($this->checkEventPop($word,$pevent))
- {
- $this->_wp->setWhitespace(false);
- if (!$this->_pf_set_const_value)
- $this->_pv_const->setValue($this->_pv_const_value);
- $this->_pf_set_const_value = false;
- unset($this->_pv_const_value);
- $this->_pv_const->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_const->setLineNumber($this->_pv_linenum);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_VAR,$this->_pv_const);
- unset($this->_pv_const);
- $this->_pf_in_const = false;
- $this->_pf_const_equals = false;
- $this->_pv_constname = '';
- return;
- }
- if ($word[0] == T_STRING && !$this->_pf_const_equals)
- {
- $this->_pv_constname = $word[1];
- }
-
- }
-
- /**
- * Handler for the {@tutorial phpDocumentor.howto.pkg#using.command-line.javadocdesc}
- * command-line switch DocBlocks.
- */
- function JavaDochandleDocblock($word, $pevent)
- {
- $this->commonDocBlock($word, $pevent, 'handleJavaDocDesc');
- }
-
- /**
- * Handler for normal DocBlocks
- */
- function handleDocBlock($word, $pevent)
- {
- $this->commonDocBlock($word, $pevent, 'handleDesc');
- }
-
- /**
- * Common DocBlock Handler for both JavaDoc-format and normal DocBlocks
- */
- function commonDocBlock($word, $pevent, $deschandler)
- {
- $this->_wp->backupPos();
- $this->_event_stack->popEvent();
- $word = $this->_pv_last_word[1];
- $dtype = '_pv_docblock';
- if (strpos($word,'/**') !== 0)
- { // not a docblock
-// $this->_wp->backupPos();
- $this->_event_stack->pushEvent(PARSER_EVENT_COMMENT);
- return;
- }
- if ($word == '/**#@-*/')
- { // stop using docblock template
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,PHPDOCUMENTOR_EVENT_END_DOCBLOCK_TEMPLATE);
- unset($this->_pv_dtemplate);
- return;
- }
- if (strpos($word,'/**#@+') === 0)
- { // docblock template definition
- $dtype = '_pv_dtemplate';
- // strip /**#@+ and */
- $word = substr($word,6).'*';
- $word = trim(substr($word,0,strlen($word) - 3));
- if (strlen($word) && $word{0} != '*') {
- $word = "* $word";
- }
- } else
- {
- // strip /** and */
- $word = substr($word,2);
- $word = substr($word,0,strlen($word) - 2);
- }
- $lines = explode("\n",trim($word));
- $go = count($lines);
- for($i=0;$i<$go;$i++)
- {
- if (substr(trim($lines[$i]),0,1) != '*') unset($lines[$i]);
- else
- $lines[$i] = substr(trim($lines[$i]),1); // remove leading "* "
- }
- // remove empty lines
- $lines = explode("\n",trim(join("\n",$lines)));
- for($i = 0;$i<count($lines);$i++)
- {
- if (substr(trim($lines[$i]),0,1) == '@' && substr(trim($lines[$i]),0,2) != '@ ')
- {
- $tagindex = $i;
- $i = count($lines);
- }
- }
- if (isset($tagindex))
- {
- $tags = array_slice($lines,$tagindex);
- $desc = array_slice($lines,0,$tagindex);
- } else
- {
- $tags = array();
- $desc = $lines;
- }
-// var_dump($desc,$tags);
- $this->$dtype = new parserDocBlock;
- $this->$dtype->setLineNumber($this->_wp->_docblock_linenum + 1);
- $this->$dtype->setEndLineNumber($this->_wp->linenum);
- $this->_pv_dtype = $dtype;
- $this->$deschandler($desc);
- $this->handleTags($tags);
- if ($dtype == '_pv_docblock')
- {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DOCBLOCK,$this->$dtype);
- $this->$dtype = new parserDocBlock();
- } else
- {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DOCBLOCK_TEMPLATE,$this->$dtype);
- }
- }
-
- /**
- * Handles JavaDoc descriptions
- */
- function handleJavaDocDesc($desc)
- {
- unset($this->_pv_periodline);
- $this->_pf_useperiod = false;
- foreach($desc as $i => $line)
- {
- $line = trim($line);
- if (!isset($this->_pv_periodline) && substr($line,strlen($line) - 1) == '.')
- {
- $this->_pv_periodline = $i;
- $this->_pf_useperiod = true;
- }
- }
- if (!isset($this->_pv_periodline)) $this->_pv_periodline = 0;
-
- $dtype = $this->_pv_dtype;
- if ($dtype == '_pv_docblock')
- {
- $save = $desc;
- // strip leading <p>
- if (strpos($desc[0],'<p>') === 0) $desc[0] = substr($desc[0],3);
- $sdesc = new parserDesc;
- $desci = '';
- for($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++)
- {
- if (strpos($desc[$i],'.') !== false)
- {
- $desci .= substr($desc[$i],0,strpos($desc[$i],'.') + 1);
- } else
- {
- $desci .= $desc[$i];
- }
- $desci .= "\n";
- }
- $sdesc->add($this->getInlineTags($desci));
- $desc = $save;
-
- $my_desc = new parserDesc;
- if (isset($this->_pv_dtemplate))
- {
- // copy template values if not overridden
- if (!$this->_pv_docblock->getExplicitPackage())
- {
- if ($p = $this->_pv_dtemplate->getKeyword('package'))
- {
- $this->_pv_docblock->addKeyword('package',$p);
- $this->_pv_docblock->setExplicitPackage();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('category'))
- {
- $this->_pv_docblock->addKeyword('category',$p);
- $this->_pv_docblock->setExplicitCategory();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('subpackage'))
- {
- $this->_pv_docblock->addKeyword('subpackage',$p);
- }
- }
- $tags = $this->_pv_dtemplate->listTags();
- foreach($tags as $tag)
- {
- $this->_pv_docblock->addTag($tag);
- }
- if (!count($this->_pv_docblock->params)) $this->_pv_docblock->params = $this->_pv_dtemplate->params;
- $my_desc->add($this->_pv_dtemplate->desc);
- }
-// echo "i = ".$this->_pv_periodline."; i < " . count($desc) . "\n";
- $desci = '';
- for($i = 0; $i < count($desc); $i++)
- {
- // the line will not be set if it doesn't start with a *
- if (isset($desc[$i]))
- {
- $desci .= $desc[$i]."\n";
- }
- }
- $my_desc->add($this->getInlineTags($desci));
- } else
- {
- $sdesc = new parserDesc;
- $save = $desc;
- // strip leading <p>
- if (strpos($desc[0],'<p>') === 0) $desc[0] = substr($desc[0],3);
- $desci = '';
- for($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++)
- {
- if (strpos($desc[$i],'.') !== false)
- {
- $desci .= substr($desc[$i],0,strpos($desc[$i],'.') + 1);
- } else
- {
- $desci .= $desc[$i];
- }
- $desci .= "\n";
- }
- $sdesc->add($this->getInlineTags($desci));
- $desc = $save;
-
- $my_desc = new parserDesc;
- $desci = '';
- for($i=0; $i < count($desc); $i++)
- {
- if (isset($desc[$i]))
- $desci .= $desci[$i]."\n";
- }
- $my_desc->add($this->getInlineTags($desci));
- }
-
- if ($this->_pf_internal)
- {
- addError(PDERROR_INTERNAL_NOT_CLOSED);
- $this->_pf_internal = false;
- }
- $this->$dtype->setShortDesc($sdesc);
- $this->$dtype->setDesc($my_desc);
- unset($my_desc);
-// var_dump($this->$dtype);
-// exit;
- }
-
- /**
- * Process the Long Description of a DocBlock
- * @param array array of lines containing the description with leading
- * asterisk "*" stripped off.
- */
- function handleDesc($desc)
- {
- unset($this->_pv_periodline);
- $this->_pf_useperiod = false;
- foreach($desc as $i => $line)
- {
- $line = trim($line);
- if (!isset($this->_pv_periodline) && substr($line,strlen($line) - 1) == '.')
- {
- $this->_pv_periodline = $i;
- $this->_pf_useperiod = true;
- }
- }
- if (!isset($this->_pv_periodline)) $this->_pv_periodline = 0;
- if ($this->_pv_periodline > 3)
- {
- $this->_pf_useperiod = false;
- } else
- {
- for($i = 0; $i < $this->_pv_periodline; $i++)
- {
- if (strlen($desc[$i]) == 0 && isset($desc[$i - 1]) && strlen($desc[$i - 1]))
- {
- $this->_pv_periodline = $i;
- }
- }
- }
- for($i=0;$i <= $this->_pv_periodline && $i < count($desc);$i++)
- {
- if (!strlen(trim($desc[$i]))) $this->_pf_useperiod = false;
- }
- // figure out the shortdesc
- if ($this->_pf_useperiod === false)
- {
- // use the first non blank line for short desc
- for($i = 0; $i < count($desc); $i++)
- {
- if (strlen($desc[$i]) > 0)
- {
- $this->_pv_periodline = $i;
- $i = count($desc);
- }
- }
-
- // check to see if we are going to use a blank line to end the shortdesc
- // this can only be in the first 4 lines
- if (count($desc) > 4)
- {
- $max = 4;
- } else {
- $max = count($desc);
- }
-
- for($i = $this->_pv_periodline; $i < $max; $i++)
- {
- if (strlen(trim($desc[$i])) == 0)
- {
- $this->_pv_periodline = $i;
- $i = $max;
- }
- }
- }
-
- $dtype = $this->_pv_dtype;
- if ($dtype == '_pv_docblock')
- {
- $sdesc = new parserDesc;
- $desci = '';
- for($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++)
- {
- $desci .= $desc[$i]."\n";
- }
- $sdesc->add($this->getInlineTags($desci));
- $this->_pv_periodline++;
-
- $my_desc = new parserDesc;
- if (isset($this->_pv_dtemplate))
- {
- // copy template values if not overridden
- if (!$this->_pv_docblock->getExplicitPackage())
- {
- if ($p = $this->_pv_dtemplate->getKeyword('package'))
- {
- $this->_pv_docblock->addKeyword('package',$p);
- $this->_pv_docblock->setExplicitPackage();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('category'))
- {
- $this->_pv_docblock->addKeyword('category',$p);
- $this->_pv_docblock->setExplicitCategory();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('subpackage'))
- {
- $this->_pv_docblock->addKeyword('subpackage',$p);
- }
- }
- $tags = $this->_pv_dtemplate->listTags();
- foreach($tags as $tag)
- {
- $this->_pv_docblock->addTag($tag);
- }
- if (!count($this->_pv_docblock->params)) $this->_pv_docblock->params = $this->_pv_dtemplate->params;
- $my_desc->add($this->_pv_dtemplate->sdesc);
- $my_desc->add($this->_pv_dtemplate->desc);
- }
-// echo "i = ".$this->_pv_periodline."; i < " . count($desc) . "\n";
- $desci = '';
- for($i = $this->_pv_periodline; $i < count($desc); $i++)
- {
- // the line will not be set if it doesn't start with a *
- if (isset($desc[$i]))
- $desci .= $desc[$i]."\n";
- }
- $my_desc->add($this->getInlineTags($desci));
- } else
- { // this is a docblock template
- $sdesc = new parserDesc;
- $desci = '';
- for($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++)
- {
- if (isset($desc[$i]))
- $desci .= $desc[$i]."\n";
- }
- $sdesc->add($this->getInlineTags($desci));
- $this->_pv_periodline++;
-
- $my_desc = new parserDesc;
- $desci = '';
- for($i=$this->_pv_periodline; $i < count($desc); $i++)
- {
- if (isset($desc[$i]))
- $desci .= $desc[$i]."\n";
- }
- $my_desc->add($this->getInlineTags($desci));
- }
- if ($this->_pf_internal)
- {
- addError(PDERROR_INTERNAL_NOT_CLOSED);
- $this->_pf_internal = false;
- }
- $this->$dtype->setShortDesc($sdesc);
- $this->$dtype->setDesc($my_desc);
- unset($my_desc);
-// var_dump($this->$dtype);
-// exit;
- }
-
- /**
- * Process the tags of a DocBlock
- * @param array array of lines that contain all @tags
- */
- function handleTags($tags)
- {
- $newtags = array();
- $curtag = '';
- for($i=0;$i < count($tags);$i++)
- {
- if (strpos(trim($tags[$i]),'@') === 0) $tags[$i] = ltrim($tags[$i]);
- if (substr($tags[$i],0,1) == '@' && substr($tags[$i],0,2) != '@ ')
- { // start a new tag
- if (!empty($curtag))
- {
- $newtags[] = $curtag;
- }
- $curtag = $tags[$i];
- } else $curtag .= "\n".$tags[$i];
- }
- if (!empty($curtag)) $newtags[] = $curtag;
- foreach($newtags as $tag)
- {
- $x = explode(' ',str_replace("\t",' ',$tag));
- $tagname = substr(array_shift($x),1);
- $restoftag = $x;
- if (isset($this->tagHandlers[$tagname]))
- $handle = $this->tagHandlers[$tagname];
- else
- $handle = $this->tagHandlers['*'];
- $this->$handle($tagname,$restoftag);
- }
- }
-
- /**
- * Process all inline tags in text, and convert them to their abstract
- * object representations.
- * @param string|array complete code to search for inline tags, if an
- * array, it's an array of strings
- * @return parserStringWithInlineTags
- */
- function getInlineTags($value)
- {
- if (is_array($value)) $value = join("\n",$value);
- global $_phpDocumentor_setting;
- $priv = (isset($_phpDocumentor_setting['parseprivate']) && $_phpDocumentor_setting['parseprivate'] == 'on');
- $a = new parserStringWithInlineTags();
- if (!$priv && $this->_pf_internal)
- {
- if ($x = strpos($value,'}}'))
- {
- $x = strrpos($value,'}}');
- $value = substr($value,$x + 1);
- $this->_pf_internal = false;
- } else $value = '';
- } elseif ($this->_pf_internal)
- {
- if ($x = strpos($value,'}}'))
- {
- $x = strrpos($value,'}}');
- $value = substr($value,0,$x) . substr($value,$x+2);
- }
- }
- $save = $value;
- $value = explode('{@',$value);
- $newval = array();
- $a->add($value[0]);
- for($i=1;$i<count($value);$i++)
- {
- if (!$priv && $this->_pf_internal)
- { // ignore anything between {@internal and }}
- if (strpos($value[$i],'}}') !== false)
- {
- $x = strrpos($value[$i],'}}');
- $value[$i] = substr($value[$i],$x + 1);
- $this->_pf_internal = false;
- if (!$value[$i]) continue;
- $a->add($value[$i]);
- continue;
- } else continue;
- }
- if (substr($value[$i],0,1) == '}')
- {
- $a->add('{@'.substr($value[$i],1));
- } elseif (substr($value[$i],0,2) == '*}')
- { // used for inserting */ in code examples
- $a->add('*/'.substr($value[$i],2));
- } else
- {
- $save = $value[$i];
- $value[$i] = preg_split("/[\t ]/", str_replace("\t", ' ', $value[$i]));
- $word = trim(array_shift($value[$i]));
- $val = join(' ',$value[$i]);
- if (trim($word) == 'internal')
- {
- $this->_pf_internal = true;
- $value[$i] = substr($save,strlen('internal') + 1);
- if (strpos($value[$i],'}}') !== false)
- {
- $x = strrpos($value[$i],'}}');
- // strip internal and cycle as if it were normal text.
- $startval = substr($value[$i],0,$x - 1);
- if ($priv) $a->add($startval);
- $value[$i] = substr($value[$i],$x + 1);
- if (!$value[$i]) $value[$i] = '';
- $this->_pf_internal = false;
- $a->add($value[$i]);
- continue;
- } elseif ($priv) $a->add($value[$i]);
- continue;
- }
- if (in_array(str_replace('}','',trim($word)),$this->allowableInlineTags))
- {
- if (strpos($word,'}'))
- {
- $res = substr($word,strpos($word, '}'));
- $word = str_replace('}','',trim($word));
- $val = $res.$val;
- }
- if ($word == 'source')
- {
- $this->_pf_get_source = true;
- }
- $val = explode('}',$val);
- if (count($val) == 1)
- {
- addError(PDERROR_UNTERMINATED_INLINE_TAG,$word,'',$save);
- }
- $rest = $val;
- $val = array_shift($rest);
- $rest = join('}',$rest);
- if (isset($this->inlineTagHandlers[$word]))
- $handle = $this->inlineTagHandlers[$word];
- else
- $handle = $this->inlineTagHandlers['*'];
- $val = $this->$handle($word,$val);
- $a->add($val);
- if ($this->_pf_internal)
- {
- if (strpos($rest,'}}') !== false)
- {
- $value[$i] = $rest;
- $x = strrpos($value[$i],'}}');
- $startval = substr($value[$i],0,$x - 1);
- if ($priv) $a->add($startval);
- $value[$i] = substr($value[$i],$x + 1);
- if (!$value[$i]) $value[$i] = '';
- $this->_pf_internal = false;
- $a->add($value[$i]);
- } else $a->add($rest);
- } else $a->add($rest);
- } else
- {
- $val = $word.' '.$val;
- $a->add('{@'.$val);
- }
- }
- }
- return $a;
- }
- /**#@-*/
- /**#@+
- * @param string name of the tag
- * @param string any parameters passed to the inline tag
- * @access private
- */
- /**
- * Most inline tags require no special processing
- *
- */
- function handleDefaultInlineTag($name, $value)
- {
- $tag = 'parser'.ucfirst($name).'InlineTag';
- return new $tag($value,$value);
- }
-
- /**
- * Handle the inline {@}link} tag
- * @tutorial tags.inlinelink.pkg
- */
- function handleLinkInlineTag($name, $value)
- {
- // support hyperlinks of any protocol
- if (is_numeric(strpos($value,'://')) || (strpos(trim($value),'mailto:') === 0))
- {
- $value = str_replace('\\,', '###commanana####', $value);
- if (strpos($value,','))
- {
- $val = new parserLinkInlineTag($value,$value);
- } elseif (strpos(trim($value),' '))
- { // if there is more than 1 parameter, the stuff after the space is the hyperlink text
- $i1 = strpos(trim($value),' ') + 1;
- $link = substr(trim($value),0,$i1 - 1);
- $text = substr(trim($value),$i1);
- $val = new parserLinkInlineTag($link,$text);
- } else
- {
- $val = new parserLinkInlineTag($value,$value);
- }
- } else
- {
- $value = str_replace('\\,', '###commanana####', $value);
- if (!strpos($value,','))
- {
- $testp = explode('#',$value);
- if (count($testp) - 1)
- $val = new parserLinkInlineTag($value,$testp[1]);
- else
- $val = new parserLinkInlineTag($value,$value);
- } else
- $val = new parserLinkInlineTag($value,$value);
- }
- return $val;
- }
-
- /**#@-*/
- /**#@+
- * @access private
- * @param string name of tag
- * @param array all words in the tag that were separated by a space ' '
- */
- /**
- * Most tags only need the value as a string
- * @uses getInlineTags() all tag handlers check their values for inline tags
- */
- function defaultTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addKeyword($name,$this->getInlineTags(join(' ',$value)));
- }
-
- /**
- * @tutorial tags.example.pkg
- * @uses parserDocBlock::addExample()
- */
- function exampleTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addExample($this->getInlineTags(join(' ',$value)), $this->_path);
- }
-
- /**
- * @tutorial tags.filesource.pkg
- * @uses phpDocumentorTWordParser::getFileSource() retrieves the source for
- * use in the @filesource tag
- */
- function filesourceTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addFileSource($this->_path, $this->_wp->getFileSource());
- }
-
- /**
- * @tutorial tags.uses.pkg
- */
- function usesTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $seel = '';
- while ($seel == '' && count($value))
- {
- $seel = array_shift($value);
- }
- $this->$dtype->addUses($this->getInlineTags($seel), $this->getInlineTags(join(' ',$value)));
- }
-
- /**
- * @tutorial tags.author.pkg
- */
- function authorTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $value = join(' ',$value);
- if ((strpos($value,'<') !== false) && (strpos($value,'>') !== false))
- {
- $email = substr($value,strpos($value,'<') + 1,strpos($value,'>') - strpos($value,'<') - 1);
- $value = str_replace('<'.$email.'>','<{@link mailto:'.$email.' ' .
- $email . '}>',$value);
- }
- $this->$dtype->addKeyword('author',$this->getInlineTags($value));
- }
-
- /**
- * @tutorial tags.package.pkg
- */
- function packageTagHandler($name, $value)
- {
- if (count($value) && empty($value[0]))
- {
- $found = false;
- for($i=0;$i<count($value) && !strlen($value[$i]);$i++);
- array_splice($value,0,$i);
- }
- $this->defaultTagHandler($name, $value);
- $dtype = $this->_pv_dtype;
- $this->$dtype->setExplicitPackage();
- }
-
- /**
- * @tutorial tags.category.pkg
- */
- function categoryTagHandler($name, $value)
- {
- if (count($value) && empty($value[0]))
- {
- $found = false;
- for($i=0;$i<count($value) && !strlen($value[$i]);$i++);
- array_splice($value,0,$i);
- }
- $this->defaultTagHandler($name, $value);
- $dtype = $this->_pv_dtype;
- $this->$dtype->setExplicitCategory();
- }
-
- /**
- * @tutorial tags.global.pkg
- */
- function globalTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) addErrorDie(PDERROR_MALFORMED_TAG, '@global');
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- if (!$var && empty($desc))
- {
- if ($type{0} == '$') addError(PDERROR_MALFORMED_GLOBAL_TAG);
- return $this->$dtype->addFuncGlobal($type,new parserStringWithInlineTags);
- }
- if ($var)
- { // global define
- $this->_pv_global_type = $type;
- if (!empty($desc)) $var .= ' '.$desc;
- $this->findGlobal(trim($var));
- } elseif (!empty($desc))
- { // function global
- if ($type{0} == '$') addError(PDERROR_MALFORMED_GLOBAL_TAG);
- $this->$dtype->addFuncGlobal($type,$this->getInlineTags($desc));
- } else
- {
- addError(PDERROR_MALFORMED_GLOBAL_TAG);
- }
- }
-
- /**
- * @tutorial tags.staticvar.pkg
- */
- function staticvarTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) addErrorDie(PDERROR_MALFORMED_TAG, '@staticvar');
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- if (!$var && empty($desc))
- {
- $this->$dtype->addStaticVar(null,$type,new parserStringWithInlineTags);
- } else
- {
- if ($var)
- {
- $this->$dtype->addStaticVar($var,$type,$this->getInlineTags($desc));
- } else
- {
- $this->$dtype->addStaticVar(null,$type,$this->getInlineTags($desc));
- }
- }
- }
-
- /**
- * @tutorial tags.param.pkg
- */
- function paramTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- //if (!$info) addErrorDie(PDERROR_MALFORMED_TAG, '@param');
- if (!$info) { addError(PDERROR_MALFORMED_TAG, '@param'); return; }
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- if (!$var && empty($desc))
- {
- $this->$dtype->addParam(null,$type,new parserStringWithInlineTags);
- } else
- {
- if ($var)
- {
- $this->$dtype->addParam($var,$type,$this->getInlineTags($desc));
- } else
- {
- $this->$dtype->addParam(null,$type,$this->getInlineTags($desc));
- }
- }
- }
-
- /**
- * @tutorial tags.return.pkg
- */
- function returnTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- //if (!$info) addErrorDie(PDERROR_MALFORMED_TAG, '@return');
- if (!$info) { addError(PDERROR_MALFORMED_TAG, '@return'); return; }
- $type = $info['type'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- $this->$dtype->addReturn($type,$this->getInlineTags($desc));
- }
-
- /**
- * @tutorial tags.var.pkg
- */
- function varTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) addErrorDie(PDERROR_MALFORMED_TAG, '@var');
- $type = $info['type'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- $this->$dtype->addVar($type,$this->getInlineTags($desc));
- }
- /**#@-*/
- /**#@+
- * @access private
- */
-
- /**
- * Retrieve the type portion of a @tag type description
- *
- * Tags like @param, @return and @var all have a PHP type portion in their
- * description. Since the type may contain the expression "object blah"
- * where blah is a classname, it makes parsing out the type field complex.
- *
- * Even more complicated is the case where a tag variable can contain
- * multiple types, such as object blah|object blah2|false, and so this
- * method handles these cases.
- * @param array array of words that were separated by spaces
- * @param boolean flag to determine whether to check for the end of a
- * type is defined by a $varname
- * @return array Format: array('type' => string, 'var' =>
- * false|string variable name, 'desc' => rest
- * of the tag)
- */
- function retrieveType($value, $checkforvar = false)
- {
- if (!count($value)) return false;
- $result = array();
- $types = '';
- // remove empty entries resulting from extra spaces between @tag and type
- $this->_removeWhiteSpace($value, 0);
- $index = 0;
- if (trim($value[0]) == 'object')
- {
- $types .= array_shift($value).' ';
- $this->_removeWhiteSpace($value, 0);
- if (!count($value))
- { // was just passed "object"
- $result = array('type' => rtrim($types),'desc' => '');
- if ($checkforvar) $result['var'] = false;
- return $result;
- }
- if ($value[0]{0} == '$' || substr($value[0],0,2) == '&$')
- { // was just passed "object" and the next thing is a variable name
- $result['var'] = $value[0];
- $result['type'] = 'object';
- array_shift($value);
- $result['desc'] = join(' ', $value);
- return $result;
- }
- }
- $done = false;
- do
- { // this loop checks for type|type|type and for
- // type|object classname|type|object classname2
- if (strpos($value[0], '|'))
- {
- $temptypes = explode('|', $value[0]);
- while(count($temptypes))
- {
- $type = array_shift($temptypes);
- $types .= $type;
- if (count($temptypes)) $types .= '|';
- }
- if (trim($type) == 'object')
- {
- $types .= ' ';
- $this->_removeWhiteSpace($value,0);
- } else $done = true;
- array_shift($value);
- if (isset ($value[0]) && strlen($value[0]) && ($value[0]{0} == '$' || substr($value[0],0,2) == '&$'))
- { // was just passed "object" and the next thing is a variable name
- $result['var'] = $value[0];
- $result['type'] = $types;
- array_shift($value);
- $result['desc'] = join(' ', $value);
- return $result;
- }
- } else
- {
- $types .= $value[0];
- array_shift($value);
- $done = true;
- }
- } while (!$done && count($value));
- $result['type'] = rtrim($types);
- $this->_removeWhiteSpace($value,0);
- if ($checkforvar)
- {
- if (!count($value))
- {
- $result['var'] = false;
- } else
- {
- if (substr($value[0],0,1) == '$' || substr($value[0],0,2) == '&$')
- {
- $result['var'] = $value[0];
- array_shift($value);
- } else $result['var'] = false;
- }
- }
- $result['desc'] = join(' ',$value);
- return $result;
- }
-
- /**
- * @param array array of string
- * @param integer index to seek non-whitespace to
- */
- function _removeWhiteSpace(&$value, $index)
- {
- if (count($value) > $index && empty($value[$index]))
- {
- $found = false;
- for($i=$index; $i<count($value) && !strlen($value[$i]); $i++);
- array_splice($value, $index, $i - $index);
- }
- }
-
- /**
- * Retrieve all the tokens that represent the definition of the global
- * variable.
- *
- * {@source}
- */
- function findGlobal($name)
- {
- $tokens = token_get_all('<?php '.$name);
- $tokens = array_slice($tokens,1);
- $this->_wp->findGlobal($tokens);
- $this->_pv_findglobal = $name;
- }
-
- /**
- * handler for DEFINE_GLOBAL
- */
- function handleGlobal($word, $pevent)
- {
- if (isset($this->_pv_findglobal))
- {
- $this->_pv_global_name = $this->_pv_findglobal;
- unset($this->_pv_findglobal);
- }
- if (!$this->_pf_in_global)
- {
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_global = true;
- if($this->checkEventPush($word, $pevent))
- {
- $this->_wp->setWhitespace(true);
- }
- if ($this->checkEventPop($word, $pevent))
- {
- $this->_pf_in_global = false;
- $a = new parserGlobal;
- $a->setDataType($this->_pv_global_type);
- $this->_pv_global_type = '';
- $a->setLineNumber($this->_pv_linenum);
- $a->setName($this->_pv_global_name);
- if (isset($this->_pv_global_val))
- $a->setValue(trim($this->_pv_global_val));
- $this->publishEvent(PHPDOCUMENTOR_EVENT_GLOBAL,$a);
- unset($this->_pv_global_val);
- unset($this->_pv_global_type);
- }
- }
-
- /**
- * handler for GLOBAL_VALUE
- */
- function handleGlobalValue($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent)) return;
- $this->_wp->setWhitespace(true);
- if (!isset($this->_pv_global_val)) $this->_pv_global_val = '';
- if ($this->_last_pevent == PARSER_EVENT_ARRAY)
- {
- $this->_pv_global_val .= $this->_pv_function_data;
- $this->_pv_function_data = '';
- }
- if ($this->_last_pevent == PARSER_EVENT_QUOTE ||
- $this->_last_pevent == PARSER_EVENT_EOFQUOTE)
- {
- $this->_pv_global_val .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if ($this->checkEventPop($word, $pevent))
- {
- $this->_wp->setWhitespace(false);
- $this->_wp->backupPos();
- return;
- }
- if (is_array($word)) $word = $word[1];
- $this->_pv_global_val .= $word;
- }
-
- /**#@-*/
- /**
- * this function checks whether parameter $word is a token for pushing a new event onto the Event Stack.
- * @return mixed returns false, or the event number
- */
-
- function checkEventPush($word,$pevent)
- {
- if (is_array($word) && $word[0] == T_STRING) $word = $word[1];
- if (is_array($word))
- {
- $pushEvent = &$this->tokenpushEvent;
- $word = $word[0];
- } else
- {
- $pushEvent = &$this->wordpushEvent;
- $word = strtolower($word);
- }
- $e = false;
- if (isset($pushEvent[$pevent]))
- {
- if (isset($pushEvent[$pevent][$word]))
- $e = $pushEvent[$pevent][$word];
- }
- if ($e)
- {
- $this->_event_stack->pushEvent($e);
- return $e;
- } else {
- return false;
- }
- }
-
- /**
- * this function checks whether parameter $word is a token for popping the current event off of the Event Stack.
- * @return mixed returns false, or the event number popped off of the stack
- */
-
- function checkEventPop($word,$pevent)
- {
- if (is_array($word) && $word[0] == T_STRING) $word = $word[1];
- if (is_array($word))
- {
- $popEvent = &$this->tokenpopEvent;
- $word = $word[0];
- } else
- {
- $popEvent = &$this->wordpopEvent;
- $word = strtolower($word);
- }
- if (!isset($popEvent[$pevent])) return false;
- if (in_array($word,$popEvent[$pevent]))
- {
- return $this->_event_stack->popEvent();
- } else {
- return false;
- }
- }
-
- function getToken($word)
- {
- if (is_array($word)) return $word[0];
- return false;
- }
-
- /**
- * setup the parser tokens, and the pushEvent/popEvent arrays
- * @see $tokens, $pushEvent, $popEvent
- */
-
- function setupStates()
- {
- unset($this->_wp);
- $this->_wp = new phpDocumentorTWordParser;
- $this->_pv_class = null;
- $this->_pv_cur_class = null;
- $this->_pv_define = null;
- $this->_pv_define_name = null;
- $this->_pv_define_value = null;
- $this->_pv_define_params_data = null;
- $this->_pv_dtype = null;
- $this->_pv_docblock = null;
- $this->_pv_dtemplate = null;
- $this->_pv_func = null;
- $this->_pv_findglobal = null;
- $this->_pv_global_name = null;
- $this->_pv_global_val = null;
- $this->_pv_globals = null;
- $this->_pv_global_count = null;
- $this->_pv_include_params_data = null;
- $this->_pv_include_name = null;
- $this->_pv_include_value = null;
- $this->_pv_linenum = null;
- $this->_pv_periodline = null;
- $this->_pv_paren_count = 0;
- $this->_pv_statics = null;
- $this->_pv_static_count = null;
- $this->_pv_static_val = null;
- $this->_pv_quote_data = null;
- $this->_pv_function_data = null;
- $this->_pv_var = null;
- $this->_pv_varname = null;
- $this->_pv_const = null;
- $this->_pv_constname = null;
- $this->_pv_function_param_type = null;
- $this->_pf_definename_isset = false;
- $this->_pf_includename_isset = false;
- $this->_pf_get_source = false;
- $this->_pf_getting_source = false;
- $this->_pf_in_class = false;
- $this->_pf_in_define = false;
- $this->_pf_in_global = false;
- $this->_pf_in_include = false;
- $this->_pf_in_var = false;
- $this->_pf_in_const = false;
- $this->_pf_funcparam_val = false;
- $this->_pf_quote_active = false;
- $this->_pf_reset_quote_data = true;
- $this->_pf_useperiod = false;
- $this->_pf_var_equals = false;
- $this->_pf_const_equals = false;
- $this->_event_stack = new EventStack;
- }
-
- /**
- * Creates the state arrays
- */
- function setupEventStates()
- {
- if (!defined('T_DOC_COMMENT'))
- {
- define('T_DOC_COMMENT', T_DOC_COMMENT);
- }
-/**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_LOGICBLOCK] =
- array(
- "{" => PARSER_EVENT_LOGICBLOCK,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->tokenpushEvent[PARSER_EVENT_LOGICBLOCK] =
- array(
- T_GLOBAL => PARSER_EVENT_FUNC_GLOBAL,
- T_STATIC => PARSER_EVENT_STATIC_VAR,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- T_CURLY_OPEN => PARSER_EVENT_LOGICBLOCK,
- T_DOLLAR_OPEN_CURLY_BRACES => PARSER_EVENT_LOGICBLOCK,
- );
-
- $this->wordpopEvent[PARSER_EVENT_LOGICBLOCK] = array("}");
- $this->tokenpopEvent[PARSER_EVENT_LOGICBLOCK] = array(T_CURLY_OPEN);
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_NOEVENTS] =
- array(
- T_OPEN_TAG => PARSER_EVENT_PHPCODE,
- );
-
-/**************************************************************/
-
- $this->tokenpopEvent[PARSER_EVENT_EOFQUOTE] = array(T_END_HEREDOC);
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_PHPCODE] =
- array(
- T_FUNCTION => PARSER_EVENT_FUNCTION,
- T_ABSTRACT => PARSER_EVENT_ACCESS_MODIFIER,
- T_CLASS => PARSER_EVENT_CLASS,
- T_INTERFACE => PARSER_EVENT_CLASS,
- T_INCLUDE_ONCE => PARSER_EVENT_INCLUDE,
- T_INCLUDE => PARSER_EVENT_INCLUDE,
- T_REQUIRE => PARSER_EVENT_INCLUDE,
- T_REQUIRE_ONCE => PARSER_EVENT_INCLUDE,
- T_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
-// "/**#@+" => PARSER_EVENT_DOCBLOCK_TEMPLATE,
-// "/**#@-*/" => PARSER_EVENT_END_DOCBLOCK_TEMPLATE,
- T_CLOSE_TAG => PARSER_EVENT_OUTPHP,
- );
- $this->wordpushEvent[PARSER_EVENT_PHPCODE] =
- array(
- "define" => PARSER_EVENT_DEFINE,
- );
-/**************************************************************/
-
- $this->tokenpopEvent[PARSER_EVENT_OUTPHP] = array(T_OPEN_TAG);
-/**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_FUNCTION] =
- array(
- '{' => PARSER_EVENT_LOGICBLOCK,
- '(' => PARSER_EVENT_FUNCTION_PARAMS,
- );
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
-
- $this->wordpopEvent[PARSER_EVENT_FUNCTION] = array("}",';');
-/**************************************************************/
-
- $this->wordpopEvent[PARSER_EVENT_QUOTE] = array('"');
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION_PARAMS] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_ARRAY => PARSER_EVENT_ARRAY,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_FUNCTION_PARAMS] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_FUNCTION_PARAMS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_ARRAY] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpopEvent[PARSER_EVENT_ARRAY] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_VAR_ARRAY] =
- array(
- T_COMMENT => PARSER_EVENT_VAR_ARRAY_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_VAR_ARRAY_COMMENT,
- );
- $this->wordpopEvent[PARSER_EVENT_VAR_ARRAY] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNC_GLOBAL] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
-
- $this->wordpopEvent[PARSER_EVENT_FUNC_GLOBAL] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_STATIC_VAR] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_STATIC_VAR] =
- array(
- "=" => PARSER_EVENT_STATIC_VAR_VALUE,
- );
- $this->wordpopEvent[PARSER_EVENT_STATIC_VAR] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_STATIC_VAR_VALUE] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_ARRAY => PARSER_EVENT_ARRAY,
- );
- $this->wordpushEvent[PARSER_EVENT_STATIC_VAR_VALUE] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_STATIC_VAR_VALUE] = array(";",",");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_PARAMS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_PARAMS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_PARAMS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE_PARAMS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE_PARAMS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE_PARAMS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] = array(")");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_VAR] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_ARRAY => PARSER_EVENT_VAR_ARRAY,
- );
- $this->wordpopEvent[PARSER_EVENT_VAR] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_CLASS_CONSTANT] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_ARRAY => PARSER_EVENT_VAR_ARRAY,
- );
- $this->wordpopEvent[PARSER_EVENT_CLASS_CONSTANT] = array(";");
-/**************************************************************/
-
- $this->wordpopEvent[PARSER_EVENT_IMPLEMENTS] = array('{');
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_CLASS] =
- array(
- T_ABSTRACT => PARSER_EVENT_ACCESS_MODIFIER,
- T_PUBLIC => PARSER_EVENT_ACCESS_MODIFIER,
- T_PRIVATE => PARSER_EVENT_ACCESS_MODIFIER,
- T_PROTECTED => PARSER_EVENT_ACCESS_MODIFIER,
- T_STATIC => PARSER_EVENT_ACCESS_MODIFIER,
- T_IMPLEMENTS => PARSER_EVENT_IMPLEMENTS,
- T_CONST => PARSER_EVENT_CLASS_CONSTANT,
- T_FUNCTION => PARSER_EVENT_FUNCTION,
- T_VAR => PARSER_EVENT_VAR,
- T_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_CLOSE_TAG => PARSER_EVENT_OUTPHP,
- );
- $this->wordpopEvent[PARSER_EVENT_CLASS] = array("}");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_GLOBAL] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_GLOBAL] =
- array(
- "=" => PARSER_EVENT_GLOBAL_VALUE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_GLOBAL] = array(";");
-/**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_GLOBAL_VALUE] =
- array(
- T_ARRAY => PARSER_EVENT_ARRAY,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- );
- $this->wordpushEvent[PARSER_EVENT_GLOBAL_VALUE] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_GLOBAL_VALUE] = array(";");
- }
-
- function configWordParser(&$data)
- {
- $this->_wp->setup($data);
- $this->_wp->setWhitespace(false);
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTWordParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTWordParser.inc
deleted file mode 100644
index 36538408..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTWordParser.inc
+++ /dev/null
@@ -1,311 +0,0 @@
-<?php
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-/**
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @package phpDocumentor
- * @subpackage WordParsers
- * @since 1.2
- */
-/**
- * Like WordParser, but expects an array of tokens from the tokenizer instead
- * of a string.
- * @author Greg Beaver <cellog@users.sourceforge.net>
- * @package phpDocumentor
- * @subpackage WordParsers
- * @since 1.2
- */
-class phpDocumentorTWordParser extends WordParser
-{
- /**#@+
- * @access private
- */
- /**
- * tokenized array from {@link token_get_all()}
- * @var array
- */
- var $_all;
- /**
- * List of tokens that can contain a newline
- * @var array
- */
- var $_nl_check = array(
- T_WHITESPACE,
- T_ENCAPSED_AND_WHITESPACE,
- T_COMMENT,
- T_DOC_COMMENT,
- T_OPEN_TAG,
- T_CLOSE_TAG,
- T_INLINE_HTML);
- /**
- * @var array
- */
- var $_global_search;
- /**
- * current source line number (relative)
- * @var integer
- */
- var $_sourceline;
- /**
- * Source of the entire file, parsed into arrays of tokens on each line
- * @var array
- */
- var $_file_source = array();
- /**
- * Line number the last comment was on
- * @var integer
- */
- var $_docblock_linenum;
- /**#@-*/
-
- /**
- * Uses {@link token_get_all()} to tokenize the source code.
- * {@internal
- * Also, it divides the source tokens into separate lines for use by
- * the @filesource tag.
- *
- * {@source}}}
- * @var string source code
- */
- function setup(&$input)
- {
- $input = rtrim(ltrim($input, "\r\n"));
- $this->data = &$input;
- // fix php warnings on invalid source code
- $this->_all = @token_get_all($input);
- $this->_file_source = array();
- $this->addFileSource($this->_all);
- $this->_sourceline = 0;
- $this->pos = 0;
- $this->linenum = 0;
- }
-
- /**
- * @return array
- */
- function getSource()
- {
- $source = $this->source;
- $this->source = array();
- $this->getsource = false;
- return $source;
- }
-
- /**
- * @return array source code tokens split up by line number
- */
- function getFileSource()
- {
- return $this->_file_source;
- }
-
- /**
- * Begin retrieving source code
- * @access private
- * @param string word to add the beginning of source code
- */
- function retrievesource($word = '')
- {
- $this->source = array(array($word));
- $this->_sourceline = 0;
- $this->getsource = true;
- }
-
- /**
- * Utility function to determine whether two tokens from the tokenizer are equal
- * @static
- */
- function tokenEquals($a, $b)
- {
- if (is_array($a)) $a = $a[1];
- if (is_array($b)) $b = $b[1];
- return $a == $b;
- }
-
- /**
- * Utility function to convert a series of tokens into a string
- * @static
- */
- function concatTokens($a)
- {
- $b = '';
- foreach($a as $c)
- {
- if (is_array($c)) $c = $c[1];
- $b .= $c;
- }
- return $b;
- }
-
- /**
- * Retrieve a token for the phpDocumentorTParser
- * {@internal
- * This method adds source code to the array for a function to be returned
- * to a {@}source} tag, and will return the token unless it is T_WHITESPACE
- * and {@link $returnWhiteSpace} is false.
- *
- * The global variable search is more complicated than it is in the
- * WordParser, as we have to compare an array of tokens to each other, and
- * that is what this code does}}
- * @return string|array token from tokenizer
- */
- function getWord()
- {
- if (!isset($this->_all[$this->pos])) return false;
- $oldlinenum = $this->linenum;
- $word = $this->_all[$this->pos++];
- // if we're looking for a global variable declaration, then this section
- // will search the upcoming tokens to see if they match the tokens
- // that define the global variable
- if (isset($this->_global_search))
- {
- $pos = $this->pos;
- $gpos = 0;
- $found = false;
- if ($this->tokenEquals($word,$this->_global_search[$gpos++]))
- {
- $found = true;
- for(;$gpos<count($this->_global_search);$gpos++,$pos++)
- {
- if (!$this->tokenEquals($this->_global_search[$gpos],$this->_all[$pos])) $found = false;
- }
- }
- if ($found)
- {
- $a = $this->concatTokens($this->_global_search);
- $this->pos += count($this->_global_search) - 1;
- unset($this->_global_search);
- return $a;
- }
- }
- if ($this->getsource)
- {
- $this->addSource($word);
- }
- if (is_array($word))
- {
- if (in_array($word[0],$this->_nl_check))
- {
- $this->linenum += substr_count($word[1],"\n");
- }
- if ($word[0] == T_WHITESPACE && !$this->returnWhiteSpace) return $this->getWord();
- // seeing if we can get line numbers out of the beast
- }
- if (is_array($word) && $word[0] == T_COMMENT) $this->_docblock_linenum = $oldlinenum;
- return $word;
- }
-
- /**
- * Wrapper for {@link addSource()} used to retrieve the entire source code
- * organized by line number in setup()
- * @param array full file source code
- */
- function addFileSource($word)
- {
- $this->_sourceline = 0;
- foreach($word as $token)
- {
- $this->addSource($token, true);
- }
-// var_dump($this->_file_source);
- }
-
- /**
- * Generate source token arrays organized by line number
- *
- * This code will split up tokens that contain "\n" and add them to the
- * source code as separate tokens on different lines.
- * @param array|string token to add
- * @param boolean true if this should be added to {@link $_file_source}
- * @param array|string next token, for lookahead splitting
- * @uses _set_sars()
- */
- function addSource($word, $file = false)
- {
- if (is_array($word))
- {
- $lines = str_replace("\r", '', explode("\n",$word[1]));
- foreach($lines as $i => $line)
- {
- $this->_set_sars($file, array($word[0],$line));
- if ($i < count($lines) - 1)
- {
- // increment sourceline
- $this->_sourceline++;
- }
- }
- } else $this->_set_sars($file, $word);
- }
-
- /**
- * Add tokens to source code
- *
- * {@source}
- * @access private
- * @param boolean true if this is file source, otherwise it is function source
- * @param string|array token to add
- */
- function _set_sars($type,$word)
- {
- if ($type)
- {
- $this->_file_source[$this->_sourceline][] = $word;
- } else
- {
- $this->source[$this->_sourceline][] = $word;
- }
- }
-
- /**
- * Tell the phpDocumentorTWordParser to return the entire global variable
- * if it is found.
- * @uses $_global_search
- * @param array tokens that represent the global variable definition
- */
- function findGlobal($tokens)
- {
- if (!$tokens)
- {
- unset($this->_global_search);
- } else
- $this->_global_search = $tokens;
- }
-
- function backupPos()
- {
- $this->pos--;
- $word = $this->_all[$this->pos];
- if ($this->getsource)
- {
- unset($this->source[$this->_sourceline][count($this->source[$this->_sourceline]) - 1]);
- if (empty($this->source[$this->_sourceline])) unset($this->source[$this->_sourceline]);
- else $this->source[$this->_sourceline] = array_values($this->source[$this->_sourceline]);
- }
- if (is_array($word))
- {
- if ($word[0] == T_WHITESPACE && !$this->returnWhiteSpace) return $this->getWord();
- // seeing if we can get line numbers out of the beast
- if (in_array($word[0],$this->_nl_check))
- {
- $this->linenum -= substr_count($word[1],"\n");
- }
- }
- }
-}
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc b/buildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc
deleted file mode 100644
index 4eef3870..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * @package phpDocumentor
- */
-//
-// +------------------------------------------------------------------------+
-// | phpDocumentor |
-// +------------------------------------------------------------------------+
-// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
-// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
-// | Web http://www.phpdoc.org |
-// | Mirror http://phpdocu.sourceforge.net/ |
-// | PEAR http://pear.php.net/package-info.php?pacid=137 |
-// +------------------------------------------------------------------------+
-// | This source file is subject to version 3.00 of the PHP License, |
-// | that is available at http://www.php.net/license/3_0.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 |
-// | license@php.net so we can mail you a copy immediately. |
-// +------------------------------------------------------------------------+
-//
-
-
-// set up include path so we can find all files, no matter what
-$a = explode('/',str_replace('\\','/',dirname(realpath(__FILE__))));
-array_pop($a);
-$GLOBALS['_phpDocumentor_install_dir'] = join('/',$a);
-// add my directory to the include path, and make it first, should fix any errors
-if (substr(PHP_OS, 0, 3) == 'WIN')
-ini_set('include_path',$GLOBALS['_phpDocumentor_install_dir'].';'.ini_get('include_path'));
-else
-ini_set('include_path',$GLOBALS['_phpDocumentor_install_dir'].':'.ini_get('include_path'));
-
-/**
- * All command-line handling from previous version has moved to here
- *
- * Many settings also moved to phpDocumentor.ini
- */
-include("phpDocumentor/Setup.inc.php");
-
-$phpdoc = new phpDocumentor_setup;
-$phpdoc->readCommandLineSettings();
-$phpdoc->setupConverters();
-$phpdoc->createDocs();
-?>